• PHP原生实现,校验微信公众号||小程序服务器地址


    1、原生的.php文件:  test.php

    <?php
    header('Content-type:text');
    define("TOKEN", "weixin");
    
    $wechatObj = new wechatCallbackapiTest();
    if (isset($_GET['echostr'])) {
        $wechatObj->valid();
    }else{
        $wechatObj->responseMsg();
    }
    
    class wechatCallbackapiTest
    {
        public function valid()
        {
            $echoStr = $_GET["echostr"];
            if($this->checkSignature()){
                header('content-type:text');
                echo $echoStr;
                exit;
            }
        }
    
        private function checkSignature()
        {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
    
            $token = TOKEN;
            $tmpArr = array($token, $timestamp, $nonce);
            sort($tmpArr, SORT_STRING);
            $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;
            }
        }
    }
    ?>

    2、拿去直接用,放在/目录下即可。

    公众号服务器地址URL:

    https://m.****.com/test.php

    token:weixin

  • 相关阅读:
    解决:Type javax.xml.bind.JAXBContext not pres
    使用RabbitMQ传输链路数据给zipkin时启动zipkin的命令
    OAuth2权限验证SQL脚本
    MD5 加密算法 All In One
    道教辟谷养生 All In One
    LattePanda 3 Delta All In One
    羊了个羊小游戏在线网页版 All In One
    How To Hack a Tech Blog Site Need Login To Copy Code All In One
    HTML5 custom input form validate All In One
    DevOps Tutorials All In One
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/7233100.html
Copyright © 2020-2023  润新知