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

WBOY
發布: 2016-06-06 20:33:04
原創
1433 人瀏覽過

用微信自带的消息接口调试都成功获得回应,但关注了公众号却没有回复。而且我发现在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中,发个消息试试,我当初是这么调的

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板