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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

@Hanccc 多谢推荐,今天上午也看见了这个插件。试试先

7年前 评论

$msg = file_get_contents('php://input')

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!