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语法(3)
Oct 09 PHP
模仿OSO的论坛(一)
Oct 09 PHP
php at(@)符号的用法简介
Jul 11 PHP
基于php split()函数的用法详解
Jun 05 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php中apc缓存使用示例
Dec 25 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
php单文件版在线代码编辑器
Mar 12 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
php强制下载文件函数
2016/08/24 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
使用Python发现隐藏的wifi
2020/03/04 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
给交警的表扬信
2014/01/12 职场文书
大班亲子运动会方案
2014/06/10 职场文书
励志演讲稿300字
2014/08/21 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2014年司法所工作总结
2014/11/22 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript