微信服務器配置令牌(Token)


 

實現步驟: 
第一步:填寫服務器配置 
登錄微信公眾平台官網后,在公眾平台后台管理頁面 - 開發者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信消息和事件的接口URL。Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。

同時,開發者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交后都會立即生效,請開發者謹慎填寫及選擇。加解密方式的默認狀態為明文模式,選擇兼容模式和安全模式需要提前配置好相關加解密代碼,詳情請參考消息體簽名及加解密部分的文檔。

第二步:驗證服務器地址的有效性 
開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶四個參數: 
signature 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。 
timestamp 時間戳 
nonce 隨機數 
echostr 隨機字符串 
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。 
加密/校驗流程如下: 
1. 將token、timestamp、nonce三個參數進行字典序排序 
2. 將三個參數字符串拼接成一個字符串進行sha1加密 
3. 開發者獲得加密后的字符串可與signature對比,標識該請求來源於微信。

 利用修改配置中的提交驗證TOKEN是否驗證成功!(寫好代碼上傳的到服務器,直接提交配置就行,配置的路徑要保證和URL

一致)

 //判斷是介入還是用戶  只有第一次介入的時候才會返回echostr
    public function index(){
        //這個echostr呢  只有說驗證的時候才會echo  如果是驗證過之后這個echostr是不存在的字段了
        $echoStr = $_GET["echostr"];
        if ($this->checkSignature()) {
            echo $echoStr;
            //如果你不知道是否驗證成功  你可以先echo echostr 然后再寫一個東西
            exit;
        }
    }
    
    //驗證微信開發者模式接入是否成功
    private function checkSignature(){
        //signature 是微信傳過來的 類似於簽名的東西
        $signature = $_GET["signature"];
        //微信發過來的東西
        $timestamp = $_GET["timestamp"];
        //微信傳過來的值  什么用我不知道...
        $nonce     = $_GET["nonce"];
        //定義你在微信公眾號開發者模式里面定義的token
        $token  = "kudiansbao12";
        //三個變量 按照字典排序 形成一個數組
        $tmpArr = array(
            $token,
            $timestamp,
            $nonce
        );
        // use SORT_STRING rule
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        //哈希加密  在laravel里面是Hash::
        $tmpStr = sha1($tmpStr);
        //按照微信的套路 給你一個signature沒用是不可能的 這里就用得上了
        if ($tmpStr == $signature) {
            return true;  //一定要返回 不要echo 負責微信拿不到返回值導致不通過
        } else {
            return false;
        }
    }// checkSignature end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM