PHP 微信公众平台自定义菜单响应事件 100

请问一下微信公众平台自定义菜单响应事件,应该怎么写,现在菜单已经有了$data='{"button":[{"type":"click","name":"贸易","key"... 请问一下微信公众平台自定义菜单响应事件,应该怎么写,现在菜单已经有了

$data = '{
"button":[
{
"type":"click",
"name":"贸易",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"外贸",
"key":"V1001_TODAY_SINGER"
},
{
"name":"物流",
"sub_button":[
{
"type":"click",
"name":"国外物流",
"key":"V1001_HELLO_WORLD"
},
{
"type":"click",
"name":"国内物流",
"key":"V1001_GOOD"
}]
}]
}';

想知道如何才能通过key值点击响应
接口文档:
<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[EVENT]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>

参数 描述

ToUserName 接收方微信号
FromUserName 发送方微信号,若为普通用户,则是一个OpenID
CreateTime 消息创建时间
MsgType 消息类型,event
Event 事件类型,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件)
EventKey 事件KEY值,与自定义菜单接口中KEY值对应
展开
 我来答
cx1982420
推荐于2020-01-16 · TA获得超过1358个赞
知道小有建树答主
回答量:741
采纳率:100%
帮助的人:336万
展开全部
/** 
   * 相关回复
   */      
  public function responseMsg()  
  {
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//返回回复数据  
    if (!empty($postStr))
    {
      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);  
      $fromUsername = $postObj->FromUserName;//发送消息方ID  
      $toUsername = $postObj->ToUserName;//接收消息方ID  
      $keyword = trim($postObj->Content);//用户发送的消息  
      $times = time();//发送时间  
      $MsgType = $postObj->MsgType;//消息类型  
      $msgType = "text";   
     
      if($MsgType=='event')
      {
        $MsgEvent = $postObj->Event;//获取事件类型  
        if ($MsgEvent=='subscribe') 
        {
         //订阅事件  
        }
        elseif ($MsgEvent=='CLICK') 
        {
         //点击事件  
          $EventKey = $postObj->EventKey;//菜单的自定义的key值,可以根据此值判断用户点击了什么内容,从而推送不同信息  
          switch($EventKey)
          {
           case "V1001_TODAY_MUSIC" :
            //要返回相关内容
            break;
           case "V1001_TODAY_SINGER" :
           //要返回相关内容
            break;
           case "V1001_HELLO_WORLD" :
            //要返回相关内容
            break;
           case "V1001_GOOD" :
            //要返回相关内容
            break;
           }
                    
        }  
      }
      $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>";            
      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $times, "text", "这里是要说的内容");

    }
    else
    {           
   echo '没有任何消息传递'; 
    }
  }

 试试这个看,我段时间也在看,但是还没有机会试

更多追问追答
追问
case "V1001_TODAY_MUSIC" :
//要返回相关内容
这个相关内容应该怎么写 也是返回xml还是一个字符串
追答
这个就要看你的功能了啊,比如 V1001_TODAY_MUSIC
case "V1001_TODAY_MUSIC" :
$content = "请输入你的订单号";
break;
然后在下面的输出语句
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $times, "text", $content);
星河Andy
2019-02-13 · TA获得超过305个赞
知道小有建树答主
回答量:398
采纳率:63%
帮助的人:57.6万
展开全部

兄弟你的这个发送消息的素材,是哪个接口?就是里面的key,怎么获取列表?我菜单都能提交到微信了,就是这个素材卡住了,不知道是哪个接口了。。。微信的文档真乱。

看文档说是参考消息接口指南,搜了半天都没找到有个这东西。醉了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
juzelong630
2013-09-12 · TA获得超过428个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:159万
展开全部
说下过程

1.先把菜单放到HTML里面
2.切换按钮的时候用JS获取KEY和VALUE
3.用AJAX提交到PHP文件
4.在PHP组织XML代码

5.PHP用scoket或者CURL进行数据提交,提交到接口
6.服务器响应数据到PHP,PHP返回到JS JS将响应的字符串组织一下显示到页面
END。
更多追问追答
追问
如果不通过HTML呢
现在是按钮点击事件发生以后,微信会直接返回一个消息,
追答
既然是做在WEB上面,异步逻辑传输只有AJAX,也就是说可能直接可以AJAX提交给微信接口。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孟家的儿子
2019-02-20 · 贡献了超过226个回答
知道答主
回答量:226
采纳率:10%
帮助的人:18.9万
展开全部
你应该起诉你朋友,这事跟他爸又没多大关系。

本来应该在借款时你就应该要求你朋友提供房子抵押的相关资料,以证明其真实性。现在再说这事也晚了。

你现在应该尽量收集相信证据,必要的话可以和出借人联合起来,一起起诉你朋友。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
歧瑶岑Xd
2019-02-19 · 贡献了超过107个回答
知道答主
回答量:107
采纳率:0%
帮助的人:7.5万
展开全部
什么时候回来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式