前(qian)段時間研究了下(xia)微信模板(ban)消息:服務通知(zhi)(開發api://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)我在過程(cheng)中遇到的(de)keng,就是post傳的(de) form_id(前(qian)提就是在微 ...
前段時間研究了下微信模板消息:服務(wu)通知(開發api://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html)
我在(zai)過(guo)程(cheng)中遇到的(de)keng,就(jiu)是(shi)post傳的(de) form_id(前提就(jiu)是(shi)在(zai)微信后(hou)臺已經添加(jia)了消息模板(ban))
form_id 表單提交場景下,為 submit 事件帶上的 formId;
支付場景下(xia),為本次(ci)支付的 prepay_id
1.表單(dan)提交場景下(需在真機(ji)上運(yun)行)
<form bindsubmit="formSubmit" report-submit = 'true'></form>js:里面獲(huo)取(qu)e.detail.
Page({ formSubmit: function(e) { console.log('form發生了submit事件,攜帶數據(ju)為(wei):', e.detail.value)}})

當小伙伴看到,上面(mian)的 formId:"the formId is a mock one ",這(zhe)是(shi)因為(wei)你在(zai)微信(xin)開發(fa)器上面(mian)運(yun)行的,那就是(shi)要在(zai)真機上運(yun)行
2.支付場景下(xia)
a.$prepay_id = str_replace('prepay_id=', '', $data['package']);需要(yao)后(hou)端(duan)同學(xue)在調微信支付接口(kou)的(de)時候,獲(huo)取(qu)package 里面(mian)(mian)的(de) prepay_id,我是存儲起來了(le),然后(hou)我放在notify 支付成功里面(mian)(mian)的(de),OK 完成
分(fen)享者:蘇桃子,原文(wen)地址 一開始的時候下發模板消息(xi)(xi)是在微信吊起支付成功后觸發,此時發現(xian)模板消息(xi)(xi)有時好用,偶爾不好用,不好用的還是報(bao)錯是 41028,form_id不正(zheng)確,或者過期。問詢了一些前(qian)輩(bei)才(cai)知道是存在網絡延遲,導致(zhi)不起作用,采用定時器這種(zhong)發現(xian),循(xun)環(huan)調用模板消息(xi)(xi),在
調用(yong)成功后停止定時器。
給(gei)一個具(ju)體的例(li)子:
var time = setInterval(function () {tem();//定時發(fa)起模板(ban)消息請求(qiu),校驗}, 5000)function tem(){ var l = '//api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN; var g = { touser: openId, template_id: '申請的模板id', page: '模板入口頁(ye)面', form_id: 本次(ci)支(zhi)付的prepay_id, //只有在支(zhi)付成功時 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, //模板數據(ju)method: 'POST',success: function (res) {if (res.data.errcode == 0) {console.log("sucess");clearInterval(time);}console.log(res);// wx.showToast({// title: '訂單支付(fu)成功',// 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")}});};}另外有一個問(wen)題(ti)是 在微信吊起支付(fu)(fu),支付(fu)(fu)完(wan)成(cheng)后點擊完(wan)成(cheng)才會發(fa)送模(mo)板消(xiao)息 這一點問(wen)了(le)很多人 不知道(dao)怎么(me)解決 ,如(ru)果有方案歡飲溝通(tong)。