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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP学习之数组的定义和填充
Apr 17 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
PHP7匿名类用法分析
Sep 26 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 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
与数据库连接
2006/10/09 PHP
APMServ使用说明
2006/10/23 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
js 判断 enter 事件
2009/02/12 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
js简单时间比较的方法
2016/08/02 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
Python之文字转图片方法
2018/05/10 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
硕士生工作推荐信
2014/03/07 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
大学生党员个人总结
2015/02/13 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书