首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >整合ThinkPHP功能系列之微信公众号模板消息发送

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

作者头像
沈唁
发布2018-07-25 17:09:31
1.4K0
发布2018-07-25 17:09:31
举报
文章被收录于专栏:沈唁志沈唁志
模板消息还是在商城类的微信项目中使用比较多,模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如绑定手机号通知,商品购买成功通知等,不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息

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

这里不说申请。。。对于模板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的参数即可

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档