第一步:接收微信发来的xml数据 有以下两种方式
$xml = $GLOBALS['HTTP_RAM_POST_DATA'];// php7 版本以上不能使用
$xml = file_get_contents('php://input');
第二步:对接收过来的数据进行处理
libxml_disable_entity_loader(true);
$obj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //转换为对象
第三步:根据接收过来的参数就行对应方法的调用
//开发者微信号
$FromUserName = $obj->FromUserName;
//接收方帐号(收到的OpenID)
$ToUserName = $obj->ToUserName;
//用户输入的关键词
$keyword = trim($obj->Content);
//消息类型,文本为text/event
$MsgType = $obj->MsgType;
//事件 KEY 值,与自定义菜单接口中 KEY 值对应
$EventKey = $obj->EventKey;
//事件类型,CLICK
$Event = $obj->Event;
第四步:逻辑处理 有两种方式ifelse 和 switech
switch ($MsgType)
{
case 'text'://文本
$this->GetText($FromUserName,$ToUserName,$keyword);
break;
case 'event'://菜单
switch ($Event){
case 'CLICK':
if ($EventKey == 'V1001_LINKING') //对应菜单下面的操作
break;
}
break;
}
列举:文本回复
/**
* 文本消息
* @param $FromUserName 发送方帐号
* @param $ToUserName 接收账号
*/
public function GetText($FromUserName,$ToUserName,$keyword = '')
{
//回复的内容
$str = '你好';
$textTpl = "
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>
";
$result = sprintf($textTpl,$FromUserName,$ToUserName,time(),'text',$str);
echo $result;
}
标签:XML,xml,obj,微信,ToUserName,text,FromUserName,接收
From: https://www.cnblogs.com/lijiaxiang/p/17790159.html