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调用mysql存储过程
Feb 14 PHP
php根据年月获取季度的方法
Mar 31 PHP
php生成唯一的订单函数分享
Feb 02 PHP
PHP整合PayPal支付
Jun 11 PHP
php实现对象克隆的方法
Jun 20 PHP
Yii框架上传图片用法总结
Mar 28 PHP
php格式化json函数示例代码
May 12 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
PHP调用其他文件中的类
Apr 02 PHP
PHP常见数组排序方法小结
Aug 20 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 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生成二维码的两种方法(带logo图像)
2014/03/14 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
Pycharm安装python库的方法
2020/11/24 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
在Python中实现字典反转案例
2020/12/05 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
几道PHP面试题
2013/04/14 面试题
物业公司采购员岗位职责
2013/12/31 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
庆八一活动方案
2014/01/25 职场文书
秘书英文求职信
2014/04/16 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python