zoukankan      html  css  js  c++  java
  • 微信公众平台开发(75)自定义菜单

     

    自定义菜单

     自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。

    目前新申请的账号只有服务号才能申请自定义菜单。开启自定义菜单后,公众号界面如图所示:

    目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。

     

    按钮类型

    目前自定义菜单接口可实现两种类型按钮,如下:

    click

    用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

    view

    用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url (即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。

     

    创建菜单

    请求方式

    POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

    {
         "button":[
         {    
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "type":"click",
               "name":"歌手简介",
               "key":"V1001_TODAY_SINGER"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"视频",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    

    参数说明

    参数

    是否必须

    说明

    button

    一级菜单数组,个数应为1~3

    sub_button

    二级菜单数组,个数应为1~5

    type

    菜单的响应动作类型,目前有clickview两种类型

    name

    菜单标题,不超过16个字节,子菜单不超过40个字节

    key

    click类型必须

    菜单KEY值,用于消息接口推送,不超过128字节

    url

    view类型必须

    网页链接,用户点击菜单可打开链接,不超过256字节

    返回结果

    正确时的返回JSON数据包如下:

    {"errcode":0,"errmsg":"ok"}

    错误时的返回JSON数据包如下(示例为无效菜单名长度):

    {"errcode":40018,"errmsg":"invalid button name size"}

    代码实现

    $jsonmenu = '
    {
         "button":[
         {    
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "type":"click",
               "name":"歌手简介",
               "key":"V1001_TODAY_SINGER"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"视频",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    ';
     
    $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
    $result = https_post($url, $jsonmenu);
    var_dump($result);
     
    function https_post($url, $data = null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return$output;
    }
     

    查询菜单

    使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。

    请求说明

    http请求方式:GET

    https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

    删除菜单

    使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。

    请求说明

    http请求方式:GET

    https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

     

    菜单事件推送

    用户点击自定义菜单后,如果菜单按钮类型为click,则微信公众平台会把此次点击事件推送给接口程序;按钮类型为view的菜单点击后不会上报,而是直接跳转到对应的URL。

    使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。

    XML数据包示例:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[CLICK]]></Event>
    <EventKey><![CDATA[EVENTKEY]]></EventKey>
    </xml>
    

    参数说明:

    参数

    描述

    ToUserName

    接收方微信号

    FromUserName

    发送方帐号(一个OpenID

    CreateTime

    消息创建时间 (整型)

    MsgType

    消息类型,event

    Event

    事件类型,CLICK

    EventKey

    事件KEY值,与自定义菜单接口中KEY值对应

    代码实现

    privatefunction receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr[] = array("Title" =>"欢迎关注方倍工作室", 
                "Description" =>"点击图片关注或者微信搜索方倍工作室", 
                "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                "Url" =>"weixin://addfriend/pondbaystudio");
            case "unsubscribe":
                break;
            case "CLICK":
                switch ($object->EventKey)
                {
                    case "company":
                        $contentStr[] = array("Title" =>"公司简介", 
                        "Description" =>"方倍工作室提供移动互联网相关的产品及服务", 
                        "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                        "Url" =>"weixin://addfriend/pondbaystudio");
                        break;
                    default:
                        $contentStr[] = array("Title" =>"默认菜单回复", 
                        "Description" =>"您正在使用的是方倍工作室的自定义菜单测试接口", 
                        "PicUrl" =>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", 
                        "Url" =>"weixin://addfriend/pondbaystudio");
                        break;
                }
                break;
            default:
                break;      
     
       }
        return$contentStr;
    }
    

     

  • 相关阅读:
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第一题
    fiddler模拟发送post请求
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467574.html
Copyright © 2011-2022 走看看