首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信开发之小程序发送订阅消息

微信开发之小程序发送订阅消息

作者头像
桑先生
发布2020-02-13 22:53:06
7030
发布2020-02-13 22:53:06
举报

微信小程序在年初也是进行了升级.将原来的模板消息升级为订阅消息.也是在这几天研究了下.发现和公众号的模板消息有一种异曲同工的感觉.

废话不多说.来看下小程序发送订阅消息.

首先放上官方的文档  小程序订阅消息

首先.我们应该先去微信后台的订阅消息处选择适合自己的订阅模板.这里的话也是需要将模板id保存一下.

然后就是需要用到的微信的appid和appsecret.老生常谈的东西.这里就不多说了.参照文档.我们只需要将模板需要的参数和Appid和appsecret换取到的accesToken去请求微信的链接就可以了.代码放下面,很简单.

    /**
     * 发送模板消息  
     * $openid  用户的openid
     * $money  金额  此处为模板需要的参数  自行替换
     */
 public function sendSubMessage($openId,$money){

        $params['touser'] = $openId;
        $params['template_id'] = 'muR0TMElyOHUy9Gy2M7lUAc3LpF1yd-d1JU21PQrz_4';  //模板id
        $params['page'] = "/pages/user/userMaintain?type=4";    //  小程序页面

        $template = array(
            'touser' =>  $params['touser'] ,
            'template_id' =>  $params['template_id'],
            'page' =>  $params['page'],
            'data' => array(
                'thing1' => array('value' => '维修订单'),
                'amount2' => $money,
                'thing3' => array('value' => '订单需维修费用')
            )
        );

        $appid = db('config')->where(['name' => 'appid'])->value('value');
        $appsecret = db('config')->where(['name' => 'appsearct'])->value('value');
        $send_template_url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' .$this->getAccessToken($appid,$appsecret);
        

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $send_template_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($template));
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $res = curl_exec($ch);
        curl_close($ch);
        return $res;

    }
    /**
     * 获取access_token
     */
    public function getAccessToken()
    {

        $appId = db('config')->where(['name' => 'appid'])->value('value');
        $appSecret = db('config')->where(['name' => 'appsearct'])->value('value');
        $tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appId . "&secret=" . $appSecret;
        $getArr = array();
        $tokenArr = json_decode($this->send_post($tokenUrl, $getArr, "GET"));
        $access_token = $tokenArr->access_token;
        return $access_token;
    }

    /**
     * 请求方法
     */
    protected function send_post($url, $post_data, $method = 'POST')
    {

        $postdata = http_build_query($post_data);

        $options = array(

            'http' => array(

                'method' => $method, //or GET

                'header' => 'Content-type:application/x-www-form-urlencoded',

                'content' => $postdata,

                'timeout' => 15 * 60 // 超时时间(单位:s)

            )

        );
        $context = stream_context_create($options);

        $result = file_get_contents($url, false, $context);

        return $result;
    }

这里自己踩过的坑总结一下.

1.小程序路径需要为存在的路径

2.data需要为json格式的数据

3.传入的消息需要注意长度限制,这个得具体看官方的限制.

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档