php实现发送微信模板消息的方法


Posted in PHP onMarch 07, 2015

本文实例讲述了php实现发送微信模板消息的方法。分享给大家供大家参考。具体如下:

该方法基于thinkphp实现实现,具体OrderPush.class.php文件如下:

<?php

namespace Org\Weixin;

/**

 * Created by PhpStorm.

 * User: StandOpen

 * Date: 15-1-7

 * Time: 9:41

 */

class OrderPush

{

    protected $appid;

    protected $secrect;

    protected $accessToken;

    function  __construct($appid, $secrect)

    {

        $this->appid = $appid;

        $this->secrect = $secrect;

        $this->accessToken = $this->getToken($appid, $secrect);

    }

    /**

     * 发送post请求

     * @param string $url

     * @param string $param

     * @return bool|mixed

     */

    function request_post($url = '', $param = '')

    {

        if (empty($url) || empty($param)) {

            return false;

        }

        $postUrl = $url;

        $curlPost = $param;

        $ch = curl_init(); //初始化curl

        curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定网页

        curl_setopt($ch, CURLOPT_HEADER, 0); //设置header

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上

        curl_setopt($ch, CURLOPT_POST, 1); //post提交方式

        curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

        $data = curl_exec($ch); //运行curl

        curl_close($ch);

        return $data;

    }

    /**

     * 发送get请求

     * @param string $url

     * @return bool|mixed

     */

    function request_get($url = '')

    {

        if (empty($url)) {

            return false;

        }

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        $data = curl_exec($ch);

        curl_close($ch);

        return $data;

    }

    /**

     * @param $appid

     * @param $appsecret

     * @return mixed

     * 获取token

     */

    protected function getToken($appid, $appsecret)

    {

        if (S($appid)) {

            $access_token = S($appid);

        } else {

            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;

            $token = $this->request_get($url);

            $token = json_decode(stripslashes($token));

            $arr = json_decode(json_encode($token), true);

            $access_token = $arr['access_token'];

            S($appid, $access_token, 720);

        }

        return $access_token;

    }

    /**

     * 发送自定义的模板消息

     * @param $touser

     * @param $template_id

     * @param $url

     * @param $data

     * @param string $topcolor

     * @return bool

     */

    public function doSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE')

    {

        /*

         * data=>array(

                'first'=>array('value'=>urlencode("您好,您已购买成功"),'color'=>"#743A3A"),

                'name'=>array('value'=>urlencode("商品信息:微时代电影票"),'color'=>'#EEEEEE'),

                'remark'=>array('value'=>urlencode('永久有效!密码为:1231313'),'color'=>'#FFFFFF'),

            )

         */

        $template = array(

            'touser' => $touser,

            'template_id' => $template_id,

            'url' => $url,

            'topcolor' => $topcolor,

            'data' => $data

        );

        $json_template = json_encode($template);

        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $this->accessToken;

        $dataRes = $this->request_post($url, urldecode($json_template));

        if ($dataRes['errcode'] == 0) {

            return true;

        } else {

            return false;

        }

    }

}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP利用COM对象访问SQLServer、Access
Oct 09 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 #PHP
PHP多文件上传类实例
Mar 07 #PHP
PHP实现阳历到农历转换的类实例
Mar 07 #PHP
Laravel 5 学习笔记
Mar 06 #PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 #PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 #PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 #PHP
You might like
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
一个取得文件扩展名的函数
2006/10/09 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
详解ES6中的let命令
2020/04/05 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
解读python如何实现决策树算法
2018/10/11 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
生产主管岗位职责
2013/11/10 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
父亲节活动策划方案
2014/08/24 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
春节晚会开场白
2015/05/29 职场文书
新党员入党决心书
2015/09/22 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL