首页 > 教程 > 搭建 > php验证微信公众号token验证方法
广告被禁用

php验证微信公众号token验证方法

2022-02-15 21:30:08      素材ip网      269      0

1、申请一个公众号(这里省略)


得到一个这样的配置


php验证微信公众号token验证方法


2、代码编写:


 

// 定义token秘钥常量

 

define("TOKEN", "x1h1zgucojzhkwpfljf2cb4joxqmqw5v"); // 这里改成你自己的Token,是自定义的,不过要和微信公众号后台的对应起来

$wechatObj = new wechatCallbackapiTest();

if ($_GET['echostr']) {

    // 验证

    $wechatObj->valid();

} else {

    // 自动恢复消息

    $wechatObj->responseMsg();

}


class wechatCallbackapiTest

{

    public function valid()

    {

        $echoStr = $_GET["echostr"];

        if ($this->checkSignature()) {

            echo $echoStr;

            exit;

        }

    }


    public function responseMsg()

    {

        $postStr = file_get_contents('php://input'); // 接收XML数据

        if (!empty($postStr)) {

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

            $fromUsername = $postObj->FromUserName; // 用户open_id

            $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 = "你好,欢迎来到WEB学习";

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

                echo $resultStr;

            } else {

                echo "";

            }

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

        }

    }

}

 



标签:

评论

后面还有条评论,点击查看 >>