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 相关文章推荐
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php实现encode64编码类实例
2015/03/24 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
深入了解query和params的使用区别
2019/06/24 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Django实现发送邮件功能
2019/07/18 Python
django做form表单的数据验证过程详解
2019/07/26 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
华三通信H3C面试题
2015/05/15 面试题
旅游项目开发策划书
2014/01/18 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
党员承诺书范文
2014/05/19 职场文书
护理专业求职信
2014/06/15 职场文书
详解Laravel制作API接口
2021/05/31 PHP