微信接口開發

微信接口開發

應用程式編程接口,簡稱API(Application Programming Interface),就是軟體系統不同組成部分銜接的約定。隨著軟體規模的日益龐大,我們需要把複雜系統劃分成小的組成部分,編程接口的設計十分重要。程式設計的實踐中,編程接口的設計首先要使系統的職責得到合理劃分。良好的接口設計可以降低系統各部分的相互依賴,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴展性。

簡介

微信接口開發及公眾平台訊息接口為開發者提供了一種新的訊息處理方式。

網址接入

公眾平台用戶提交信息後,微信伺服器將傳送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的文本訊息到第三方伺服器

相關詞條

熱門詞條

聯絡我們