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 相关文章推荐
BBS(php &amp; mysql)完整版(八)
Oct 09 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
MySQL授权问题总结
May 06 PHP
PHP 远程关机实现代码
Nov 10 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
PHP之uniqid()函数用法
Nov 03 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP在线打包下载功能示例
Oct 15 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
Laravel监听数据库访问,打印SQL的例子
Oct 24 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
php smarty的预保留变量总结
2008/12/04 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
php中require和require_once的区别说明
2014/02/27 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
学习ExtJS form布局
2009/10/08 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
python比较两个列表大小的方法
2015/07/11 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
Python实现异步IO的示例
2020/11/05 Python
python3实现飞机大战
2020/11/29 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
汽车机修工岗位职责
2014/03/06 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
合同范本之电脑出租
2019/08/13 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript