小程序订阅消息流程

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

注意点:

  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 })
原文地址:https://www.cnblogs.com/rzsyztd/p/12179794.html