下面是微信小程序订阅消息的完整攻略:
1. 申请订阅消息权限
首先需要在小程序后台申请订阅消息权限。具体步骤如下:
- 进入小程序后台,点击“开发”->“接口设置”->“订阅消息”。
- 点击“添加模板”,选择需要订阅的消息模板,填写模板所需的参数信息。
- 提交审核,等待微信官方审核通过。
2. 前端实现
在前端页面需要先引入wx.requestSubscribeMessage
方法,该方法会弹出订阅消息的授权提示框,用户可以选择授权或拒绝。具体代码如下:
wx.requestSubscribeMessage({
tmplIds: ['xxxxx', 'yyyyy'], // 订阅的消息模板id,可以传入多个
success(res) {
if (res['xxxxx'] === 'accept') {
console.log('用户已订阅模板 xxxxx');
}
if (res['yyyyy'] === 'accept') {
console.log('用户已订阅模板 yyyyy');
}
// 其他模板的订阅状态也可以在res中获取到
},
fail(err) {
console.error(err);
}
})
其中tmplIds
为订阅的消息模板id,可以传入多个。如果用户同意授权订阅,success
回调函数中会返回该用户订阅的模板状态信息。如果用户拒绝授权或发生其他错误,fail
回调函数会返回错误信息。
3. 后端实现
当后端需要向用户发送订阅消息时,需要先获取用户授权的订阅状态。具体代码如下:
const params = {
access_token: 'xxxxxx', // 在小程序后台获取的接口调用凭证
touser: 'openid', // 用户的openid
template_id: 'xxxxx', // 消息模板id
data: { // 模板所需的参数数据
keyword1: { value: 'value1' },
keyword2: { value: 'value2' },
// ...
}
};
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send',
method: 'POST',
data: params,
success(res) {
console.log(res);
},
fail(err) {
console.error(err);
}
});
其中access_token
为小程序后台获取的接口调用凭证,touser
为用户的openid,template_id
为消息模板id,data
为模板所需的参数数据。如果向用户发送订阅消息成功,success
回调函数中会返回消息发送结果信息。
举个例子,假如一个小程序是一家在线商城,用户下单后会收到订单确认消息,可以先引入订阅消息的授权提示框:
wx.requestSubscribeMessage({
tmplIds: ['xxxxx'], // 订阅的模板id
success(res) {
if (res['xxxxx'] === 'accept') {
// 如果用户授权订阅,则向后端发送订单确认消息
wx.request({
url: 'https://api.mystore.com/orders',
method: 'POST',
data: {...}, // 订单信息
success(res) {
// 如果订单提交成功,则向用户发送订单确认消息
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send',
method: 'POST',
data: {
access_token: 'xxxxxx',
touser: 'openid', // 用户openid
template_id: 'xxxxx', // 订单确认消息模板id
data: {...} // 订单确认消息数据
},
success(res) {
console.log(res);
},
fail(err) {
console.error(err);
}
});
},
fail(err) {
console.error(err);
}
});
}
},
fail(err) {
console.error(err);
}
})
以上就是微信小程序订阅消息的完整攻略。另外一个示例是需要提醒用户续费的场景:假如一个小程序是一家互联网公司,在用户的服务到期前需要发送续费提醒消息。
wx.requestSubscribeMessage({
tmplIds: ['xxxxx'], // 订阅的模板id
success(res) {
if (res['xxxxx'] === 'accept') {
// 获取用户的服务到期时间
wx.request({
url: 'https://api.myservice.com/users',
method: 'GET',
data: { openid: 'openid' },
success(res) {
const expireTime = res.expireTime; // 用户服务到期时间
const now = new Date().getTime(); // 当前时间
if (expireTime - now <= 7 * 24 * 60 * 60 * 1000) {
// 如果服务到期时间距离现在不足7天,则发送续费提醒消息
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send',
method: 'POST',
data: {
access_token: 'xxxxxx',
touser: 'openid', // 用户openid
template_id: 'xxxxx', // 续费提醒消息模板id
data: {...} // 续费提醒消息数据
},
success(res) {
console.log(res);
},
fail(err) {
console.error(err);
}
});
}
},
fail(err) {
console.error(err);
}
});
}
},
fail(err) {
console.error(err);
}
})
以上2个示例说明了微信小程序订阅消息的使用场景,当然实际场景会更丰富和复杂,需要根据实际需求进行相应的开发实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序(订阅消息)功能 - Python技术站