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("調用失敗");
}