responseMsg函数 ,用于返回消息给微信用户。
该函数存在于微信公共号开发平台提供的示例demo中。
应用示例 (开发者模式下)
当微信用户关注某一个公众号后,会对服务器发送一个post关注请求,微信服务器会把这个请求以xml格式发送给开发者服务器,开发服务器则接收到xml结构数据消息,进行处理,并再以xml格式返回给微信SERVER.
函数responseMsg()就是在开发者服务器文件wx_sample.php里面,用于处理开发者服务器接收到的xml消息。
1.参数接收
$postStr = $GLOBALS[‘HTTP_RAW_POST_DATA’];
2处理消息
if(!empty($postStr)){
…….
}
else{
echo ”;
exit;
}
函数libxml_disable_entity_loader(true) 防xml内部被注入。
$postObj=simplexml_load_string($postStr,’SimpleXMLElement’,LIBXML_NOCDATA); 将传递过来的消息对象化。
同样可以写为$postObj = simplexml_load_string($postStr);
3.消息内容
$fromUsername = $postObj->FromUserName; //获取微信用户名
$toUsername = $postObj->ToUserName;//获取开发者用户名
$keyword = trim($postObj->Content);//获取用户发送的消息内容
$time = time();
$textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>";
4.发送消息
if (!empty($keyword)) { $msgType = "text";//消息类型 $contentStr = "Welcome to wechat world!";//消息具体内容 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } else { echo "Input something..."; }
springf() 将$textTpl 里 百分号 %s 替换成我们定义的内容。
补充说明
如果微信用户发送的消息为空,需要返回的消息为
echo "Input something...";
提示用户输入关键词。