微信公眾平臺API介面開發教程
阿新 • • 發佈:2019-01-29
簡介
文字訊息
圖片訊息
地理位置訊息
連結訊息
事件推送
回覆音樂訊息
注意事項
微信公眾平臺訊息介面為開發者提供了一種新的訊息處理方式。微信公眾平臺訊息介面為開發者提供與使用者進行訊息互動的能力。對於成功接入訊息介面的微信公眾賬號,當用戶發訊息給公眾號,微信公眾平臺伺服器會使用http請求對接入的網址進行訊息推送,第三方伺服器可通過響應包回覆特定結構,從而達到回覆訊息的目的。
申請訊息介面點選申請,填寫網址url和token,其中token可由開發者可以任意填寫,用作生成簽名。
網址接入公眾平臺使用者提交資訊後,微信伺服器將傳送GET請求到填寫的URL上,並且帶上四個引數:
引數 | 描述 |
---|---|
signature | 微信加密簽名 |
timestamp | 時間戳 |
nonce | 隨機數 |
echostr | 隨機字串 |
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr引數內容,則接入生效,否則接入失敗。
signature結合了開發者填寫的token引數和請求中的timestamp引數、nonce引數。
加密/校驗流程:
- 將token、timestamp、nonce三個引數進行字典序排序
- 將三個引數字串拼接成一個字串進行sha1加密
- 開發者獲得加密後的字串可與signature對比,標識該請求來源於微信
當普通微信使用者向公眾賬號發訊息時,微信伺服器將POST該訊息到填寫的URL上。結構如下:
<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 | 開發者微訊號 |
FromUserName | 傳送方帳號(一個OpenID) |
CreateTime | 訊息建立時間 (整型) |
MsgType | text |
Content | 文字訊息內容 |
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 | 開發者微訊號 |
FromUserName | 傳送方帳號(一個OpenID) |
CreateTime | 訊息建立時間 (整型) |
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 | 開發者微訊號 |
FromUserName | 傳送方帳號(一個OpenID) |
CreateTime | 訊息建立時間 (整型) |
MsgType | location |
Location_X | 地理位置維度 |
Location_Y | 地理位置經度 |
Scale | 地圖縮放大小 |
Label | 地理位置資訊 |
MsgId | 訊息id,64位整型 |
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</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 | 點選圖文訊息跳轉連結 |
- 使用者OpenID對一個公眾號是固定唯一的串
- 請使用80埠
- 使用者關注公眾號,微信公眾平臺伺服器推送一條內容為Hello2BizUser的文字訊息到第三方伺服器