溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

微信公眾平臺(tái)開(kāi)發(fā)中的基本原理及消息接口是怎樣的

發(fā)布時(shí)間:2021-09-16 14:02:31 來(lái)源:億速云 閱讀:130 作者:柒染 欄目:開(kāi)發(fā)技術(shù)

微信公眾平臺(tái)開(kāi)發(fā)中的基本原理及消息接口是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

一、基本原理

在開(kāi)始做之前,大家可能對(duì)這個(gè)很感興趣,但是又比較茫然。是不是很復(fù)雜?很難學(xué)???

其實(shí)恰恰相反,很簡(jiǎn)單。為了打消大家的顧慮,先簡(jiǎn)單介紹了微信公眾平臺(tái)的基本原理。

微信服務(wù)器就相當(dāng)于一個(gè)轉(zhuǎn)發(fā)服務(wù)器,終端(手機(jī)、Pad等)發(fā)起請(qǐng)求至微信服務(wù)器,微信服務(wù)器,然后將請(qǐng)求轉(zhuǎn)發(fā)給自定義服務(wù)。

服務(wù)處理完畢,然后揮發(fā)給微信服務(wù)器,微信服務(wù)器再將具體響應(yīng)回復(fù)到終端。

通信協(xié)議為:HTTP

數(shù)據(jù)格式為:XML

具體的流程如下圖所示:

微信公眾平臺(tái)開(kāi)發(fā)中的基本原理及消息接口是怎樣的

其實(shí),我們需要做的事情,就是對(duì)HTTP請(qǐng)求,做出響應(yīng)。

具體的請(qǐng)求內(nèi)容,我們按照特定的XML格式去解析,處理完畢后,也要按照特定的XML格式返回。

我們只需要一個(gè)簡(jiǎn)單的實(shí)現(xiàn)HttpHandler即可。

當(dāng)然,微信平臺(tái)還能實(shí)現(xiàn)更加復(fù)雜的業(yè)務(wù),比如微信可以作為內(nèi)嵌的瀏覽器,我們可以通過(guò)微信的鏈接,打開(kāi)htm界面,然后實(shí)現(xiàn)自己的邏輯。

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

申請(qǐng)消息接口

點(diǎn)擊申請(qǐng) ,填寫(xiě)網(wǎng)址url和token,其中token可由開(kāi)發(fā)者可以任意填寫(xiě),用作生成簽名。

網(wǎng)址接入

公眾平臺(tái)用戶(hù)提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫(xiě)的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ā)者填寫(xiě)的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ù)向公眾賬號(hào)發(fā)消息時(shí),微信服務(wù)器將POST該消息到填寫(xiě)的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í)間 (整型)
MsgTypetext
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í)間 (整型)
MsgTypeimage
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í)間 (整型)
MsgTypelocation
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),若為普通用戶(hù),則是一個(gè)OpenID
CreateTime消息創(chuàng)建時(shí)間
MsgType消息類(lèi)型,link
Title消息標(biāo)題
Description消息描述
Url消息鏈接
MsgId消息id,64位整型

事件推送

事件推送只支持微信4.5版本,目前開(kāi)啟自定義菜單接口事件推送、關(guān)注與取消關(guān)注事件推送。其余功能即將開(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),若為普通用戶(hù),則是一個(gè)OpenID
CreateTime消息創(chuàng)建時(shí)間
MsgType消息類(lèi)型,event
Event事件類(lèi)型,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è))。

微信服務(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>
 </xml>
參數(shù)描述
ToUserName接收方帳號(hào)(收到的OpenID)
FromUserName開(kāi)發(fā)者微信號(hào)
CreateTime消息創(chuàng)建時(shí)間
MsgTypetext
Content回復(fù)的消息內(nèi)容,長(zhǎng)度不超過(guò)2048字節(jié)

回復(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>
 </xml>
參數(shù)描述
ToUserName接收方帳號(hào)(收到的OpenID)
FromUserName開(kāi)發(fā)者微信號(hào)
CreateTime消息創(chuàng)建時(shí)間
MsgTypemusic
MusicUrl音樂(lè)鏈接
HQMusicUrl高質(zhì)量音樂(lè)鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂(lè)

回復(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>
 </xml>
參數(shù)描述
ToUserName接收方帳號(hào)(收到的OpenID)
FromUserName開(kāi)發(fā)者微信號(hào)
CreateTime消息創(chuàng)建時(shí)間
MsgTypenews
ArticleCount圖文消息個(gè)數(shù),限制為10條以?xún)?nèi)
Articles多條圖文消息信息,默認(rèn)第一個(gè)item為大圖
Title圖文消息標(biāo)題
Description圖文消息描述
PicUrl圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80。
Url點(diǎn)擊圖文消息跳轉(zhuǎn)鏈接

官方接口文檔: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

注意事項(xiàng)

1.用戶(hù)OpenID對(duì)一個(gè)公眾號(hào)是固定唯一的串

2.請(qǐng)使用80端口

盡請(qǐng)關(guān)注:后續(xù)我們將全面講解具體的開(kāi)發(fā)過(guò)程。

三、消息類(lèi)圖

微信公眾平臺(tái)開(kāi)發(fā)中的基本原理及消息接口是怎樣的

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI