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也可以?成Shell Script
Oct 09 PHP
PHP 身份验证方面的函数
Oct 11 PHP
关于php fread()使用技巧
Jan 22 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
php实现简易聊天室应用代码
Sep 23 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
php 的反射详解及示例代码
Aug 25 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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中常用数组处理方法实例分析
2008/08/30 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
js数组操作常用方法
2014/05/08 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Vue实现购物车功能
2017/04/27 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
一文总结学习Python的14张思维导图
2017/10/17 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
浅谈Django的缓存机制
2018/08/23 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
介绍一下木马病毒的种类
2015/07/26 面试题
大学生2014全国两会学习心得体会
2014/03/10 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
教师调动申请报告
2015/05/18 职场文书
电视新闻稿
2015/07/17 职场文书
Java Spring读取和存储详细操作
2022/08/05 Java/Android