整合ThinkPHP功能系列之微信公众号模板消息发送

模板消息还是在商城类的微信项目中使用比较多,模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如绑定手机号通知,商品购买成功通知等,不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息

所有服务号都可以在功能、添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限

这里不说申请。。。对于模板ID的获取请自行去获取,这里只说在ThinkPHP框架下对微信模板消息发送进行封装

代码封装好的我上传到了Github上,自己去查看一下,地址:thinkphp-syz,这里说一下主要的

/**
 * 获取微信access token
 * @return mixed
 */
public function getAccessToken()
{
    $accessToken = S('ACCESS_TOKEN');
    if(is_null($accessToken)) {
        self::$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->_appid}&secret={$this->_key}";
        $tokenJson = self::curlRequest(self::$url);
        $tokenArr = json_decode($tokenJson,true);
        if(isset($tokenArr['errcode'])) {
            return false;
        }
        // 缓存$tokenArr['access_token']数据7200秒
        S('ACCESS_TOKEN',$tokenArr['access_token'],$tokenArr['expires_in']);
        $accessToken = $tokenArr['access_token'];
    }
    return $accessToken;
}

这里获取了微信的access_token,access_token是公众号的全局唯一接口调用凭据,公众号调用模板消息接口时需要使用access_token

access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效,然而请求次数也有所限制,所以我们需要使用缓存来操作

这里最好使用Redis去操作发送模板消息或者请求获取access_token接口

将微信模板消息ID的参数信息放到config里面,具体的自行配置吧,目录在 Application\Common\Conf\wechat.php

'TEMPLETEID' => array(
    '1' => '', //推荐成功通知
    '2' => '',  //收益提示
    '3' => '',  //订单发货通知
    '4' => '',  //订单支付成功
    '5' => '',  //手机绑定成功通知
),

配置完成以后就开始调用吧

    /**
     * 微信模板消息发送接口示例demo
     */
    public function sendWeChatTemplete()
    {
        vendor('Weixin.WeChatTemplete');
        $openid = ''; //用户的openid
        $templateId = C('TEMPLETEID.5'); //微信模板ID
//        详细内容
//        {{first.DATA}}
//        手机号:{{keyword1.DATA}}
//        时间:{{keyword2.DATA}}
//        {{remark.DATA}}
//        内容示例
//        您好,欢迎注册沈唁志!
//        手机号:13800000000
//        时间:2016-05-03 12:00:00
//        沈唁博客(qq52o.me)是关注PHP开发等技术的个人博客,同时是个人程序人生的点滴记录和时光储备。
//        (点击跳转到首页)
        $data= array(
            'first'=> array('value'=>'您好,欢迎注册沈唁志!'),
            'keyword1'=> array('value'=>'13800000000'),  //手机号
            'keyword2'=> array('value'=>date("Y-m-d H:i:s",time())), //时间 格式 '2016-05-03 12:00:00'
            'remark'=> array('value'=>'沈唁博客(qq52o.me)是关注PHP开发等技术的个人博客,同时是个人程序人生的点滴记录和时光储备。'),
        );
        $url = 'https://qq52o.me/'; //点击模板详情跳转地址 默认为null

        $appid = C('WECHAT.appid');
        $key = C('WECHAT.appKey');
        $wct = new WeChatTemplete($appid,$key); //初始化类
        $result = $wct->sendTemplate($openid, $templateId, $data, $url); //执行发送
        p($result);
    }

这里没有封装跳转小程序的,只有跳转网页,url这个跳转默认为空,如果需要跳转的话就传$url的参数即可

有问题还是多看看官方文档吧

4 条评论

发表评论

*