微信开发:ToUserName、FromUserName写反导致手机上显示“该公众号暂时无法提供服务,请稍后再试”


    测试一下老贼的菜单页面: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。


   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值