• 小程序订阅消息流程


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

    注意点:

      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 })
  • 相关阅读:
    C#中如何创建文件夹,复制文件夹,删除文件夹的方法
    Entity Framework 4.1 CodeFirst 学习笔记
    c#使用豆瓣API
    字符串json转换为xml xml转换json
    基于方法的查询语法(1)
    A lowlevel Look at the ASP.NET Architecture
    删除sql表中重复数据
    关于document.cookie的使用
    大话设计模式之设计模式遵循的七大原则
    Cookies揭秘 [Asp.Net, Javascript]
  • 原文地址:https://www.cnblogs.com/rzsyztd/p/12179794.html
Copyright © 2020-2023  润新知