您的位置:首页 > 移动开发 > 微信开发

【微信公众平台开发】接收信息,并分析信息类型进行响应(三)

2014-02-12 09:54 344 查看
1.根据微信公众平台文档,知道接收普通消息类型如下:

1 文本消息

2 图片消息

3 语音消息

4 视频消息

5 地理位置消息

6 链接消息

2.根据文档,微信服务器发送过来的消息都是xml格式的信息,所以可以从xml得到自己想要的信息。

废话不多说,看代码分析。

<?php
public function ResponseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];   //获取从微信服务器发送过来的信息

if (!empty($postStr)){
//simplexml_load_string() 函数把 XML 字符串载入对象中。然后从对象中得到相应数据
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$msgType = $postObj->MsgType;
$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>";
$replyMsg = "";
if($msgType == "text")
{
$replyMsg = "您发的是文本信息";
}
else if($msgType == "image")
{
$replyMsg = "您发的是图片信息";
}
else if($msgType == "location")
{
$replyMsg = "您发的是地理位置信息";
}
else if($msgType == "event")
{
$eventType = $postObj->Event;
if($eventType == "subscribe")
{
$replyMsg = "欢迎你订阅";
}
else if($eventType == "CLICK")
{
$replyMsg = "自定义菜单事件";
}
}

$msgType = "text";

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType,$replyMsg);  //根据文档要求,组成xml格式
echo $resultStr;  //输出,微信服务器接收响应

}else{
echo "";
exit;
}
}
ResponseMsg();
?>


注:根据上一篇,打包代码,格式为zip。上传到sae;接着开始测试!

3.大概思路:用户发送信息,微信服务器响应,并发送规定的xml格式数据到我们写的index.php,index.php进行响应处理,根据微信公众平台文档进行xml数据分析处理,并按要求返回xml格式数据到微信服务器;微信服务器做出响应解析,然后发送最终数据到用户微信!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐