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 数字左侧自动补0
Mar 31 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
php处理多图上传压缩代码功能
Jun 13 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获取mysql版本的几种方法小结
2008/03/25 PHP
PHP游戏编程25个脚本代码
2011/02/08 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
js中数组Array的一些常用方法总结
2013/08/12 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
python中__call__方法示例分析
2014/10/11 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
python简单实现插入排序实例代码
2020/12/16 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
思想汇报格式
2014/01/05 职场文书
运动会广播稿400字
2014/01/25 职场文书
高中生期末评语
2014/01/28 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
工作自我评价范文
2015/03/05 职场文书
情况说明书格式及范文
2019/06/24 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript