微信開(kāi)發(fā)者平臺(tái)接入指南

2018-07-27 09:49 更新

接入指南



微信開(kāi)發(fā)者平臺(tái)接入指南


接入概述


接入微信公眾平臺(tái)開(kāi)發(fā),開(kāi)發(fā)者需要按照如下步驟完成:

  1. 填寫服務(wù)器配置
  2. 驗(yàn)證服務(wù)器地址的有效性
  3. 依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯

下面詳細(xì)介紹這3個(gè)步驟。


第一步:填寫服務(wù)器配置


登錄微信公眾平臺(tái)官網(wǎng)后,在公眾平臺(tái)官網(wǎng)的開(kāi)發(fā)-基本設(shè)置頁(yè)面,勾選協(xié)議成為開(kāi)發(fā)者,點(diǎn)擊“修改配置”按鈕,填寫服務(wù)器地址(URL)、Token和EncodingAESKey,其中URL是開(kāi)發(fā)者用來(lái)接收微信消息和事件的接口URL。Token可由開(kāi)發(fā)者可以任意填寫,用作生成簽名(該Token會(huì)和接口URL中包含的Token進(jìn)行比對(duì),從而驗(yàn)證安全性)。EncodingAESKey由開(kāi)發(fā)者手動(dòng)填寫或隨機(jī)生成,將用作消息體加解密密鑰。

同時(shí),開(kāi)發(fā)者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務(wù)器配置在提交后都會(huì)立即生效,請(qǐng)開(kāi)發(fā)者謹(jǐn)慎填寫及選擇。加解密方式的默認(rèn)狀態(tài)為明文模式,選擇兼容模式和安全模式需要提前配置好相關(guān)加解密代碼。 


第二步:驗(yàn)證消息的確來(lái)自微信服務(wù)器


開(kāi)發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的服務(wù)器地址URL上,GET請(qǐng)求攜帶參數(shù)如下表所示:

參數(shù)描述
signature微信加密簽名,signature結(jié)合了開(kāi)發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。
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)容,則接入生效,成為開(kāi)發(fā)者成功,否則接入失敗。加密/校驗(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)源于微信


檢驗(yàn)signature的PHP示例代碼:

private function checkSignature()
{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}

PHP示例代碼下載:下載


第三步:依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯


驗(yàn)證URL有效性成功后即接入生效,成為開(kāi)發(fā)者。你可以在公眾平臺(tái)網(wǎng)站中申請(qǐng)微信認(rèn)證,認(rèn)證成功后,將獲得更多接口權(quán)限,滿足更多業(yè)務(wù)需求。


成為開(kāi)發(fā)者后,用戶每次向公眾號(hào)發(fā)送消息、或者產(chǎn)生自定義菜單、或產(chǎn)生微信支付訂單等情況時(shí),開(kāi)發(fā)者填寫的服務(wù)器配置URL將得到微信服務(wù)器推送過(guò)來(lái)的消息和事件,開(kāi)發(fā)者可以依據(jù)自身業(yè)務(wù)邏輯進(jìn)行響應(yīng),如回復(fù)消息。


公眾號(hào)調(diào)用各接口時(shí),一般會(huì)獲得正確的結(jié)果,具體結(jié)果可見(jiàn)對(duì)應(yīng)接口的說(shuō)明。返回錯(cuò)誤時(shí),可根據(jù)返回碼來(lái)查詢錯(cuò)誤原因。


用戶向公眾號(hào)發(fā)送消息時(shí),公眾號(hào)方收到的消息發(fā)送者是一個(gè)OpenID,是使用用戶微信號(hào)加密后的結(jié)果,每個(gè)用戶對(duì)每個(gè)公眾號(hào)有一個(gè)唯一的OpenID。


此外,由于開(kāi)發(fā)者經(jīng)常有需在多個(gè)平臺(tái)(移動(dòng)應(yīng)用、網(wǎng)站、公眾帳號(hào))之間共通用戶帳號(hào),統(tǒng)一帳號(hào)體系的需求,微信開(kāi)放平臺(tái)提供了UnionID機(jī)制。開(kāi)發(fā)者可通過(guò)OpenID來(lái)獲取用戶基本信息,而如果開(kāi)發(fā)者擁有多個(gè)應(yīng)用(移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào),公眾帳號(hào)只有在被綁定到微信開(kāi)放平臺(tái)帳號(hào)下后,才會(huì)獲取UnionID),可通過(guò)獲取用戶基本信息中的UnionID來(lái)區(qū)分用戶的唯一性,因?yàn)橹灰峭粋€(gè)微信開(kāi)放平臺(tái)帳號(hào)下的移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào),用戶的UnionID是唯一的。換句話說(shuō),同一用戶,對(duì)同一個(gè)微信開(kāi)放平臺(tái)帳號(hào)下的不同應(yīng)用,UnionID是相同的。詳情請(qǐng)?jiān)谖⑿砰_(kāi)放平臺(tái)的資源中心-移動(dòng)應(yīng)用開(kāi)發(fā)-微信登錄-授權(quán)關(guān)系接口調(diào)用指引-獲取用戶個(gè)人信息(UnionID機(jī)制)中查看。


另請(qǐng)注意,微信公眾號(hào)接口必須以http://或https://開(kāi)頭,分別支持80端口和443端口。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)