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中的超全局变量
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
php网页病毒清除类
Dec 08 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
php + nginx项目中的权限详解
May 23 PHP
PHP异步进程助手async-helper
Feb 05 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
Laravel框架使用Seeder实现自动填充数据功能
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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
javascript Keycode对照表
2009/10/24 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
学习python分支结构
2019/05/17 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
如何使用python写截屏小工具
2020/09/29 Python
python 多线程中join()的作用
2020/10/29 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
教师自我评价范例
2013/09/24 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
学年自我鉴定
2014/01/16 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
校车司机安全责任书
2015/05/11 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL