小程序订阅消息流程

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

注意点:

  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

时间: 2024-07-31 21:14:23

小程序订阅消息流程的相关文章

借助云开发实现小程序订阅消息(模板消息)推送功能

之前的模板消息推送,将在2020年1月10日下线,所以我们不得不使用订阅消息了. 我们先来看下订阅消息的官方简介.接下来我们就来借助云开发,来快速实现小程序消息推送的功能. 一:获取模板 ID 这一步和我们之前的模板消息推送是一样的,也是先添加模板,然后拿到模板id首先是开通订阅消息功能,很简单,如下图由于长期性订阅消息,目前仅向政务民生.医疗.交通.金融.教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务.仅就线下公共服务这一点,长期性订阅消息就和大部分开发者无缘了.所以我们这里只能

微信小程序订阅消息

微信小程序后台添加订阅消息,目前大多数服务类目下仅支持一次性订阅,持续更新中.若没有符合的消息模板,申请自定义模板即可,审核周期是挺长的. 填写模板时,一定要注意参数类型. 小程序发送订阅消息必须要获取用户接收消息的授权 小程序需调用 wx.requestSubscribeMessage({ tmplIds: ['RYdO0OyVwOmFJ5M9whapadK55agtmvWuumc_utFr7D4', 'bgEvkAITRuYbPET0IOPn8QPurVkXP7V6vjfPl7XDzrM']

微信小程序模板消息群发解决思路

基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.(微信6.5.2及以上版本支持模板功能.低于该版本将无法收到模板消息.) 模板推送位置:服务通知(点击查看详情还能跳转到下发消息的小程序的指定页面) 模板下发条件:用户本人在微信体系内与页面有交互行为后触发 微信小程序模板消息使用说明(官方文档):https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html 为了防止对模板消息的滥用,带来

小程序名片生成流程(附图)

随着小程序的大热,小程序的使用在目前已经越来越广泛了,小到一张名片也是用小程序就可以完成了,完全代替了以前的纸质名片.而且小程序名片功能非常多,使用起来也便捷.下面就为大家介绍小程序名片生成流程.第一步:打开手机微信页面,在小程序里搜索这款小程序.第二步:**点击进去后,依据提示逐步填写资料,随后变生成了一张属于自己的小程序名片. 原文地址:http://blog.51cto.com/13885107/2150417

设置小程序模板消息keyword_id_list问题

设置小程序模板消息时,会传一个keyword_id_list,这个参数是由一串数字组成的,开发时如果碰到设置错误,会有疑问这串数字是怎么来的,这里解释一下: 小程序的keyword_id_list主要是来控制小程序模板消息发送给顾客的格式的,具体是什么格式是有开发者自行去选择定义的 那开发者如何去自行定义这些数字呢?这个数字实际上是在微信小程序的模板消息后台获取的 原文地址:https://www.cnblogs.com/gramblog/p/11636809.html

微信小程序登入流程

微信小程序登入流程 前言:openid与unionid openid:是用单个微信应用表示用户的唯一标识.亚洲:饼哥小程序上openid :123,那该用户再张成的小程序上他的opendid不是123,是其他任意一个值,上面的意思:同一用户再不用不同应用上的openid不同,但是再同一应用上唯一. 场景: 假设你们公司有2个小程序.但是你们老板想把用户做统一处理.比如新用户登入任意一个小程序,就发送发送礼包.但是只要再一个小程序上另过了,就不能再另一个上面领取. unionnid:一个用户在多个

微信小程序-滚动消息通知

写在前面: 微信小程序学的不太多,做了一个简单的项目,回来很快时间内把在深圳两天的房租给赚回来了. 这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器. 我们通过vertical属性(默认为false,实现默认左右滚动)设置为true来实现上下滚动.  (需要注意的是:只要你的swiper存在vertical属性,无论你给值为true或者false或者不设参数值,都将实现上下滚动) wxml 1 <swiper clas

小程序模板消息使用

最近公司项目需要做一个活动,活动的服务通知,对小程序的模板消息了解了一下! 模板消息的实现,前端主要是提供几个参数给后台就好了.因为,无法把https://api.weixin.qq.com这个域名添加到小程序的请求域名.这里是设置了不校验域名.. 1.首先小程序后台的模板消息添加一个模板! 2.wxml <form bind:submit="submitTest" report-submit="true"> <button form-type=&

小程序模板消息后台发送(集体通知)

1.在小程序后台配置好模板 2.其中curl需要加上一个参数设置(https发送需要) 3.项目代码示例:其中有token过期更新的处理方法 /* * 通知最近7天小程序用户 * param() */public function xiaoUsersNotice(Request $r) { $data = $r->all(); $name = $data['name'];//商品名称 $tmp = $data['jianjie']; $char = implode(".", $t