該公眾號提供的服務(wù)出現(xiàn)故障,請稍后再試

image.png

用戶發(fā)送消息給公眾號時,假如服務(wù)器無法保證在五秒內(nèi)處理并回復(fù),必須做出下述回復(fù),這樣微信服務(wù)器才不會對此作任何處理,并且不會發(fā)起重試(這種情況下,可以使用客服消息接口進(jìn)行異步回復(fù)),否則,將出現(xiàn)嚴(yán)重的錯誤提示。

一旦遇到以下2種情況,微信都會在公眾號會話中,向用戶下發(fā)系統(tǒng)提示“該公眾號暫時無法提供服務(wù),請稍后再試”:

1、開發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容 
2、開發(fā)者回復(fù)了異常數(shù)據(jù),比如JSON數(shù)據(jù)等

所以針對公眾號提出的可能存在的問題1,給出以下解決方式:

1、直接回復(fù)success(推薦方式)
2、直接回復(fù)空串(指字節(jié)長度為0的空字符串,而不是XML結(jié)構(gòu)體中content字段的內(nèi)容為空)

 public function responseMsg() {
    //$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    $postStr = file_get_contents('php://input');
    if (!empty($postStr)) {
        $postObj = simplexml_load_string($postStr); //, 'SimpleXMLElement', LIBXML_NOCDATA
        //關(guān)注事件時推送消息
        if (strtolower($postObj->MsgType) == 'event') {//事件
            if (strtolower($postObj->Event == 'subscribe')) {//關(guān)注
                $domain = Yii::$app->params['domain']['www'];
                $imgDomain = Yii::$app->params['domain']['img'] . 'logo.png';
                $array = array(
                    array('title' => '歡迎關(guān)注一網(wǎng)超市',
                        'description' => '上一網(wǎng) 逛超市 多快好??!',
                        'picUrl' => $imgDomain,
                        'url' => $domain,
                    ),
                );
                $textTpl = "<xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <ArticleCount>" . count($array) . "</ArticleCount>
                        <Articles>";
                foreach ($array as $key => $val) {
                    $textTpl .= "<item>
            <Title><![CDATA[" . $val['title'] . "]]></Title> 
            <Description><![CDATA[" . $val['description'] . "]]></Description>
            <PicUrl><![CDATA[" . $val['picUrl'] . "]]></PicUrl>
            <Url><![CDATA[" . $val['url'] . "]]></Url>
            </item>";
                }
                $textTpl .= "
            </Articles>
            </xml>";
                $fromUserName = $postObj->FromUserName;
                $toUserName = $postObj->ToUserName;
                $time = time();
                echo sprintf($textTpl, $fromUserName, $toUserName, $time, 'news');
                $ret = array('openid' => "$fromUserName", 'event' => 'subscribe');
                return json_encode($ret);
            } else if ($postObj->Event == "VIEW") {
                $fromUserName = $postObj->FromUserName;
                $ret = array('openid' => "$fromUserName", 'event' => 'VIEW');
                return json_encode($ret);
            } else if ($postObj->Event == "CLICK") {
                $fromUserName = $postObj->FromUserName;
                $ret = array('openid' => "$fromUserName", 'event' => 'VIEW');
                return json_encode($ret);
            } else {

                $fromUserName = $postObj->FromUserName;
                $ret = array('openid' => "$fromUserName", 'event' => 'VIEW');
                return json_encode($ret);
            }
        } else {//$postObj->MsgType=text 在公眾號發(fā)消息收到的就是text類型
            echo '';//這里就是回復(fù)的空字符串或者success,即echo 'success';
            exit;//這個退出是關(guān)鍵,必須加上,沒有則還是會出現(xiàn)那個標(biāo)題的提示
        }
    } else {
        echo '';
        exit;
    }
}

問題二是說回復(fù)了異常的json,就是回復(fù)消息時拼的xml中包含了空格,大家可以看下,自己是否也存在類似錯誤。

如:

<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>

去掉空格后:

<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容