微信token驗證,參數都對的,爲何驗證一直失敗?

如題,在服務器上如何檢查微信token驗證。api

第1、三個參數是否與微信公衆號上面的同樣。服務器

第2、驗證token的url是否正確。微信

第3、以上驗證都正確,仍是一直驗證失敗。緣由不在乎代碼問題,在於微信緣由,只要驗證上面加上 ob_clean();post

 

代碼以下this

ob_clean();url

define("TOKEN", "weixin");xml

$wechatObj = new wechatCallbackapiTest();token

if (isset($_GET['echostr'])) {string

    $wechatObj->valid();it

}else{

    $wechatObj->responseMsg();

}

class wechatCallbackapiTest

{

    public function valid()

    {

        $echoStr = $_GET["echostr"];

        if($this->checkSignature()){

            echo $echoStr;

            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;

        }

    }

    public function responseMsg()

    {

        $postStr = $GLOBALS["HTTP_RAW_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($keyword == "?" || $keyword == "?")

            {

                $msgType = "text";

                $contentStr = date("Y-m-d H:i:s",time());

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

                echo $resultStr;

            }

        }else{

            echo "";

            exit;

        }

    }

}

相關文章
相關標籤/搜索