微信公众平台消息接口API指南
?
下述文檔已過期,更加完整及詳細的請訪問 ?http://www.cnblogs.com/txw1958/p/wechat-tutorial.html
?
簡介
微信公眾平臺消息接口為開發(fā)者提供了一種新的消息處理方式。微信公眾平臺消息接口為開發(fā)者提供與用戶進行消息交互的能力。對于成功接入消息接口的微信公眾賬號,當用戶發(fā)消息給公眾號,微信公眾平臺服務器會使用http請求對接入的網(wǎng)址進行消息推送,第三方服務器可通過響應包回復特定結(jié)構(gòu),從而達到回復消息的目的。
申請消息接口
點擊申請,填寫網(wǎng)址url和token,其中token可由開發(fā)者可以任意填寫,用作生成簽名。
網(wǎng)址接入
公眾平臺用戶提交信息后,微信服務器將發(fā)送GET請求到填寫的URL上,并且?guī)纤膫€參數(shù):
| signature | 微信加密簽名 |
| timestamp | 時間戳 |
| nonce | 隨機數(shù) |
| echostr | 隨機字符串 |
開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。
signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。
加密/校驗流程: 1. 將token、timestamp、nonce三個參數(shù)進行字典序排序 2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密 3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信消息推送
當普通微信用戶向公眾賬號發(fā)消息時,微信服務器將POST該消息到填寫的URL上。結(jié)構(gòu)如下:
文本消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[this is a test]]></Content><MsgId>1234567890123456</MsgId></xml>| ToUserName | 開發(fā)者微信號 |
| FromUserName | 發(fā)送方帳號(一個OpenID) |
| CreateTime | 消息創(chuàng)建時間 (整型) |
| MsgType | text |
| Content | 文本消息內(nèi)容 |
| MsgId | 消息id,64位整型 |
?
圖片消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[image]]></MsgType><PicUrl><![CDATA[this is a url]></PicUrl><MsgId>1234567890123456</MsgId></xml>| ToUserName | 開發(fā)者微信號 |
| FromUserName | 發(fā)送方帳號(一個OpenID) |
| CreateTime | 消息創(chuàng)建時間 (整型) |
| MsgType | image |
| PicUrl | 圖片鏈接 |
| MsgId | 消息id,64位整型 |
?
地理位置消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId> </xml>| ToUserName | 開發(fā)者微信號 |
| FromUserName | 發(fā)送方帳號(一個OpenID) |
| CreateTime | 消息創(chuàng)建時間 (整型) |
| MsgType | location |
| Location_X | 地理位置維度 |
| Location_Y | 地理位置經(jīng)度 |
| Scale | 地圖縮放大小 |
| Label | 地理位置信息 |
| MsgId | 消息id,64位整型 |
?
鏈接消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[公眾平臺官網(wǎng)鏈接]]></Title> <Description><![CDATA[公眾平臺官網(wǎng)鏈接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId> </xml>| ToUserName | 接收方微信號 |
| FromUserName | 發(fā)送方微信號,若為普通用戶,則是一個OpenID |
| CreateTime | 消息創(chuàng)建時間 |
| MsgType | 消息類型,link |
| Title | 消息標題 |
| Description | 消息描述 |
| Url | 消息鏈接 |
| MsgId | 消息id,64位整型 |
?
事件推送
事件推送只支持微信4.5版本,即將開放,敬請期待。
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[LOCATION]]></Event> <Latitude>23.137466</Latitude> <Longitude>113.352425</Longitude> <Precision>119.385040</Precision> </xml>| ToUserName | 接收方微信號 |
| FromUserName | 發(fā)送方微信號,若為普通用戶,則是一個OpenID |
| CreateTime | 消息創(chuàng)建時間 |
| MsgType | 消息類型,event |
| Event | 事件類型,有ENTER(進入會話)和LOCATION(地理位置) |
| Latitude | 地理位置維度,事件類型為LOCATION的時存在 |
| Longitude | 地理位置經(jīng)度,事件類型為LOCATION的時存在 |
| Precision | 地理位置精度,事件類型為LOCATION的時存在 |
消息回復
對于每一個POST請求,開發(fā)者在響應包中返回特定xml結(jié)構(gòu),對該消息進行響應(現(xiàn)支持回復文本、圖文、語音、視頻、音樂和對收到的消息進行星標操作)。
微信服務器在五秒內(nèi)收不到響應會斷掉連接。
回復xml結(jié)構(gòu)如下:
回復文本消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[content]]></Content><FuncFlag>0</FuncFlag></xml>| ToUserName | 接收方帳號(收到的OpenID) |
| FromUserName | 開發(fā)者微信號 |
| CreateTime | 消息創(chuàng)建時間 |
| MsgType | text |
| Content | 回復的消息內(nèi)容 |
| FuncFlag | 位0x0001被標志時,星標剛收到的消息。 |
?
回復音樂消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[TITLE]]></Title><Description><![CDATA[DESCRIPTION]]></Description><MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl><HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl></Music><FuncFlag>0</FuncFlag></xml>| ToUserName | 接收方帳號(收到的OpenID) |
| FromUserName | 開發(fā)者微信號 |
| CreateTime | 消息創(chuàng)建時間 |
| MsgType | music |
| MusicUrl | 音樂鏈接 |
| HQMusicUrl | 高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂 |
| FuncFlag | 位0x0001被標志時,星標剛收到的消息。 |
?
回復圖文消息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title><![CDATA[title1]]></Title> <Description><![CDATA[description1]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item><item><Title><![CDATA[title]]></Title><Description><![CDATA[description]]></Description><PicUrl><![CDATA[picurl]]></PicUrl><Url><![CDATA[url]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>| ToUserName | 接收方帳號(收到的OpenID) |
| FromUserName | 開發(fā)者微信號 |
| CreateTime | 消息創(chuàng)建時間 |
| MsgType | news |
| ArticleCount | 圖文消息個數(shù),限制為10條以內(nèi) |
| Articles | 多條圖文消息信息,默認第一個item為大圖 |
| Title | 圖文消息標題 |
| Description | 圖文消息描述 |
| PicUrl | 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80,限制圖片鏈接的域名需要與開發(fā)者填寫的基本資料中的Url一致 |
| Url | 點擊圖文消息跳轉(zhuǎn)鏈接 |
?
?
注意事項
1.用戶OpenID對一個公眾號是固定唯一的串
2.請使用80端口
3.用戶關注公眾號,微信公眾平臺服務器推送一條內(nèi)容為Hello2BizUser的文本消息到第三方服務器
?
更多教程及全部源代碼將在微信中陸續(xù)發(fā)布,請關注方倍工作室微信公眾平臺賬號,然后回復“教程”。?原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/txw1958/archive/2013/03/14/weixin-if0-api.html
總結(jié)
以上是生活随笔為你收集整理的微信公众平台消息接口API指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#+uploadify3.1上传示例,
- 下一篇: 基于用户评价的评分模型