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 相关文章推荐
基于文本的访客签到簿
Oct 09 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
php错误级别的设置方法
Jun 17 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
May 04 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
PHP在线书签系统分享
Jan 04 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 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写的serv-u的web申请账号的程序
2006/10/09 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
社区端午节活动方案
2014/01/28 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
交通安全横幅标语
2014/10/07 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python