微信订阅消息通知

小程序订阅消息

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html

步骤
  • 小程序配置好模板
  • 前端订阅了消息
  • 后端获取到access_token
  • 后端调send接口

发送消息接口

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

请求参数
属性类型默认值必填说明
access_token / cloudbase_access_tokenstring接口调用凭证
touserstring接收者(用户)的 openid
template_idstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
dataObject模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }
miniprogram_statestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
返回值
Object

返回的 JSON 数据包

属性类型说明
errcodenumber错误码
errmsgstring错误信息

errcode 的合法值

说明最低版本
40003touser字段openid为空或者不正确
40037订阅模板id为空不正确
43101用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系
47003模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错
41030page路径不正确,需要保证在现网版本小程序中存在,与app.json保持一致

接口调用凭证access_token

请求地址

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数
属性类型默认值必填说明
grant_typestring填写 client_credential
appidstring小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)
secretstring小程序唯一凭证密钥,即 AppSecret,获取方式同 appid
返回值
Object

返回的 JSON 数据包

属性类型说明
access_tokenstring获取到的凭证
expires_innumber凭证有效时间,单位:秒。目前是7200秒之内的值。
errcodenumber错误码
errmsgstring错误信息

errcode 的合法值

说明最低版本
-1系统繁忙,此时请开发者稍候再试
0请求成功
40001AppSecret 错误或者 AppSecret 不属于这个小程序,请开发者确认 AppSecret 的正确性
40002请确保 grant_type 字段值为 client_credential
40013不合法的 AppID,请开发者检查 AppID 的正确性,避免异常字符,注意大小写
返回数据示例

正常返回

{"access_token":"ACCESS_TOKEN","expires_in":7200}

access_token 的存储与更新

  • access_token 的存储至少要保留 512 个字符空间;
  • access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效;
  • 建议开发者使用中控服务器统一获取和刷新 access_token,其他业务逻辑服务器所使用的 access_token 均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致 access_token 覆盖而影响业务;
  • access_token 的有效期通过返回的 expires_in 来传达,目前是7200秒之内的值,中控服务器需要根据这个有效时间提前去刷新。在刷新过程中,中控服务器可对外继续输出的老 access_token,此时公众平台后台会保证在5分钟内,新老 access_token 都可用,这保证了第三方业务的平滑过渡;
  • access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接口,这样便于业务服务器在API调用获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。

获取当前帐号下的个人模板列表

请求地址

GET https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token=ACCESS_TOKEN

请求参数
属性类型默认值必填说明
access_token / cloudbase_access_tokenstring接口调用凭证
返回值
Object

返回的 JSON 数据包

属性类型说明
errcodenumber错误码
errmsgstring错误信息
dataArray.个人模板列表

data 的结构

属性类型说明
priTmplIdstring添加至帐号下的模板 id,发送小程序订阅消息时所需
titlestring模版标题
contentstring模版内容
examplestring模板内容示例
typenumber模版类型,2 为一次性订阅,3 为长期订阅
keywordEnumValueListArray.枚举参数值范围

keywordEnumValueList 的结构

属性类型说明
keywordCodestring枚举参数的 key
enumValueListArray.枚举参数值范围列表

### 微信开发者工具实现订阅消息提醒方法 #### 准备工作 为了在微信小程序中实现订阅消息提醒,在微信公众平台需先开通订阅消息功能并获取相应的模板ID[^1]。 #### 用户界面设计 在`push1.wxml`文件中定义按钮用于触发用户的订阅操作: ```html <button bindtap="dingyue">订阅</button> ``` 此按钮允许用户点击以发起订阅请求[^4]。 #### JavaScript逻辑编写 接着,在对应的JS文件里添加事件处理器来处理用户的订阅行为。这通常涉及到调用微信提供的接口让用户确认是否同意接收特定类型的订阅消息,并记录其选择结果。以下是简化版的JavaScript代码片段,展示了如何设置订阅消息权限以及发送订阅消息给已授权用户的过程: ```javascript Page({ dingyue() { wx.requestSubscribeMessage({ tmplIds: ['your_template_id'], // 替换成实际获得的模板ID success(res) { console.log('User agreed:', res); // 成功后可以继续执行其他业务逻辑,比如向服务器端报告状态变化等 }, fail(err) { console.error('Failed to request subscription', err); } }); // 假设已经获得了用户的同意,则可以通过wx.sendSubscriptionMsg API 来发送具体的消息内容 const messageData = { /* 构建要发送的信息数据 */ }; wx.sendSubscriptionMsg({ ...messageData, success(sendRes){ console.log('Sent successfully'); }, fail(sendErr){ console.error('Send failed', sendErr); } }) } }) ``` 上述代码中的`requestSubscribeMessage`函数用来请求用户对于指定模板ID下的消息类型进行订阅;而`sendSubscriptionMsg`则是在得到用户许可的情况下真正发出一条具体的订阅消息。 #### 后台支持 除了前端部分外,还需要确保后台能够正确处理来自客户端的数据传输和服务响应。例如使用Node.js作为服务器时,可能需要验证登录凭证并保存Openid以便后续推送服务的通知[^2]。如果采用的是Java环境下的Spring Boot框架,则应考虑集成必要的依赖库和支持类来完成同样的任务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值