关于Nodejs的项目配置和路由配置我这里就不过多叙述了。着重关于订阅消息的发送
1.首先前往微信开发者平台配置好自己的订阅消息模板(改版后的只支持一次性订阅:每次用户操作记录一次,openid只能发送一次消息给用户,不能持续订阅发送)
2.首先我们假定一个函数用来发送
async function sendCode(req, res) {
sendsubmit();
}
async function sendsubmit(code) {
const config = {
appid: "*************",
secret: "*************",
};
// config.app.appid 对应小程序的appid
// config.app.secret 对应小程序的秘钥
const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${config.appid}&secret=${config.secret}`;
const responses = await axios
.get(url)
.then(function (response) {
// 处理成功情况
return response.data;
})
.catch(function (error) {
// 处理错误情况
console.log(error);
});
let messages = {
touser: openid, //openid
template_id: "**********************", //订阅模板id
miniprogram_state: "developer",
access_token: responses.access_token,
lang: "zh_CN",
data: {
thing1: {
value: "日常消息",
},
thing6: {
value: "公司发西瓜啦",
},
//留言内容
thing2: {
value: "请大家到四楼食堂领取西瓜",
},
//留言时间
time3: {
value: "2024-07-22 17:45:12",
},
//温馨提示
thing9: {
value: "陈晨",
},
},
};
const urls = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${responses.access_token}`;
const options = {
method: "post",
url: urls,
json: messages, //第二步定于的消息内容
};
request(options, function (err, res, body) {
if (err) {
console.log(err);
} else {
if (body.errcode !== 0) {
console.log(body);
} else {
console.log("发送成功");
}
}
});
}
3.其中appid,secret,template_id(模板id)都可以获取,而最重要的openid,该在哪获取呢。
4.在小程序开发者平台找到开发管理中的消息订阅打开,配置好你的接口,即微信会向你推送点击用户的openid和其他信息
5.最后,只需在特定环境下,向该用户发送消息即可