Laravel:微信公众平台 “接受 / 回复消息”
微信公众平台开发者模式允许用户自己配置服务器,这样来自粉丝的信息,通过微信平台包装成xml格式,发送给后台服务器,后台服务器解析处理后,同样把信息包装成xml格式,通过微信平台,发送给用户。
微信平台和后台服务器直接是通过xml格式通信的(http POST),格式如下:
<xml>
<ToUserName><![CDATA[公众号]]></ToUserName>
<FromUserName><![CDATA[粉丝号]]></FromUserName>
<CreateTime>1460537339</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[欢迎开启公众号开发者模式]]></Content>
<MsgId>6272960105994287618</MsgId>
</xml>
因为xml格式的post数据包不是php默认识别的,所以不能使用$_POST[]直接取值,需要获取原始数据包,即使用如下语句处理接收到的数据包:
$msg = $GLOBALS[HTTP_RAW_POST_DATA];
$xmlObj = simplexml_load_string($msg, 'SimpleXMLElement', LIBXML_NOCDATA);
$msgType = $xmlObj->MsgType;
Laravel的话,在Controller中要使用$msg = $request->getContent()
获取原始数据。
本作品采用《CC 协议》,转载必须注明作者和本文链接
https://github.com/overtrue/wechat
@Hanccc 多谢推荐,今天上午也看见了这个插件。试试先
$msg = file_get_contents('php://input')