最近小程序將模板消息下架,需要修改為訂閱消息,現將訂閱消息接入完整流程記錄一下,還有遇到的問題,最終效果圖如下:
注意點:
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 })