微信公眾平臺(tái)開(kāi)發(fā)模式消息接口API文檔
簡(jiǎn)介
公眾平臺(tái)消息接口為開(kāi)發(fā)者提供了一種新的消息處理方式。
申請(qǐng)消息接口
點(diǎn)擊申請(qǐng),填寫網(wǎng)址url和token,其中token可由開(kāi)發(fā)者可以任意填寫,用作生成簽名。
網(wǎng)址接入
公眾平臺(tái)用戶提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的URL上,并且?guī)纤膫€(gè)參數(shù):
參數(shù) | 描述 |
---|---|
signature | 微信加密簽名 |
timestamp | 時(shí)間戳 |
nonce | 隨機(jī)數(shù) |
echostr | 隨機(jī)字符串 |
開(kāi)發(fā)者通過(guò)檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請(qǐng)求來(lái)自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。
signature結(jié)合了開(kāi)發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。
加密/校驗(yàn)流程: 1. 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序 2. 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密 3. 開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信
消息推送
當(dāng)普通微信用戶向公眾賬號(hào)發(fā)消息時(shí),微信服務(wù)器將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>
參數(shù) | 描述 |
---|---|
ToUserName | 開(kāi)發(fā)者微信號(hào) |
FromUserName | 發(fā)送方帳號(hào)(一個(gè)OpenID) |
CreateTime | 消息創(chuàng)建時(shí)間 (整型) |
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>
參數(shù) | 描述 |
---|---|
ToUserName | 開(kāi)發(fā)者微信號(hào) |
FromUserName | 發(fā)送方帳號(hào)(一個(gè)OpenID) |
CreateTime | 消息創(chuàng)建時(shí)間 (整型) |
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>
參數(shù) | 描述 |
---|---|
ToUserName | 開(kāi)發(fā)者微信號(hào) |
FromUserName | 發(fā)送方帳號(hào)(一個(gè)OpenID) |
CreateTime | 消息創(chuàng)建時(shí)間 (整型) |
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[公眾平臺(tái)官網(wǎng)鏈接]]></Title> <Description><![CDATA[公眾平臺(tái)官網(wǎng)鏈接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId> </xml>
參數(shù) | 描述 |
---|---|
ToUserName | 接收方微信號(hào) |
FromUserName | 發(fā)送方微信號(hào),若為普通用戶,則是一個(gè)OpenID |
CreateTime | 消息創(chuàng)建時(shí)間 |
MsgType | 消息類型,link |
Title | 消息標(biāo)題 |
Description | 消息描述 |
Url | 消息鏈接 |
MsgId | 消息id,64位整型 |
事件推送
事件推送只支持微信4.5版本,目前僅開(kāi)啟自定義菜單接口事件推送。其余功能即將開(kāi)放,敬請(qǐng)期待。
<xml><ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[EVENT]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>
參數(shù) | 描述 |
---|---|
ToUserName | 接收方微信號(hào) |
FromUserName | 發(fā)送方微信號(hào),若為普通用戶,則是一個(gè)OpenID |
CreateTime | 消息創(chuàng)建時(shí)間 |
MsgType | 消息類型,event |
Event | 事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(自定義菜單點(diǎn)擊事件) |
EventKey | 事件KEY值,與自定義菜單接口中KEY值對(duì)應(yīng) |
消息回復(fù)
對(duì)于每一個(gè)POST請(qǐng)求,開(kāi)發(fā)者在響應(yīng)包中返回特定xml結(jié)構(gòu),對(duì)該消息進(jìn)行響應(yīng)(現(xiàn)支持回復(fù)文本、圖文、語(yǔ)音、視頻、音樂(lè)和對(duì)收到的消息進(jìn)行星標(biāo)操作)。
微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會(huì)斷掉連接。
回復(fù)xml結(jié)構(gòu)如下:
回復(fù)文本消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[content]]></Content> <FuncFlag>0</FuncFlag> </xml>
參數(shù) | 描述 |
---|---|
ToUserName | 接收方帳號(hào)(收到的OpenID) |
FromUserName | 開(kāi)發(fā)者微信號(hào) |
CreateTime | 消息創(chuàng)建時(shí)間 |
MsgType | text |
Content | 回復(fù)的消息內(nèi)容,長(zhǎng)度不超過(guò)2048字節(jié) |
FuncFlag | 位0x0001被標(biāo)志時(shí),星標(biāo)剛收到的消息。 |
回復(fù)音樂(lè)消息
<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>
參數(shù) | 描述 |
---|---|
ToUserName | 接收方帳號(hào)(收到的OpenID) |
FromUserName | 開(kāi)發(fā)者微信號(hào) |
CreateTime | 消息創(chuàng)建時(shí)間 |
MsgType | music |
MusicUrl | 音樂(lè)鏈接 |
HQMusicUrl | 高質(zhì)量音樂(lè)鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂(lè) |
FuncFlag | 位0x0001被標(biāo)志時(shí),星標(biāo)剛收到的消息。 |
回復(fù)圖文消息
<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>
參數(shù) | 描述 |
---|---|
ToUserName | 接收方帳號(hào)(收到的OpenID) |
FromUserName | 開(kāi)發(fā)者微信號(hào) |
CreateTime | 消息創(chuàng)建時(shí)間 |
MsgType | news |
ArticleCount | 圖文消息個(gè)數(shù),限制為10條以內(nèi) |
Articles | 多條圖文消息信息,默認(rèn)第一個(gè)item為大圖 |
Title | 圖文消息標(biāo)題 |
Description | 圖文消息描述 |
PicUrl | 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80。 |
Url | 點(diǎn)擊圖文消息跳轉(zhuǎn)鏈接 |
注意事項(xiàng)
1.用戶OpenID對(duì)一個(gè)公眾號(hào)是固定唯一的串
2.請(qǐng)使用80端口
示例代碼
PHP:下載