1.需求
微信公众号的模板推送功能 当我执行了什么操作以后 需要通知用户 获取
类似这样 这个主要是后端的逻辑
2.实现
①.需要的参数以及配置项
appid secert 主要获取access_token
access_token 是一个令牌
//获取access_token
async getAccessTokenByAppId(appId, appSecret) {
const options = {
url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`,
method: 'GET',
};
return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) {
reject(error);
} else {
console.log(body);
resolve(body); // 这里返回的是 JSON 格式的数据,可以直接解析为对象或数组
}
});
});
}
//微信推送消息模板
async pushData(orderRes, studentInfo, status) {
let seats = '';
orderRes.seatData.forEach(item => {
seats += item.seatName + ',';
});
// console.log(JSON.parse(orderRes.seatData), orderRes.seatData);
console.log(orderRes.seatData, 'orderRes.seatData');
const timestamp = orderRes.showTime; //播放时间
const formattedShowTime = moment(timestamp).format('YYYY-MM-DD HH:mm:ss');
const errorFormatShowTime =
moment(timestamp).format('YYYY年M月D日 HH:mm');
const Config = await this.businessBaseConfigEntity.findOneBy({
userId: orderRes.userId,
});
if (!Config.wechatAppId || !Config.wechatAppSecret) {
throw new CoolCommException('导师未配置公众号信息');
}
const TokenRes: any = await this.getAccessTokenByAppId(
Config.wechatAppId,
Config.wechatAppSecret
);
const access_token = JSON.parse(TokenRes).access_token;
let data1 = {
thing7: {
value: orderRes.cinemaName,
},
thing1: {
value: orderRes.movieName,
},
thing6: {
value: orderRes.hallName,
},
time3: {
value: formattedShowTime,
},
thing2: {
value: orderRes.seatData,
},
};
let data2 = {
thing1: {
value: orderRes.cinemaName,
},
thing2: {
value: orderRes.movieName,
},
thing3: {
value: orderRes.hallName,
},
time4: {
value: errorFormatShowTime,
},
amount6: {
value: orderRes.originalPrice,
},
};
const requestData = {
//发送模板消息的数据
touser: studentInfo.wechatOpenid,
template_id:
status == 1
? Config.wechatSuccessTemplateId
: Config.wechatErrorTemplateId,
// url: 'http://weixin.qq.com/download',
data: status == 1 ? data1 : data2,
};
const options = {
url: `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`,
method: 'POST',
body: requestData,
json: true,
};
return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) {
reject(error);
} else {
console.log(body, '微信推送消息模板');
resolve(body); // 这里返回的是 JSON 格式的数据,可以直接解析为对象或数组
}
});
});
}
当然这个模板 首先是要从微信公众号中申请的 并且 必须是服务号的公众号 才可以
逻辑 以及内容就需要通过自己的业务逻辑来说了
3.总结
这个功能好玩 并且 简单