前段時間研究了下微信模板消息:服務通知(開發api:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)我在過程中遇到的keng,就是post傳的 form_id(前提就是在微 ...
前段時間研究了下微信模板消息:服務通知(開發api:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)
我在過程中遇到的keng,就是post傳的 form_id(前提就是在微信后臺已經添加了消息模板)
form_id 表單提交場景下,為 submit 事件帶上的 formId;
支付場景下,為本次支付的 prepay_id
1.表單提交場景下(需在真機上運行)
<form bindsubmit="formSubmit" report-submit = 'true'></form>
js:里面獲取e.detail.
Page({
formSubmit: function(e) {
console.log('form發生了submit事件,攜帶數據為:', e.detail.value)
}
})
當小伙伴看到,上面的 formId:"the formId is a mock one ",這是因為你在微信開發器上面運行的,那就是要在真機上運行
2.支付場景下
a.$prepay_id = str_replace('prepay_id=', '', $data['package']);
需要后端同學在調微信支付接口的時候,獲取package 里面的 prepay_id,我是存儲起來了,然后我放在notify 支付成功里面的,OK 完成
分享者:蘇桃子,原文地址 一開始的時候下發模板消息是在微信吊起支付成功后觸發,此時發現模板消息有時好用,偶爾不好用,不好用的還是報錯是 41028,form_id不正確,或者過期。問詢了一些前輩才知道是存在網絡延遲,導致不起作用,采用定時器這種發現,循環調用模板消息,在
調用成功后停止定時器。
給一個具體的例子:
var time = setInterval(function () {
tem();//定時發起模板消息請求,校驗
}, 5000)
function tem(){
var l = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN;
var g = {
touser: openId,
template_id: '申請的模板id',
page: '模板入口頁面',
form_id: 本次支付的prepay_id, //只有在支付成功時 form_id 才有值
data: {
"keyword1": {
"value":key1,
"color": "#4a4a4a"
},
"keyword2": {
"value": key2,
"color": "#9b9b9b"
},
"keyword3": {
"value": key3,
"color": "#9b9b9b"
},
"keyword4": {
"value": key4,
"color": "#9b9b9b"
},
"keyword5": {
"value": key5,
"color": "#172177"
},
},
emphasis_keyword: 'keyword1.DATA' //模板需要放大的關鍵詞
}
wx.request({
url: l, //
data: g, //模板數據
method: 'POST',
success: function (res) {
if (res.data.errcode == 0) {
console.log("sucess");
clearInterval(time);
}
console.log(res);
// wx.showToast({
// title: '訂單支付成功',
// icon: 'success',
// duration: 1000
// })
},
fail: function (err) {
// fail
console.log("push err")
console.log(err);
// 測試
wx.showToast({
title: err.errmsg,//'系統繁忙'
icon: 'success',
duration: 1000
})
},
complete: function (res) {
console.log("tem-complete")
}
});
};
}
另外有一個問題是 在微信吊起支付,支付完成后點擊完成才會發送模板消息 這一點問了很多人 不知道怎么解決 ,如果有方案歡飲溝通。