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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

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

7年前 评论

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

7年前 评论

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