测试一下老贼的菜单页面:http://www.zhongyaofang.cn/combat_power/weixin_jiaocheng_vol11.html
下面是代码:
<?php
//装载模板文件
include_once("wx_tpl.php");
//获取微信发送数据
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//返回回复数据
if (!empty($postStr)){
//解析数据
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//发送消息方ID
$fromUsername = $postObj->FromUserName;
//接收消息方ID
$toUsername = $postObj->ToUserName;
//消息类型
$form_MsgType = $postObj->MsgType;
//事件消息
if($form_MsgType=="text")
{
//获取用户发送的文字内容
$form_Content = trim($postObj->Content);
//
if(!empty($form_Content))
{
// 输入“菜谱”
if ($form_Content=="菜谱")
{
$return_str = "请输入字母浏览对应菜品aaa\n";
$return_arr = array("lc.冷菜\n","rc.热菜\n");
$return_str .= implode("", $return_arr);
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $return_str);
echo $resultStr;
exit;
}
// 输入“lc”,回复冷菜内容
elseif ($form_Content=="lc"){
$resultStr = "
<xml>
<ToUserName><![CDATA[".$toUsername."]]></ToUserName>
<FromUserName><![CDATA[".$fromUsername."]]></FromUserName>
<CreateTime>".time()."</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[2]]></ArticleCount>
<Articles>";
$return_str = $resultStr;
$return_arr = array(
array("老虎菜",
"http://www.1hwj.net/wei/lhc.jpg",
"http://www.ifeng.com"),
array("什锦泡菜",
"http://www.1hwj.net/wei/sjpc.jpg",
"http://www.baidu.com")
);
foreach ($return_arr as $value)
{
$return_str .= "
<item>
<Title><![CDATA[".$value[0]."]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[".$value[1]."]]></PicUrl>
<Url><![CDATA[".$value[2]."]]></Url>
</item>";
}
$return_str .= "
</Articles>
<FuncFlag>0</FuncFlag>
</xml>";
echo $return_str;
exit;
}
elseif ($form_Content=="cc"){
$resultStr = "
<xml>
<ToUserName><![CDATA[".$toUsername."]]></ToUserName>
<FromUserName><![CDATA[".$fromUsername."]]></FromUserName>
<CreateTime>".time()."</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[2]]></ArticleCount>
<Articles>";
$return_str = $resultStr;
$return_arr = array(
array("辣子鸡",
"http://www.1hwj.net/wei/lhc.jpg",
"http://www.ifeng.com"),
array("酸菜鱼",
"http://www.1hwj.net/wei/sjpc.jpg",
"http://www.baidu.com")
);
foreach ($return_arr as $value)
{
$return_str .= "
<item>
<Title><![CDATA[".$value[0]."]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[".$value[1]."]]></PicUrl>
<Url><![CDATA[".$value[2]."]]></Url>
</item>";
}
$return_str .= "
</Articles>
<FuncFlag>0</FuncFlag>
</xml>";
// $return_str = "请输入字母浏览对应菜品aaa\n";
// $return_arr = array("lc.冷菜\n","rc.热菜\n");
// $return_str .= implode("", $return_arr);
// $msgType = "text";
// $resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $return_str);
echo $return_str;
exit;
}
else {
$return_str = "请输入字母浏览对应菜品bbb\n";
$return_arr = array("lc.冷菜\n","cc.川菜\n");
$return_str .= implode("", $return_arr);
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $return_str);
echo $resultStr;
exit;
}
// 若非空,直接回复
$msgType = "text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, "请输入菜谱儿子进行点菜\n\n");
echo $resultStr;
exit;
}
}
elseif($form_MsgType=="event")// 接收到事件
{
//获取事件类型
$form_Event = $postObj->Event;
//订阅事件
if($form_Event=="subscribe") // 接收到的事件为:关注
{
//回复欢迎文字消息
$msgType = "text";
$contentStr = "感谢您关注老狼的微信测试![愉快]\n\n[玫瑰]\n\n请随便输入几个文本试试。";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, $contentStr);
echo $resultStr;
exit;
}
}
}
else
{
echo "";
exit;
}
?>
在调试页面 http://debug.fangbei.org/ 发送文本内容“cc”,返回的xml为:
<xml>
<ToUserName><![CDATA[gh_204936aea56d]]></ToUserName>
<FromUserName><![CDATA[ojpX_jig-gyi3_Q9fHXQ4rdHniQs]]></FromUserName>
<CreateTime>1479116005</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount><![CDATA[2]]></ArticleCount>
<Articles>
<item>
<Title><![CDATA[辣子鸡]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[http://www.1hwj.net/wei/lhc.jpg]]></PicUrl>
<Url><![CDATA[http://www.ifeng.com]]></Url>
</item>
<item>
<Title><![CDATA[酸菜鱼]]></Title>
<Description><![CDATA[]]></Description>
<PicUrl><![CDATA[http://www.1hwj.net/wei/sjpc.jpg]]></PicUrl>
<Url><![CDATA[http://www.baidu.com]]></Url>
</item>
</Articles>
<FuncFlag>0</FuncFlag>
</xml>
调试网页模拟显示为:
但是在手机的显示为:“该公众号暂时无法提供服务,请稍后再试”
反复修改,最终发现是
<ToUserName><![CDATA[".$toUsername."]]></ToUserName>
<FromUserName><![CDATA[".$fromUsername."]]></FromUserName>
应为
<ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
<FromUserName><![CDATA[".$toUsername."]]></FromUserName>
刚开始看不到图片,后来通过点击链接在微信中显示一次图片后,再次点击“lc”可看到菜单中的图片,估计应该是网速偏慢导致,但我的网速是大约10M,疑惑ing。