在做毕设中,我遇到这么一个使用场景:当顾客购买某个商家的商品后,那这个商家应该要收到通知信息,提示你家商品被购买了,故有了以下代码
// 微信小程序js代码
onSubmit: function() { // 用户点击确认支付
// 用户应该点击允许,同意提醒信息订阅
wx.requestSubscribeMessage({
// 模板id:可以在微信公众平台 -> 功能 -> 订阅信息进行选择
tmplIds: ['R9HL-i-3vFAzUMxmvcjfGWS8m_mvojr1rlhWZrmlsO0'],
success: res => {
console.log(res)
},
fail: e => {
console.log(e)
}
})
wx.request({
url: url, // 调用后端接口
method: 'GET',
success: res => {
// 购买成功后调用tipSeller方法
this.tipSeller()
}
})
},
tipSeller: function() {
wx.request({
url: url + 'home/tip', // 后端接口
method: 'POST',
header: {
'content-type': 'application/json'
},
data: {
saledTime: util.formatTime(new Date()), // 商品被购买时间
goods_name: this.data.goods_name, // 商品名称
touser: this.data.seller_id // 商家的id,这个id表示要提醒的人,这里主要是为了提醒商家,他家商品被购买了
},
success: res => {
console.log(res)
},
fail: e => {
console.log(e)
}
})
},
// 下面是后端node的代码
home.post('/tip', async (ctx, next) => {
let formData = ctx.request.body
const APP_ID = "appid" // 小程序的appid和密钥需要去微信公众平台找
const APP_SECRET = "app_secret"
const APP_URL = 'https://api.weixin.qq.com/cgi-bin/token'
const getTokenUrl = `${APP_URL}?appid=${APP_ID}&secret=${APP_SECRET}&grant_type=client_credential`
// 获取用户的access_token
let user_access_token = await new Promise((resolve, reject) => {
return request(getTokenUrl, (error, response, body) => {
resolve(JSON.parse(body))
})
})
let sendUrl = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + user_access_token.access_token
let tmpData = {
"access_token": user_access_token.access_token,
"touser": formData.touser,
"template_id": "xxxx", // 信息模板id
"page": "pages/xxx/xxx", // 指定点击提醒信息跳转到小程序的页面
"miniprogram_state":"developer",
"lang":"zh_CN",
"data": {
"thing1": {
"value": "您的商品已被购买"
},
"thing3": {
"value": formData.goods_name
},
"time14": {
"value": formData.saledTime
},
},
}
// 发送信息模板
let sendRes = await new Promise((resolve, reject) => {
return request({
url: sendUrl,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: tmpData
}, (error, response, body) => {
resolve(body)
})
})
ctx.body = {
msg: sendRes
}
})