uniapp开发支付宝小程序订阅消息功能
- uniapp中添加相应插件支持
-
- 1、manifest.json文件中添加插件支持
- 2、manifest.json文件中添加插件支持
- 3、在小程序的插件服务中订阅“订阅消息”服务
- uniapp前端代码实现
- 后端订阅消息代码实现
uniapp中添加相应插件支持
支付宝模板消息文档地址
1、manifest.json文件中添加插件支持
"plugins": { // 使用到的插件
"subscribeMsg": { // 订阅消息插件
"version": "*", // 目前只支持设置 * 拉取当前上架最新版本
"provider": "2021001155639035" // 消息订阅插件 appid
}
}
2、manifest.json文件中添加插件支持
在需要添加订阅消息功能的页面上,增加组件支持
3、在小程序的插件服务中订阅“订阅消息”服务
在搜索框中搜索,订阅插件
uniapp前端代码实现
<!-- 支付宝订阅消息组件Start -->
<!-- #ifdef MP-ALIPAY -->
<subscribe-msg />
<!-- #endif -->
<!-- 支付宝订阅消息组件End -->
// #ifdef MP-ALIPAY
// 引入消息模板方法
const {
requestSubscribeMessage
} = requirePlugin('subscribeMsg');
// #endif
let _this = this
requestSubscribeMessage({
// 模板id列表,最多3个
entityIds: _this.aliPayTemplateList,
// 接收结果的回调方法
callback(res) {
console.log('订阅回调', res);
if (res.success) {
const successIds = _this.aliPayTemplateList.filter(i => res[i.entityId] === 'accept').map(i =>
i.entityId);
// 订阅成功
my.call('toast', {
content: `模板${successIds.join(',')}订阅成功`,
type: 'success'
});
} else {
switch (res.errorCode) {
case 11: {
my.call('toast', {
content: '用户未订阅关闭弹窗'
});
break;
}
default: {
my.call('toast', {
content: `ErrorCode: ${res.errorCode}, ErrorMsg: ${res.errorMessage}`
});
break;
}
}
}
}
});
后端订阅消息代码实现
AlipayClient alipayClient =newDefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayOpenAppMiniTemplatemessageSendRequest request =new AlipayOpenAppMiniTemplatemessageSendRequest();
request.setBizContent("{"+
"\"to_user_id\":\"2088102122458832\","+//触达消息的支付宝user_id
//"\"form_id\":\"2017010100000000580012345678\","+// 订阅类型消息不填。
"\"user_template_id\":\"MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=\","+//消息模板id
"\"page\":\"page/component/index\","+ // 模板消息"进入小程序查看"按钮跳转的小程序页面地址
"\"data\":\"{\\\"keyword1\\\":{\\\"value\\\":\\\"12:00\\\"},\\\"keyword2\\\":{\\\"value\\\":\\\"20180808\\\"},\\\"keyword3\\\":{\\\"value\\\":\\\"支付宝\\\"}}\""+
"}");
AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
}else{
System.out.println("调用失败");
}