小程序訂閱消息流程


最近小程序將模板消息下架,需要修改為訂閱消息,現將訂閱消息接入完整流程記錄一下,還有遇到的問題,最終效果圖如下:

 

 

注意點:

  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 })


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM