最近小程序将模板消息下架,需要修改为订阅消息,现将订阅消息接入完整流程记录一下,还有遇到的问题,最终效果图如下:
注意点:
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 })