my.requestsubscribemessage(object object)
基础库 或更高版本; 若版本较低,建议采取 兼容处理 。
支小宝客户端 支持
安诊儿客户端 支持
主体: 企业支付宝小程序 、 个人支付宝小程序
相关文档: 消息产品介绍 、 小程序发送模板消息(接口) 、 my.getsetting
唤起客户端小程序消息订阅界面。
订阅界面是根据当前小程序在 配置的消息模板 id 来展示对应消息的订阅选项(参考接入流程第 4 步)。
消息订阅分为一次性和长期性:
一次性:使用一次性消息模板订阅,每次向用户发送消息都需要用户在订阅界面点击同意后才可以发送;
长期性:使用长期性消息模板订阅,用户同意订阅后,可以多次向订阅用户发送消息。
效果示例
一次性消息订阅
长期性消息订阅
长期性消息订阅确认
消息管理
消息订阅
是否必须: 是。
使用 主账号 登录 ,选择当前开发的小程序,根据下面的说明进行相关开发配置:
-
接口加签方式:必填
-
应用网关:必填
-
支付宝网关:必填
-
接口内容加密方式:选填,建议配置
-
服务器ip白名单:选填,涉及到敏感操作时建议配置
具体可参考文档 开发设置。
是否必须: 是。
使用 主账号 登录 ,选择当前开发的小程序,在 “小程序信息” 中配置主营行业,选择的主营行业不同,在配置消息模版(第 4 步)时,接入订阅消息模板列表展示的模板不同,具体可参考文档 配置小程序主营行业。
是否必须: 是。
使用 主账号 登录 ,选择当前开发的小程序进行配置,具体可参考文档 领用订阅消息模板。
是否必须: 是。
在小程序中调用 api ,参数属性 entityids 中传入领用的消息模版 id(最多三个),调用后弹出订阅界面。查看示例。
是否必须: 是。
在用户授权完成(开发接入完成)之后,可以通过以下两种方式发送消息:
-
通过服务端调用 alipay.open.app.mini.templatemessage.send 向支付宝发送对应模板的消息。
-
通过 主账号 登录 ,进入 运营中心 选择对应小程序,点击左侧菜单中的 ”消息“,在订阅消息列表中,用 “配置发送” 发送消息,无需服务端编写代码。
订阅消息发送后,可在 支付宝凯发k8官方网娱乐官方首页 、消息盒子、app push 等位置收到消息提醒。
object object
查看示例
属性 | 类型 | 默认值 | 必填 | 描述 |
---|---|---|---|---|
entityids | array |
- | 是 | 需要订阅的消息模板 id 集合(注意:1、一次性模板 id 和长期性模板 id 不可同时使用,2、一次最多传入三个模板 id) |
thirdtypeappid | string | - | 否 | 模板小程序 appid,仅在服务商代调用场景下需要传入 |
success | function | - | 否 | 调用成功的回调函数 |
fail | function | - | 否 | 调用失败的回调函数 |
complete | function | - | 否 | 调用结束的回调函数(调用成功、失败都会执行) |
success 回调函数
参数
object res
查看示例
属性 | 类型 | 描述 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
behavior | string | 用户订阅操作结果 |
||||||||||||||||
|
||||||||||||||||||
show | boolean | 本次订阅过程是否弹出了订阅面板。 |
||||||||||||||||
keep | boolean | 一次性订阅,是否勾选 总是保持以上选择,不再询问。 |
||||||||||||||||
refuse | boolean | 长期订阅,是否点击 拒绝,不再询问。 |
||||||||||||||||
result | object | 订阅数据 |
||||||||||||||||
|
||||||||||||||||||
entityid | string | unknown | 动态键,具体订阅数据建议通过 result 字段获取。 |
fail 回调的参数为 object,error
属性为错误码,errormessage
属性为错误消息。
错误码 | 错误消息 | 凯发app官方网站的解决方案 |
---|---|---|
-1 | 订阅失败/校验模板列表失败 |
系统默认错误。联系支付宝凯发app官方网站的技术支持解决。 |
10 | 系统异常 |
系统问题。联系支付宝凯发app官方网站的技术支持解决。 |
11 | 用户取消订阅 |
用户在订阅面板中点击了取消。正常交互,无须特别处理。 |
15 | 当前有活跃的订阅授权窗口,此次调用不会弹窗,无订阅结果返回 |
连续调用两次此接口时,第二次调用就会报错。请检查调用此 api 次数,确保当前有活跃的订阅授权窗口时,不再次调用此 api。 |
203 | 无效的参数 |
请检查入参 entityids 是否满足要求。
|
402 | 应用暂不能提供服务 |
请在 查看小程序状态是否已下架,或联系支付宝凯发app官方网站的技术支持解决。 |
100201 | 调用次数超限 |
当前系统订阅频繁,接口限流,可引导用户稍后再试。 |
106002 | 模板列表中同时存在一次性/长期订阅模板 |
请检查传入的消息模板 id ,传入的消息模板 id 必须同为一次性消息模板 id ,或同为长期性消息模板 id 。 |
106008 | 模板列表中存在非法/无效的模板 id |
请检查入参 entityids 的模板 id 是否为当前小程序领用的模板 id 。 |
my.requestsubscribemessage({
entityids: [
'ac768fca1ce245ccae9404bb5243c49b',
'9aa357acb7c6434aba294aded1cdfb7c',
],
success: res => {
console.log('接口调用成功的回调', res);
},
fail: err => {
console.log('接口调用失败的回调', err);
}
});
{
"success": true,
"stat": "ok",
"behavior": "subscribe",
"result": {
"subscribeentityids": [
"cbc3487d54a648e0b38e334b2b047dd3"
],
"subscribedentityids": [
"cbc3487d54a648e0b38e334b2b047dd3"
],
"unsubscribedentityids": [],
"currentsubscribedentityids": [
"cbc3487d54a648e0b38e334b2b047dd3"
]
},
"show": true,
"keep": false,
"refuse": false,
"cbc3487d54a648e0b38e334b2b047dd3": "accept"
}
{
"success": false,
"stat": "ok",
"behavior": "cancel",
"result": {
"entitylist": [
"cbc3487d54a648e0b38e334b2b047dd3"
],
"subscribedentityids": [],
"unsubscribedentityids": [
"cbc3487d54a648e0b38e334b2b047dd3"
],
"currentsubscribedentityids": []
},
"show": true,
"keep": true,
"refuse": false,
"error": 11,
"errorcode": 11,
"errormessage": "用户取消订阅",
"cbc3487d54a648e0b38e334b2b047dd3": "accept"
}
entitylist 是传入的模板 id 集合,仅在取消订阅场景下返回。
-
tip基础库版本低于 2.7.15,不能在 web-view 页面调用,否则订阅界面会被遮盖。
-
tip长期性消息订阅,点击 “拒绝,不再询问” 会进入成功回调。
q:调用 my.requestsubscribemessage 报 “my.requestsubscribemessage is not a function”,或 my.caniuse 检测为 false 是什么原因?
在 ide 中点击模拟器上方的 “展开面板(四个小方块)” 按钮 ,点击 “设置” 查看支持的基础库版本,若不满足此 api 的基础库版本使用限制,可通过升级 ide 版本来支持更多版本基础库。
q:消息订阅发生后,如何获取订阅信息?
获取消息订阅信息,可通过如下方式:
- 调用 my.requestsubscribemessage 触发订阅时,可以通过其回调实时获取订阅结果。
- 需要服务端判断订阅关系时,可以通过 alipay.open.app.messagetemplate.subscribe.query 获取模版订阅关系列表。
- 需要在小程序中判断订阅状态时,可以通过 my.getsetting 返回的字段
subscriptionssetting
获取订阅状态。
q:订阅一次性消息时选择“保持以上选择,不再询问”,或订阅长期性消息,用户点击同意后,订阅消息面板是否还可以再弹出?
当用户有此操作时,订阅面板将不再弹出。若需要再此弹出订阅面板,可点击小程序 ”胶囊按钮(右上角三个点)” ,再点击 “设置”,在 “消息管理” 中切换消息接收状态,切换后效果如下:
1、一次性消息订阅在切换消息状态后,意味着更改了保持的选择,在下次订阅时面板会再弹出。
2、长期性消息订阅的消息,当切换到 “不接收” 时,意味着用户更改了所选消息长期接收的状态,下次订阅时面板会再弹出来。
q:如何订阅三个以上消息?
目前小程序支持一次订阅消息最多三个,若超过三个,可分多次订阅,分别触发。
q:是否还可以使用插件 subscribe-msg 订阅消息?
插件 subscribe-msg 已停止维护,建议使用 my.requestsubscribemessage。
q:为什么已经勾选了「总是保持以上选择,不再询问」的复选框后,点击「取消」按钮,下次还会弹出订阅消息面板?
因为「取消」按钮只是关闭订阅消息面板。
如果不想订阅消息且不想再弹出订阅消息面板,可以取消勾选模板的同时再勾选「总是保持以上选择,不再询问」 后点击「确定」按钮。如图: