收藏
回答

在订阅号服务器配置过程中,服务器的url是新浪云sae的,提交后显示token验证失败?

我的服务器端的网页:respond.php

https://liux999888.applinzi.com/respond.php

<?php

/** 

* wechat php test 

*/

//define your tokendefine("TOKEN", "hwqhwq");

ob_clean(); //清除缓冲

define your tokendefine("TOKEN","tokenliuxiang999888");

$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;       

        }   

    }

}

?>

回答关注问题邀请回答
收藏

1 个回答

  • barry 周全
    barry 周全
    2020-03-04

    我知道了:我的define your tokendefine("TOKEN","tokenliuxiang999888");代码错了,应该改为

    define("TOKEN","tokenliuxiang999888");




    2020-03-04
    有用
    回复
登录 后发表内容
问题标签