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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
php htmlentities和htmlspecialchars 的区别
Aug 18 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
PHP 验证登陆类分享
Mar 13 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP之数组学习
2011/05/29 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
Python 中的 else详解
2016/04/23 Python
利用Python实现图书超期提醒
2016/08/02 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
python命令行工具Click快速掌握
2019/07/04 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
python相对企业语言优势在哪
2020/06/12 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
消防工作实施方案
2014/06/09 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
中秋节随笔
2015/08/15 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android