首页 > 后端开发 > php教程 > 为什么微信平台接口测试通过,但真正发信息却没有回复

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

WBOY
发布: 2016-06-06 20:33:04
原创
1456 人浏览过

用微信自带的消息接口调试都成功获得回应,但关注了公众号却没有回复。而且我发现在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><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></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><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板