小程序订阅消息流程

Posted 认真,是一种态度

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序订阅消息流程相关的知识,希望对你有一定的参考价值。

最近小程序将模板消息下架,需要修改为订阅消息,现将订阅消息接入完整流程记录一下,还有遇到的问题,最终效果图如下:

 

 

注意点:

  1、用户授权一次只能下发一次消息通知,如需下发多次,则需要用户多次授权;或者让用户一次授权多个模板ID(下面代码会说明);

  2、后台下发订阅消息的时候,数据一定要是json格式字符串,而不是json对象;而下发数据data中的模板关键词key值是根据你选择的模板来的,关键词key值需要在后台申请的模板中查看;(这个关键词key值让我费了些时间)

 

 

订阅消息接入流程说明(官方地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html):

  1、需要先在小程序后台获取需要下发的模板ID,直接复制即可;

  2、前端调用消息订阅接口 wx.requestSubscribeMessage,获取下发权限;

  3、服务端下发消息给用户,服务端下发接口 subscribeMessage.send;服务端(java)代码可参考https://blog.csdn.net/qq_37676762/article/details/102746808

 

小程序端测试订阅消息:

<!--wxml文件 -->
1
<view class="button" bindtap="btnClick">点击发送订阅消息</view>

 

 

 1 //页面js
 2 page({
 3       /**
 4    * 点击下发订阅消息按钮
 5    */
 6   btnClick() {
 7     wx.requestSubscribeMessage({ //获取下发权限
 8       tmplIds: [\'GNwKtU0d1r80Stp6bpKQ6S5CWCltbm-RHHBTyIKrpBM\'], //此处写在后台获取的模板ID,可以写多个模板ID,看自己的需求
 9       success: (res) => {
10         if (res[\'GNwKtU0d1r80Stp6bpKQ6S5CWCltbm-RHHBTyIKrpBM\'] == \'accept\') { //accept--用户同意 reject--用户拒绝 ban--微信后台封禁,可不管
11           // 获取access_token(仅为测试,正常需要在后台获取)
12           wx.request({
13             url: \'https://api.weixin.qq.com/cgi-bin/token\', //获取access_token的地址,微信定义的
14             data: {
15               grant_type: \'client_credential\', //写死的
16               appid: \'wx1234564564564645\', //小程序的appId(填写自己的)
17               secret: \'xiaochengxumiyao\' //小程序密钥,在小程序后台获取的,登录西奥程序后台->点开发->点开发设置->获取密钥就可以了
18             },
19             success: (req) => {
20               console.log(\'获取access_token成功\', req.data.access_token)
21               let _access_token = req.data.access_token;
22               wx.login({
23                 success: res => {
24                   if (res.code) { //code五分钟内有效
25                     // 调用下发接口前需要得到用户的openid
26                     wx.request({
27                       url: \'https://api.weixin.qq.com/sns/jscode2session\',
28                       data: {
29                         appid: \'wx1234564564564645\',
30                         secret: \'xiaochengxumiyao\',
31                         js_code: res.code, //登录时获取的code
32                         grant_type: "authorization_code", //授权类型,写死的
33                       },
34                       success: res => {
35                         console.log(\'获取openid成功\', res)
36                         let _openid = res.data.openid;
37                         // 调用下发接口
38                         wx.request({
39                           url: \'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=\' + _access_token,
40                           method: "POST",
41                           data: JSON.stringify({
42                             touser: _openid, //当前用户的openid
43                             template_id: "GNwKtU0d1r80Stp6bpKQ6S5CWCltbm-RHHBTyIKrpBM", //需要下发的模板ID,如模板不多可让后台直接配置写死,多的话就通过微信获取模板列表接口查询模板
44                             page: "pages/garden/garden", //点击小程序订阅消息跳转的页面,可携带参数
45                             data: {
46                               "phrase1": { //这个key值就是上面提到的关键词,在后台对应的模板详情里可以看到,等后台-->点订阅消息-->我的模板(没有的话先去公共模板库选一个)-->点击详情-->右边详细内容里就是对应的key了
47                                 "value": \'未通过\' //这个值是下发给用户的信息
48                               },
49                               "thing3": {
50                                 "value": \'您的简历不完善,请先完善\'
51                               },
52                               "date4": {
53                                 "value": \'2020-01-08 19:52\'
54                               }
55                             }
56                           }),
57                           success: res => {
58                             console.log(res)
59                             wx.showToast({
60                               title: \'下发成功\',
61                             })
62                             // 这里可以写自己的逻辑
63                           }
64                         })
65                       }
66                     })
67                   }
68                 }
69               })
70             }
71           })
72         } else {
73           wx.showModal({
74             title: \'温馨提示\',
75             content: \'您已拒绝授权,将无法在微信中收到简历审核通知!\',
76             showCancel: false,
77             success: res => {
78               if (res.confirm) {
79                 // 这里可以写自己的逻辑
80               }
81             }
82           })
83         }
84       }
85     })
86   },
87 })

以上是关于小程序订阅消息流程的主要内容,如果未能解决你的问题,请参考以下文章

小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”

使用微搭低代码实现小程序消息订阅及发送功能

小程序消息订阅发送功能教程

使用微搭低代码实现小程序消息订阅及发送功能

小程序如何使用订阅消息(PHP代码+小程序js代码)

微信小程序订阅消息调研