OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

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

jasinyip
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,这是我代码哪里出问题了吗?

共5条回复
楼长 ·
callmewhy 回复于 2014年07月13日

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

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

2楼 ·
jasinyip 回复于 2014年07月13日

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

3楼 ·
callmewhy 回复于 2014年07月13日

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

4楼 ·
tolerious 回复于 2015年09月29日

艾马、PHP、、

5楼 ·
qbuer 回复于 2015年10月04日

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

登录 或者 注册

AltStyle によって変換されたページ (->オリジナル) /