簡介
微信接口開發及公眾平台訊息接口為開發者提供了一種新的訊息處理方式。
網址接入
公眾平台用戶提交信息後,微信伺服器將傳送GET請求到填寫的URL上,並且帶上四個參數:
參數 | 描述 |
signature | 微信加密簽名 |
timestamp | 時間戳 |
nonce | 隨機數 |
echostr | 隨機字元串 |
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。
signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
加密/校驗流程:
1. 將token、timestamp、nonce三個參數進行字典序排序
2. 將三個參數字元串拼接成一個字元串進行sha1加密
3. 開發者獲得加密後的字元串可與signature對比,標識該請求來源於微信
訊息推送
當普通微信用戶向公眾賬號發訊息時,微信伺服器將POST該訊息到填寫的URL上。結構如下:
文本訊息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>***********</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
參數 | 描述 |
ToUserName | 接收方帳號(一個OpenID) |
FromUserName | 開發者微信號 |
CreateTime | 訊息創建時間 (整型) |
MsgType | text |
Content | 文本訊息內容 |
MsgId | 訊息id,64位整型 |
圖片訊息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>********</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]></PicUrl>
<MsgId>1234567890123456</MsgId>
</xml>
參數 | 描述 |
ToUserName | 開發者微信號 |
FromUserName | 傳送方帳號(一個OpenID) |
CreateTime | 訊息創建時間 (整型) |
MsgType | image |
PicUrl | 圖片連結 |
MsgId | 訊息id,64位整型 |
地理位置訊息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>************</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 | 開發者微信號 |
FromUserName | 傳送方帳號(一個OpenID) |
CreateTime | 訊息創建時間 (整型) |
MsgType | location |
Location_X | 地理位置緯度 |
Location_Y | 地理位置經度 |
Scale | 地圖縮放大小 |
Label | 地理位置信息 |
MsgId | 訊息id,64位整型 |
連結訊息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>***********</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公眾平台官網連結]]></Title>
<Description><![CDATA[公眾平台官網連結]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
參數 | 描述 |
ToUserName | 接收方微信號 |
FromUserName | 傳送方微信號,若為普通用戶,則是一個OpenID |
CreateTime | 訊息創建時間 |
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 | 傳送方微信號,若為普通用戶,則是一個OpenID |
CreateTime | 訊息創建時間 |
MsgType | 訊息類型,event |
Event | 事件類型,有ENTER(進入會話)和LOCATION(地理位置) |
Latitude | 地理位置維度,事件類型為LOCATION的時存在 |
Longitude | 地理位置經度,事件類型為LOCATION的時存在 |
Precision | 地理位置精度,事件類型為LOCATION的時存在 |
訊息回復
對於每一個POST請求,開發者在回響包中返回特定xml結構,對該訊息進行回響(現支持回復文本、圖文、語音、視頻、 音樂和對收到的訊息進行星標操作)。
微信伺服器在 五秒內收不到回響會斷掉連線。
回復xml結構如下:
回復文本訊息
<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 | 開發者微信號 |
CreateTime | 訊息創建時間 |
MsgType | text |
Content | 回復的訊息內容 |
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 | 開發者微信號 |
CreateTime | 訊息創建時間 |
MsgType | music |
MusicUrl | 音樂連結 |
HQMusicUrl | 高質量音樂連結,WIFI環境優先使用該連結播放音樂 |
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 | 開發者微信號 |
CreateTime | 訊息創建時間 |
MsgType | news |
ArticleCount | 圖文訊息個數,限制為10條以內 |
Articles | 多條圖文訊息信息,默認第一個item為大圖 |
Title | 圖文訊息標題 |
Description | 圖文訊息描述 |
PicUrl | 圖片連結,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80,限制圖片連結的域名需要與開發者填寫的基本資料中的Url一致 |
Url | 點擊圖文訊息跳轉連結 |
注意事項
1.用戶OpenID對一個公眾號是固定唯一的串
2.請使用80連線埠
3.用戶關注公眾號,微信公眾平台伺服器推送一條內容為Hello2BizUser的文本訊息到第三方伺服器