刚刚通过示例代码验证了开发者身份,微信公众号开发中心有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,这是我代码哪里出问题了吗?
之前也遇到一个奇葩问题,微信获取用户名功能在我手机上测试是成功的,但是用同事的手机测试获取到的微信用户名是NULL,折腾了一下午,发现那货的用户名就是NULL...它已经被我打死了.