uniapp 微信小程序订阅消息封装、兼容支付宝
2022-10-24 本文已影响0人
轩轩小王子
1.由于项目中,用到消息订阅的地方有点多,特地封装了一下,以便项目中使用。
调用后台接口拿到模板id
此处具体问题具体分析,我觉得也可以前端写死
// 获取消息id msgType: placeOrder 下单 purchaseMemberCard 单独购买会员卡 myCoupon 我的优惠券
getMessageTemplateIds(msgType = 'placeOrder') {
let params = {
tenantId: this.userInfo.serProviderId,
messageMallType: "WX"
}
if (msgType === 'myCoupon') {
params.messageTypeList = ["couponTimeOut", "holidayActivity", "svipTimeOut"];
} else if (msgType === 'purchaseMemberCard') {
params.messageTypeList = ["couponTimeOut", "holidayActivity", "svipTimeOut"];
} else {
params.messageTypeList = ["sendCoupon", "holidayActivity", "svipTimeOut"];
}
this.$snbc.$service.$mp.getMessageTemplateIds(params).then((res) => {
if (res.code === '000000' && res.result.length > 0) {
this.messageTemplateIds = res.result;
}
})
},
订阅消息
// 订阅消息
subMessage(cb) {
// #ifdef MP-WEIXIN
try { // 避免 uni.requestSubscribeMessage 报错
uni.requestSubscribeMessage({
tmplIds: this.messageTemplateIds,
complete() { // 无论允许、拒绝 都要继续走
cb();
}
})
} catch(e) {
cb();
}
// #endif
// #ifdef MP-ALIPAY
cb();
// #endif
}
运用(先拿到模板id,点击按钮时再触发订阅)
onLoad() {
this.getMessageTemplateIds('myCoupon');
},
this.subMessage(this.goMyCoupons);
goMyCoupons() {
uni.navigateTo({
url: '/pages/myCoupons/myCoupons'
});
}