微信公衆平臺開發教程(二) 基本原理及消息接口

微信公衆平臺開發教程(二) 基本原理及消息接口

1、基本原理

在開始作以前,你們可能對這個很感興趣,可是又比較茫然。是否是很複雜?很難學啊?php

其實偏偏相反,很簡單。爲了打消你們的顧慮,先簡單介紹了微信公衆平臺的基本原理。瀏覽器

微信服務器就至關於一個轉發服務器,終端(手機、Pad等)發起請求至微信服務器,微信服務器,而後將請求轉發給自定義服務(這就裏就是咱們的具體實現)。服務器

服務處理完畢,而後揮發給微信服務器,微信服務器再將具體響應回覆到終端。微信

通訊協議爲:HTTP微信公衆平臺

數據格式爲:XMLcurl

具體的流程以下圖所示:this

其實,咱們須要作的事情,就是對HTTP請求,作出響應。加密

具體的請求內容,咱們按照特定的XML格式去解析,處理完畢後,也要按照特定的XML格式返回。url

咱們只須要一個簡單的實現HttpHandler便可。spa

固然,微信平臺還能實現更加複雜的業務,好比微信能夠做爲內嵌的瀏覽器,咱們能夠經過微信的連接,打開htm界面,而後實現本身的邏輯。 

 

2、消息接口(官方文檔)

申請消息接口

點擊申請,填寫網址url和token,其中token可由開發者能夠任意填寫,用做生成簽名。


填寫信息

網址接入

公衆平臺用戶提交信息後,微信服務器將發送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>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[EVENT]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>
參數 描述
ToUserName 接收方微信號
FromUserName 發送方微信號,若爲普通用戶,則是一個OpenID
CreateTime 消息建立時間
MsgType 消息類型,event
Event 事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(自定義菜單點擊事件)
EventKey 事件KEY值,與自定義菜單接口中KEY值對應

消息回覆

對於每個POST請求,開發者在響應包中返回特定xml結構,對該消息進行響應(現支持回覆文本、圖文、語音、視頻、音樂)。

微信服務器在五秒內收不到響應會斷掉鏈接。

回覆xml結構以下:

回覆文本消息

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>12345678</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[content]]></Content>
 </xml>
參數 描述
ToUserName 接收方賬號(收到的OpenID)
FromUserName 開發者微信號
CreateTime 消息建立時間
MsgType text
Content 回覆的消息內容,長度不超過2048字節

回覆音樂消息

 <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>
 </xml>
參數 描述
ToUserName 接收方賬號(收到的OpenID)
FromUserName 開發者微信號
CreateTime 消息建立時間
MsgType music
MusicUrl 音樂連接
HQMusicUrl 高質量音樂連接,WIFI環境優先使用該連接播放音樂

回覆圖文消息

 <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>
 </xml> 
參數 描述
ToUserName 接收方賬號(收到的OpenID)
FromUserName 開發者微信號
CreateTime 消息建立時間
MsgType news
ArticleCount 圖文消息個數,限制爲10條之內
Articles 多條圖文消息信息,默認第一個item爲大圖
Title 圖文消息標題
Description 圖文消息描述
PicUrl 圖片連接,支持JPG、PNG格式,較好的效果爲大圖640*320,小圖80*80。
Url 點擊圖文消息跳轉連接

官方接口文檔:http://mp.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E6%8C%87%E5%8D%97

注意事項

1.用戶OpenID對一個公衆號是固定惟一的串

2.請使用80端口

盡請關注:後續咱們將全面講解具體的開發過程。

3、消息類圖

 

相關文章
相關標籤/搜索