微信消息一次性订阅
通过微信的服务号下发微信通知,这个很多地方都有用到,例如:订单支付成功,退款,确认收货,交易提醒等场景都有使用。
微信订阅消息比微信公众号通知这种要更方便,用户不用去关注公众号就能收到通知。
这个的前身应该是模板订阅(模板订阅可以实现永久性订阅,就是可以随时给用户发送消息,现已被微信废除),而一次性订阅一次订阅只能发一次,每次订阅最多只能有3个模板,也就是最多一共发3条,每个模板各一条。
消息订阅中有政府,医疗,教育少数有长期订阅,不过只有少数开放出模板,也不能自己申请(我用的是政府账号,有权限也没模板)
开发服务通知分成四步:
一、去小程序后台订阅消息选择服务通知模板,前面的名称固定,后面的{{name1.DATA}}这个参数可变,有字符限制
二、小程序端获取消息订阅发放权限(前端)
wx.requestSubscribeMessage({
tmplIds: ['***','***','***'],//*里面填申请的id
success (res) {
console.log("成功",res)
},
fail(res){
console.log("失败",res)
}
})
三、获取消息订阅下发凭证(后台),因为想着实现这个方案,就直接先用前端代码写看一下效果,第三步和第四部都是后台去写的,因为涉及密钥,前端不好明文直接调微信接口
//拿凭证
getAccessToken() {
var appid = "***"//appid
var secret = "***"//密钥//密钥无法查看,只能重置
var that = this
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + secret,
method: 'POST',
success: function (e) {
console.log('凭证access_token', e.data.access_token)
}
})
},
四、发送订阅消息(发送消息订阅也是后台去实现,就是调微信的一个接口把参数给过去,很简单),后台写好之后可以自己放需要发送通知的事件之后调,也可以给个接口让前端再调一下
//订阅消息
send: function (ACCESS_TOKEN) {
var data = {
"touser": "oM1nF5GAVc_8dkzKl5l2C-wk0hDw",//小程序的openid,28个字符,同一微信,
//不同appid对应的openid也不同
"template_id": "***",//模板id,小程序号申请的
"page": "index",
"miniprogram_state": "developer",
"lang": "zh_CN",
"data": {//data为申请模板里面可变参数
"name1": {
"value": "TIT创意园"
},
"amount2": {
"value": "2015"
},
"amount3": {
"value": "65"
},
"date4": {
"value": "2015年01月05日"
}
}
}//调微信接口发送请求
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + ACCESS_TOKEN,//ACCESS_TOKEN为前面一个接口拿的凭证
method: 'POST',
data: data,
success: function (e) {
console.log('订阅消息', e)
}
})
},
发送完成