url請求超時/token驗證失敗

微信公衆平臺基本配置會出現的兩個錯誤全讓我碰見 了

1.先說第一個,url請求超時,本來以爲是因爲我的域名剛剛備案成功還不超過24小時,所以出現這個問題,等24小時之後我才發現問題沒這麼簡單。問題出在域名填寫格式上面了:我本來寫的是https://modige.top/api.php,後來有一次寫成http://modige.top/api.php就不再報url請求超時的錯誤了,原來這系統它只認http不認https

2.本以爲問題到此爲止,沒想到換了個錯誤:Token認證失敗。在網上找了八百篇博客也沒能弄成,直到把認證文件裏的代碼改成如下

<?php

/**

  * wechat php test

  */

//define your token

define("TOKEN", "modige");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->valid();

class wechatCallbackapiTest{

public function valid(){

        $echoStr = $_GET["echostr"];

        //valid signature , option

        if($this->checkSignature()){

        echo $echoStr;

        exit;

        }

    }

    public function responseMsg(){

//get post data, May be due to the different environments

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      //extract post data

if (!empty($postStr)){

              $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

                $fromUsername = $postObj->FromUserName;

                $toUsername = $postObj->ToUserName;

                $keyword = trim($postObj->Content);

                $time = time();

                $textTpl = "<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Content><![CDATA[%s]]></Content>

<FuncFlag>0</FuncFlag>

</xml>";            

if(!empty( $keyword )){

              $msgType = "text";

                $contentStr = "Welcome to wechat world!";

                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

                echo $resultStr;

                }else{

                echo "Input something...";

                }

        }else {

        echo "";

        exit;

        }

    }

private function checkSignature(){

        $signature = $_GET["signature"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];

$token = TOKEN;

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

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){

return true;

}else{

return false;

}

}

}

?>

   這裏要注意,語句 
define("TOKEN", "modige");裏的modige需要自己設置,如果不想該就在基本配置裏的token選項中填入modige

 

下附認證全過程。

1.進入微信公衆平臺官網(https://mp.weixin.qq.com/),登陸,進入左下角的基本配置一欄

2.把上面的代碼複製下來,新建一個名爲api.php的文件,粘貼進去,把這個文件上傳到自己的服務器根目錄中,也就是域名所在     的根目錄

3. 把  http://自己的域名/api.php放在  服務器地址(URL) 一欄,在Token一欄中,若是原封不動的粘貼的上面的代碼,就填         modige  ,若自己設置了,則填入自己的,  消息加解密密鑰  一欄,選擇自動生成即可。

4.消息加密方式隨意選擇

 

ps:有時候配置正確也會顯示“token 驗證失敗”,這時候要多試幾次

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