【微信開發】微信公衆平臺接入

成爲微信開發者的第一步——微信公衆平臺接入

第一步:填寫服務器配置

在開發->基本配置處啓用服務器配置。修改配置安全

其中URL是開發者用來接收微信消息和事件的接口URL。服務器

Token可由開發者能夠任意填寫,用做生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。微信

EncodingAESKey由開發者手動填寫或隨機生成,將用做消息體加解密密鑰。微信開發

點擊提交微信公衆平臺

第二步:驗證服務器地址的有效性

    開發者提交信息後,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶四個參數:函數

    signature ------  微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。this

    timestamp  ------時間戳加密

    nonce  ------  隨機數spa

    echostr  ------  隨機字符串code

    開發者經過檢驗signature對請求進行校驗(下面有校驗方式)。若確認這次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成爲開發者成功,不然接入失敗。

    //獲取接口Token值和UID
        $memberModel = D('Member');
        $userinfo = $memberModel -> getWechatInfo(WID);
        
        //獲取用戶的微信帳號信息 
        $weixinLogic = D('Weixin','Logic');
        $weixin = $weixinLogic -> detail(WID);
        
        $weixin = new ThinkWechat($userinfo['token']);

    在微信公共函數裏面,檢驗signature:

if(IS_GET){
            $this->auth($token) || die('token信息錯誤');
            exit($_GET['echostr']);
        }
        
 /**
     * 對數據進行簽名認證,確保是微信發送的數據
     * @param  string $token 微信開放平臺設置的TOKEN
     * @return boolean       true-簽名正確,false-簽名錯誤
     */
    private function auth($token){
        /* 獲取數據 */
        $data = array($_GET['timestamp'], $_GET['nonce'], $token);
        $sign = $_GET['signature'];
        
        /* 對數據進行字典排序 */
        sort($data, SORT_STRING);

        /* 生成簽名 */
        $signature = sha1(implode($data));

        return $signature === $sign;
    }

    注意:此後用戶每次向公衆號發送消息、或者產生自定義菜單點擊事件時,開發者填寫的服務器配置URL將獲得微信服務器推送過來的消息和事件,而後開發者能夠依據自身業務邏輯進行響應,例如回覆消息等。

 

© 著做權歸做者全部

相關文章
相關標籤/搜索