使用模板消息javascript
登陸https://mp.weixin.qq.com獲取模板,若是沒有合適的模板,能夠申請添加新模板,審覈經過後可以使用,詳見模板審覈說明html
頁面的 <form/>
組件,屬性report-submit
爲true
時,能夠聲明爲需發模板消息,此時點擊按鈕提交表單能夠獲取formId
,用於發送模板消息。或者當用戶完成支付行爲,能夠獲取prepay_id
用於發送模板消息。java
調用接口下發模板消息(詳見接口說明)小程序
access_token 是全局惟一接口調用憑據,開發者調用各接口時都需使用 access_token,請妥善保存。access_token 的存儲至少要保留512個字符空間。access_token 的有效期目前爲2個小時,需定時刷新,重複獲取將致使上次獲取的 access_token 失效。api
公衆平臺的 API 調用所需的 access_token 的使用及生成方式說明:服務器
開發者可使用 AppID 和 AppSecret 調用本接口來獲取 access_token。AppID 和 AppSecret 可登陸微信公衆平臺官網-設置-開發設置中得到(須要已經綁定成爲開發者,且賬號沒有異常狀態)。AppSecret 生成後請自行保存,由於在公衆平臺每次生成查看都會致使 AppSecret 被重置。注意調用全部微信接口時均需使用 https 協議。若是第三方不使用中控服務器,而是選擇各個業務邏輯點各自去刷新 access_token,那麼就可能會產生衝突,致使服務不穩定。微信
接口地址:網絡
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
正常狀況下,微信會返回下述 JSON 數據包給開發者:返回參數說明:app
{"access_token": "ACCESS_TOKEN", "expires_in": 7200}
{"errcode": 40013, "errmsg": "invalid appid"}錯誤時微信會返回錯誤碼等信息,JSON 數據包示例以下(該示例爲 AppID 無效錯誤):微信公衆平臺
接口地址:(ACCESS_TOKEN 需換成上文獲取到的 access_token)
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
HTTP請求方式: POST
eg:
{ "touser": "OPENID", "template_id": "TEMPLATE_ID", "page": "index", "form_id": "FORMID", "data": { "keyword1": { "value": "339208499", "color": "#173177" }, "keyword2": { "value": "2015年01月05日 12:30", "color": "#173177" }, "keyword3": { "value": "粵海喜來登酒店", "color": "#173177" } , "keyword4": { "value": "廣州市天河區天河路208號", "color": "#173177" } }, "emphasis_keyword": "keyword1.DATA" }
返回碼說明: 在調用模板消息接口後,會返回JSON數據包。 正常時的返回JSON數據包示例: { "errcode": 0, "errmsg": "ok", }
支付
當用戶在小程序內完成過支付行爲,可容許開發者向用戶在7天內推送有限條數的模板消息(1次支付可下發1條,屢次支付下發條數獨立,互相不影響)
提交表單
當用戶在小程序內發生過提交表單行爲且該表單聲明爲要發模板消息的,開發者須要向用戶提供服務時,可容許開發者向用戶在7天內推送有限條數的模板消息(1次提交表單可下發1條,屢次提交下發條數獨立,相互不影響)
模板消息填坑指南:
一開始的時候下發模板消息是在微信吊起支付成功後觸發,此時發現模板消息有時好用,偶爾很差用,很差用的仍是報錯是 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") } }); }; }
另外有一個問題是 在微信吊起支付,支付完成後點擊完成纔會發送模板消息 這一點問了不少人 不知道怎麼解決 ,若是有方案歡飲溝通。