Heim >Backend-Entwicklung >PHP-Tutorial >为什么微信平台接口测试通过,但真正发信息却没有回复

为什么微信平台接口测试通过,但真正发信息却没有回复

WBOY
WBOYOriginal
2016-06-06 20:33:041458Durchsuche

用微信自带的消息接口调试都成功获得回应,但关注了公众号却没有回复。而且我发现在php里加入了一句插入数据库的代码,发现根本没运行(接口调试时有运行)。究竟什么原因?

<code><?php namespace Home\Controller;
use Think\Controller;
class WeixinController extends BaseController {

    public function index(){
        //define your token
        define("TOKEN", C("TOKEN"));
        $wechatObj = new \Weixin\weixin();

        if (isset($_GET['echostr'])) {
            $wechatObj->valid();
        }else{
            $this->responseMsg();
        }

    }

    private 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></tousername>
                            <fromusername></fromusername>
                            <createtime>%s</createtime>
                            <msgtype></msgtype>
                            <content></content>
                            <funcflag>0</funcflag>
                            </xml>";             
                if(!empty( $keyword ))
                {
                    $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $keyword);
                    echo $resultStr;
                }else{
                    echo "Input something...";
                }

        }else {
            echo "";
            exit;
        }
    }
    private function test($content){
        $m = M('list');
        return $m->execute("UPDATE list SET website = '{$content}' WHERE name = 'test'");
    }


}
</code>

回复内容:

用微信自带的消息接口调试都成功获得回应,但关注了公众号却没有回复。而且我发现在php里加入了一句插入数据库的代码,发现根本没运行(接口调试时有运行)。究竟什么原因?

<code><?php namespace Home\Controller;
use Think\Controller;
class WeixinController extends BaseController {

    public function index(){
        //define your token
        define("TOKEN", C("TOKEN"));
        $wechatObj = new \Weixin\weixin();

        if (isset($_GET['echostr'])) {
            $wechatObj->valid();
        }else{
            $this->responseMsg();
        }

    }

    private 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></tousername>
                            <fromusername></fromusername>
                            <createtime>%s</createtime>
                            <msgtype></msgtype>
                            <content></content>
                            <funcflag>0</funcflag>
                            </xml>";             
                if(!empty( $keyword ))
                {
                    $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $keyword);
                    echo $resultStr;
                }else{
                    echo "Input something...";
                }

        }else {
            echo "";
            exit;
        }
    }
    private function test($content){
        $m = M('list');
        return $m->execute("UPDATE list SET website = '{$content}' WHERE name = 'test'");
    }


}
</code>

...你不贴代码 怎么分析
难道打算让老夫掐指为你算一卦?

关注公众号推送的是事件,看看开发文档吧

微信接口调试,你可以使用file_put_content记录某些信息到log中,发个消息试试,我当初是这么调的

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn