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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
php发送http请求的常用方法分析
Nov 08 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 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代码在网页上生成图片
2015/07/01 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
推荐20家国外的脚本下载网站
2011/04/28 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
实例讲解Python中的私有属性
2014/08/21 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
python多线程下信号处理程序示例
2019/05/31 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
医药代表个人求职信范本
2013/12/19 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
公证书样本
2014/04/10 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Python闭包的定义和使用方法
2022/04/11 Python
pandas中pd.groupby()的用法详解
2022/06/16 Python