微信開發者平台存取指南
存取指南
存取概述
存取微信公眾平台開發,開發者需要依照下列步驟完成:
- 填寫伺服器設定
- 驗證伺服器位址的有效性
- #依據介面文件實作業務邏輯
#以下詳細介紹這3個步驟。
第一步:填寫伺服器設定
#登入微信公眾平台官網後,在公眾平台官網的開發-基本設置頁面,勾選協定成為開發者,點選「修改設定」按鈕,填寫伺服器位址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信訊息和事件的介面URL。 Token可由開發者可任意填寫,用作生成簽章(此Token會和介面URL中所包含的Token進行比對,從而驗證安全性)。 EncodingAESKey由開發者手動填寫或隨機生成,將用作訊息體加解密金鑰。
同時,開發者可選擇訊息加上解密方式:明文模式、相容模式和安全模式。模式的選擇與伺服器配置在提交後都會立即生效,請開發者謹慎填寫及選擇。加解密方式的預設狀態為明文模式,選擇相容模式與安全模式需事先配置相關加解密程式碼。
第二步:驗證訊息的確是來自微信伺服器
開發者提交資料後,微信伺服器將發送GET請求到填寫的伺服器位址URL上,GET請求攜帶參數如下表所示:
參數 | #描述 |
#微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。 | |
timestamp | 時間戳記 |
#nonce | 隨機數字 |
echostr | 隨機字串 |
開發者透過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此GET請求來自微信伺服器,請原樣回傳echostr參數內容,則存取生效,成為開發者成功,否則存取失敗。加密/校驗流程如下:
#1)將token、timestamp、nonce三個參數進行字典序排序 |
2)將三個參數字串拼接成一個字串進行sha1加密 |
3)開發者取得加密後的字串可與signature對比,標識該請求來自微信 |
檢驗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; } }
##第三步:依據介面文件實現業務邏輯