微信小程式API 存取指引


存取概述


存取微信小程式訊息服務,開發者需要依照下列步驟完成:

1、填入伺服器設定

2、驗證伺服器位址的有效性

3、依據介面文件實作業務邏輯

以下詳細介紹這3個步驟。

第一步:填寫伺服器設定

登入微信小程式官網後,在小程式官網的「設定-訊息伺服器」頁面,管理員掃碼啟用訊息服務,填入伺服器位址(URL)、Token 和EncodingAESKey。

URL是開發者用來接收微信訊息和事件的介面URL。 Token可由開發者可任意填寫,用作生成簽章(此Token會和介面URL中所包含的Token進行比對,從而驗證安全性)。 EncodingAESKey由開發者手動填寫或隨機生成,將用作訊息體加解密金鑰。

同時,開發者可選擇訊息加上解密方式:明文模式、相容模式和安全模式。可以選擇訊息資料格式:XML格式或JSON格式。加密方式的預設狀態是明問格式,而資料格式的預設狀態是XML格式。

模式的選擇與伺服器設定在提交後都會立即生效,請開發者謹慎填寫及選擇。切換加密方式和資料格式需事先配置相關程式碼,詳情請參考訊息加解密說明。

1482806614846296.png

第二步:驗證訊息的確來自微信伺服器

#開發者提交資訊後,微信伺服器將發送GET請求到填寫的伺服器位址URL上,GET請求攜帶參數如下表所示:

參數#描述
signature微信加密簽名,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;
    }
}

第三步:依據介面文件實現業務邏輯

驗證URL有效性成功後即接入生效,成為開發者。當此使用者向小程式客服發送訊息、或進入會話等情況時,開發者填寫的伺服器設定URL將得到微信伺服器推播過來的訊息和事件,開發者可以依據自身業務邏輯回應。

也請注意,開發者所填寫的URL必須以 http:// 或 https:// 開頭,分別支援80埠和443埠。