微信api接入微信驗證的坑!!!(未定義數組索引:signature/nonce/timestamp/echostr)

之前弄微信公衆號開發,在微信api接入驗證這塊遇到了幾個問題,記錄一下踩坑之路。

 

一、官方文檔的接入講解

https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html

 

PHP示例代碼下載:

<a href="https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip" target="_blank" rel="noopener noreferrer">下載<span></span></a>

 

 

 

我已開始是這樣寫的:

        //1.得到微信發過來的timestamp,nonce,token,signature變量

        $timestamp=$_GET['timestamp'];

        $nonce=$_GET['nonce'];

        $token='weixin';

        $signature=$_GET['signature'];

        $echostr=$_GET['echostr'];

 

        //2.對其進行字典序排序併合並後加密

        $array=array($timestamp,$nonce,$token);

        sort($array);

        $string=sha1(implode('', $array));

        //3.再與signature關鍵字進行比較

        if($string==$signature){

            echo $echostr;

            exit;

        }else {

        }

微信驗證確實是能成功,但是訪問就會一直出現這樣的錯誤:

 

 

讓我的微信關注事件的推送消息一直出不來,我寫了一個用戶關注公衆號後會發送 “歡迎關注測試公衆號” 得消息和用戶發文本消息之後,公衆號會回覆相同的文本消息給用戶的邏輯,都會出現問題,搞得我焦頭爛額,不知咋辦。

 

但是當我,把get的請求數據用request來接收後就解決了這兩個問題,現在還不知道爲什麼,知道原因的大佬還請講一下原因。

這兒還有一個要注意的,大家都知道的獲取微信推送過來的post數據php7以上不能用$GLOBALS[‘HTTP_RAW_POST_DATA’],而要用file_get_contents(‘php://input’)的方式來獲取數據。

 

     //獲取微信推送過來的post數據(xml格式)

     //$postArr=$GLOBALS['HTTP_RAW_POST_DATA']; php7以上不能用

     $postArr = file_get_contents('php://input');

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章