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 mysql数据库操作分页类
Jun 04 PHP
php中计算时间差的几种方法
Dec 31 PHP
php日历制作代码分享
Jan 20 PHP
PHP中的use关键字概述
Jul 23 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
自制PHP框架之路由与控制器
May 07 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 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/06/18 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
JavaScript DOM基础
2015/04/13 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解创建自定义的Angular Schematics
2018/06/06 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
用Python3创建httpServer的简单方法
2018/06/04 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
英国探险旅游专家:Explore
2018/12/20 全球购物
继电保护工岗位职责
2014/01/05 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
安全标语口号
2014/06/09 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书