最近公司在做微信開發, 現對一些常用技術作一些總結:
推送應用場景
微信公眾賬號內, 當用戶某個信息發生變化時, 需要即時向用戶推送實時消息, 那么這個時候該怎么處理呢?
推送場景
實現方式
登陸企業版微信公眾賬號, 在模板消息中, 我們可以從微信提供的模板庫選擇我們想要的消息顯示方式:
模板消息
如果里面沒有我們想要的模板, 我們也可以自己生成模板
生成自己的模板
之后, 就可以提交自己的模板了!
設置調用的參數
具體調用方法
第一步: 獲取上面操作的模板的ID
第二步: 請求URL
- POST請求: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
- 請求包為一個json:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"topcolor":"#FF0000",
"data":{
"User": {
"value":"黃先生",
"color":"#173177"
},
"Date":{
"value":"06月07日 19時24分",
"color":"#173177"
},
"CardNumber":{
"value":"0426",
"color":"#173177"
},
"Type":{
"value":"消費",
"color":"#173177"
},
"Money":{
"value":"人民幣260.00元",
"color":"#173177"
},
"DeadTime":{
"value":"06月07日19時24分",
"color":"#173177"
},
"Left":{
"value":"6504.09",
"color":"#173177"
}
}
}
事件推送
在模版消息發送任務完成后,微信服務器會將是否送達成功作為通知,發送到開發者中心中填寫的服務器配置地址中。
- 推送成功時, 推送的xml如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]&g;</FromUserName>
<CreateTime>1395658920</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163836</MsgID>
<Status><![CDATA[success]]></Status>
</xml>
- 送達由于用戶拒收(用戶設置拒絕接收公眾號消息)而失敗時,推送的XML如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
<CreateTime>1395658984</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163840</MsgID>
<Status><![CDATA[failed:user block]]></Status>
</xml>
- 送達由于其他原因失敗時,推送的XML如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
<CreateTime>1395658984</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163840</MsgID>
<Status><![CDATA[failed: system failed]]></Status>
</xml>
返回碼說明
//在調用模板消息接口后,會返回JSON數據包。正常時的返回JSON數據包示例:
{
"errcode":0,
"errmsg":"ok",
"msgid":200228332
}