1. 登录微信小程序管理端,添加订阅消息模板
2.定义好需要发送的消息
//消息模板
let messages ={
touser: '********************',//openid
template_id: 'xxxxxxxxxxxxxxx', //订阅模板id
data: {
//留言标题
thing1:{
value: '测试标题'
},
//客户名称
name2:{
value: '章墨'
},
//留言内容
thing3:{
value: '消息推送了!记得进入小程序查看哟~'
},
//留言时间
date4: {
value: '2024-3-13'
},
//温馨提示
thing5:{
value: '此为测试版本,无需重视!'
}
}
}
3.获取小程序的openid
//获取openid
getOpenid = (code) => {
return new Promise((resolve, reject) => {
let appid = weixinData.Appid
let secret = weixinData.AppSecret
let params = {
appid,
secret,
js_code:code
}
let formData = qs.stringify(params)
let openIdUrl = "https://api.weixin.qq.com/sns/jscode2session?" + formData + "&grant_type=authorization_code"
api.get(openIdUrl).then( res => {
resolve(res.data.openid)
})
})
}
4.获取access_token
// 获取access_token
getAccessToken = () => {
return new Promise((resolve) => {
const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${weixinData.Appid}&secret=${weixinData.AppSecret}`
api.get(url).then(function (response) {
// 处理成功情况
resolve(response.data.access_token)
})
.catch(function (error) {
// 处理错误情况
console.log(error);
})
})
}
5.发起请求,向用户推送消息
const urls = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${res}`
const options = {
method: 'post',
url: urls,
json: messages
}
request(options, function (err, res, body) {
if (err) {
console.log(err)
} else {
if (body.errcode == 0) {
resMax.send({
code: 200,
mes: '消息通知发送成功!',
success: true
})
}
}
})
6.小程序端添加订阅消息的按钮
let getMes = () => {
uni.requestSubscribeMessage({
tmplIds: ['xxxxxxxx'], //消息模板Id
success: res => {
console.log("发送消息通知", res)
},
fail: e => {
console.log(e)
}
})
}
7.最后:1.先发起一次订阅,2.然后调用node的发送消息接口进行测试
8.注意
- 一次订阅对应一次消息推送,目前
没有长期订阅
的方案 - 小程序端和node.js后端中的
模板ID注意一定要一致
,不然推送不了