検索

ホームページ  >  に質問  >  本文

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

<?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_u5282874日前1217

全員に返信(2)返信します

  • 数据分析师

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

    公式アカウントが一時的にサービスを提供できないというメッセージに WeChat 公式アカウントが自動的に返信するのはなぜですか、後でもう一度お試しください - PHP 中国語 Web サイト Q&A - 公式アカウントが一時的にサービスを提供できないというメッセージに WeChat 公式アカウントが自動的に返信するのはなぜですかサービスを提供できません。後でもう一度お試しください。 試してみてください - PHP 中国語 Web サイト Q&A

    見て学びましょう。

    返事
    0
  • 阿神

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

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

    返事
    0
  • キャンセル返事