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&amp;MYSQL分页原理及实现
Jan 02 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
php parse_str() 函数的定义和用法
May 23 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Django中Forms的使用代码解析
2018/02/10 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python实现整数的二进制循环移位
2019/03/08 Python
详解Django配置优化方法
2019/11/18 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python定义类self用法实例解析
2020/01/22 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
工程造价自荐信
2013/10/09 职场文书
核心价值观演讲稿
2014/05/13 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
员工安全责任协议书
2016/03/22 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android