微信公众号(订阅号)开发为何接收为NULL?

jasinyip 发布于 2014年07月07日
无人欣赏。

刚刚通过示例代码验证了开发者身份,微信公众号开发中心有URL和Token,我现在想测试一下消息接收接口。我写了以下代码:

    <?php
        $wechatObj = new wechat();  
        $wechatObj->responseMsg();  
        class wechat {  
            public function responseMsg() {  

                //---------- 接 收 数 据 ---------- //  

                $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据  

                //!!!!!!!!!!!!!!!!!!!!!!!!
                var_dump($postStr);//此入输出为NULL
                //!!!!!!!!!!!!!!!!!!!!!!!!

                //用SimpleXML解析POST过来的XML数据  
                $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);  
                var_dump($postObj);
                $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)  
                $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>";  

                $msgType = "text"; //消息类型  
                $contentStr = '我收到你的信息啦亲!'; //返回消息内容  

                //格式化消息模板  
                $resultStr = sprintf($textTpl,$fromUsername,$toUsername,  
                $time,$msgType,$contentStr);  
                echo $resultStr; //输出结果 
            }  
        }  
?>

这段代码的主要作用是用户回复任意内容,系统自动会返回“我收到你的信息啦亲!”,但是从第一步就出问题了, $GLOBALS["HTTPRAWPOST_DATA"]返回来的值是居然是NULL,这是我代码哪里出问题了吗?

共6条回复
callmewhy 回复于 2014年07月13日

额友情提醒一下,github有个挺好用的SDK:wechat-php-sdk,封装了基本的消息接受和发送。

如果是自己开发可以参考它的PHP文件

jasinyip 回复于 2014年07月13日

1楼 @callmewhy 好像很不错!感谢!

callmewhy 回复于 2014年07月13日

2楼 @jasinyip 嘿嘿,一开始我也是自己封装的,后来发现用这个SDK太方便了。。当时CSDN有个用Java写的教程,封装了很多对象,后来一看PHP也有。不过有阵子微信改接口导致有些信息有问题,它也及时更新了。关注着吧

tolerious 回复于 2015年09月29日

艾马、PHP、、

qbuer 回复于 2015年10月04日

之前也遇到一个奇葩问题,微信获取用户名功能在我手机上测试是成功的,但是用同事的手机测试获取到的微信用户名是NULL,折腾了一下午,发现那货的用户名就是NULL...它已经被我打死了.

本楼内容已经被删除
登录 或者 注册