찾다

 >  Q&A  >  본문

为什么微信公众号自动回复消息会出现该公众号暂时无法提供服务,请稍后在试

<?php

/**

  * wechat php test

  */


//define your token

define("TOKEN", "wuxuweixin");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->responseMsg();


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)){

                /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,

                   the best way is to check the validity of xml by yourself */

                libxml_disable_entity_loader(true);

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

                            </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()

    {

        // you must define TOKEN by yourself

        if (!defined("TOKEN")) {

            throw new Exception('TOKEN is not defined!');

        }

        

        $signature = $_GET["signature"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];

                

        $token = TOKEN;

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

        // use SORT_STRING rule

        sort($tmpArr, SORT_STRING);

        $tmpStr = implode( $tmpArr );

        $tmpStr = sha1( $tmpStr );

        

        if( $tmpStr == $signature ){

            return true;

        }else{

            return false;

        }

    }

}

这是我的demo,感觉xml结果也没错,但是请求时出现了微信公众号自动回复消息会出现该公众号暂时无法提供服务,请稍后在试错误,
这是为什么呢,谢谢?


phpcn_u528phpcn_u5282882일 전1226

모든 응답(2)나는 대답할 것이다

  • 数据分析师

    数据分析师2017-09-30 23:57:32

    공식 계정이 일시적으로 서비스를 제공할 수 없다는 메시지에 위챗 공식 계정이 자동으로 응답하는 이유는 무엇입니까? 잠시 후 다시 시도해 주세요. - PHP 중국어 사이트 Q&A - 공식 계정이 일시적으로 서비스를 제공할 수 없다는 메시지에 위챗 공식 계정이 자동으로 응답하는 이유는 무엇입니까? 서비스를 제공할 수 없습니다. 나중에 다시 시도해 주세요. - PHP 중국어 웹사이트 Q&A

    시청하고 배워보세요.

    회신하다
    0
  • 阿神

    阿神2017-01-23 09:18:49

    没使用过微信公众号,但是关于“自动回复消息会出现该公众号暂时无法提供服务”这个问题,百度上有很多解决方法,应该是你的配置问题,可以参考下这个百度经验的解决方案该公众账号暂时无法提供服务 请稍后再试,希望对你有帮助。

    회신하다
    0
  • 취소회신하다