91 lines
2.5 KiB
JavaScript
91 lines
2.5 KiB
JavaScript
/**
|
|
* 微信订阅消息授权工具
|
|
* 用于在抽奖前请求用户授权接收开奖通知
|
|
*/
|
|
|
|
// 抽奖结果通知模板 ID
|
|
const LOTTERY_RESULT_TEMPLATE_ID = 'O2eqJQD3pn-vQ6g2z9DWzINVwOmPoz8yW-172J_YcpI'
|
|
|
|
/**
|
|
* 请求用户订阅抽奖结果通知
|
|
* @returns {Promise<object>} 订阅结果
|
|
*/
|
|
export function requestLotterySubscription() {
|
|
return new Promise((resolve) => {
|
|
// #ifdef MP-WEIXIN
|
|
wx.requestSubscribeMessage({
|
|
tmplIds: [LOTTERY_RESULT_TEMPLATE_ID],
|
|
success(res) {
|
|
console.log('订阅消息授权结果:', res)
|
|
resolve({
|
|
success: true,
|
|
result: res,
|
|
// 检查用户是否接受了订阅
|
|
accepted: res[LOTTERY_RESULT_TEMPLATE_ID] === 'accept'
|
|
})
|
|
},
|
|
fail(err) {
|
|
console.warn('订阅消息授权失败:', err)
|
|
// 即使授权失败也不阻止用户参与抽奖
|
|
resolve({
|
|
success: false,
|
|
error: err,
|
|
accepted: false
|
|
})
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifndef MP-WEIXIN
|
|
// 非微信小程序环境,直接返回成功
|
|
resolve({
|
|
success: true,
|
|
accepted: false,
|
|
message: '非微信小程序环境,跳过订阅授权'
|
|
})
|
|
// #endif
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 批量请求多个模板的订阅授权
|
|
* @param {string[]} templateIds 模板ID数组
|
|
* @returns {Promise<object>} 订阅结果
|
|
*/
|
|
export function requestSubscriptions(templateIds) {
|
|
return new Promise((resolve) => {
|
|
// #ifdef MP-WEIXIN
|
|
wx.requestSubscribeMessage({
|
|
tmplIds: templateIds,
|
|
success(res) {
|
|
console.log('订阅消息授权结果:', res)
|
|
resolve({
|
|
success: true,
|
|
result: res
|
|
})
|
|
},
|
|
fail(err) {
|
|
console.warn('订阅消息授权失败:', err)
|
|
resolve({
|
|
success: false,
|
|
error: err
|
|
})
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifndef MP-WEIXIN
|
|
resolve({
|
|
success: true,
|
|
message: '非微信小程序环境,跳过订阅授权'
|
|
})
|
|
// #endif
|
|
})
|
|
}
|
|
|
|
export default {
|
|
requestLotterySubscription,
|
|
requestSubscriptions,
|
|
LOTTERY_RESULT_TEMPLATE_ID
|
|
}
|