php - 为什么微信平台接口测试通过,但真正发信息却没有回复
天蓬老师
天蓬老师 2017-04-10 15:41:59
[PHP讨论组]

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

<?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'");
    }


}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
ringa_lee

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

PHPz

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

阿神

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

PHP中文网

我也遇到了这个问题,请问大兄弟问题解决了吗?后来不知怎么搞的。就用抓包工具像看下数据的,结果局域网刚连上,再发就有回复了,我也是纳闷,我把局域网断了,也能回复了,可是就是有点慢,有时发几条才回复一条。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号