/** * 微信订阅消息授权工具 * 用于在抽奖前请求用户授权接收开奖通知 */ // 抽奖结果通知模板 ID const LOTTERY_RESULT_TEMPLATE_ID = 'O2eqJQD3pn-vQ6g2z9DWzINVwOmPoz8yW-172J_YcpI' /** * 请求用户订阅抽奖结果通知 * @returns {Promise} 订阅结果 */ 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} 订阅结果 */ 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 }