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 表单数据的获取代码
Mar 10 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
php ajax数据传输和响应方法
Aug 21 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
php5.x禁用eval的操作方法
Oct 19 PHP
php异常处理捕获错误整理
Sep 23 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 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中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
python 动态加载的实现方法
2017/12/22 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
python如何停止递归
2020/09/09 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
单位单身证明范本
2014/01/11 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
趣味运动会标语口号
2015/12/26 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android