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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。