微信公众号平台接口开发 菜单管理的实现


Posted in Javascript onAugust 14, 2019

官方菜单功能介绍

微信公众号平台接口开发 菜单管理的实现

微信公众号平台接口开发 菜单管理的实现

请求接口:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

微信公众号平台接口开发 菜单管理的实现

微信公众号平台接口开发 菜单管理的实现

新增菜单管理类

public class MenuFirstLayerModel
  {
    public string name { get; set; }
    public List<MenuTwoLayerModel> sub_button { get; set; }
  }

  public class MenuTwoLayerModel
  {
    public string type { get; set; }
    public string name { get; set; }
    public string key { get; set; }
    public string url { get; set; }
  }

  public class WXMenu 
  {
    public List<MenuFirstLayerModel> button { get; set; }

    public string Create()
    {
      try
      {
        var requestUri = string.Format(@"https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", WeCharBase.AccessToken);
        
        return WeCharBase.Post(requestUri, new StringContent(JsonConvert.SerializeObject(new
        {
          button = button
        })));
      }
      catch (Exception ex)
      {
        return ex.Message;
      }
    }
  }

新增控制器MenuController.cs

public ActionResult ViewMenu()
    {
      return View();
    }

    public ActionResult CreateMenu()
    {
      var wxMenu = new WXMenu()
      {
        button = new List<MenuFirstLayerModel>()
        {
          new MenuFirstLayerModel()
          {
             name="扫码",
             sub_button = new List<MenuTwoLayerModel>()
             {
              new MenuTwoLayerModel()
              {
                type = "scancode_waitmsg",
                name = "扫码带提示", 
                key = "rselfmenu_0_0"
              },
              new MenuTwoLayerModel()
              {
                type = "scancode_push",
                name = "扫码推事件", 
                key = "rselfmenu_0_1"
              }
             },
          },
          new MenuFirstLayerModel()
          {
             name = "发图",
             sub_button = new List<MenuTwoLayerModel>()
             {
              new MenuTwoLayerModel()
              {
                type = "pic_sysphoto",
                name = "系统拍照发图", 
                key = "rselfmenu_1_0"
              },
              new MenuTwoLayerModel()
              {
                type = "pic_photo_or_album",
                name = "拍照或者相册发图", 
                key = "rselfmenu_1_1"
              },
              new MenuTwoLayerModel()
              {
                type = "pic_weixin",
                name = "微信相册发图", 
                key = "rselfmenu_1_2"
              }
             }
          },
          new MenuFirstLayerModel()
          {
            name = "其他",
            sub_button = new List<MenuTwoLayerModel>()
            {
              new MenuTwoLayerModel()
              {
                type = "location_select",
                name = "发送位置", 
                key = "rselfmenu_2_0"
              },
              new MenuTwoLayerModel()
              {
                type = "click",
                name = "今日歌曲", 
                key = "V1001_TODAY_MUSIC"
              },
              new MenuTwoLayerModel()
              {
                type = "view",
                name = "百度", 
                url = "http://www.baidu.com"
              }
            }
          }
        }
      };

      return Content(wxMenu.Create());
    }

新增视图ViewMenu.cshtml

<script type="text/javascript" language="javascript">
  $(document).ready(function () {
    $("#btnCreate").click(function () {
      $.ajax({
        type: "POST",
        url: "/Menu/CreateMenu",
        data: { id: $("#textContent").val() },
        success: function (responseTest) {
          $("#resultMesage").text(responseTest);
        }
      });
    });
  });
</script>

<table>
  <tr>
    <td>
      <div class="title">菜单创建</div>
      <textarea id="textContent" name="textContent" rows="20" cols="100">
        button = new[]
        {
          new
          {
            name="扫码",
            sub_button = new[]
            {
              new
              {
                type = "scancode_waitmsg",
                name = "扫码带提示",
                key = "rselfmenu_0_0"
              },
              new
              {
                type = "scancode_push",
                name = "扫码推事件",
                key = "rselfmenu_0_1"
              }
            }
          },
          new
          {
            name = "发图",
            sub_button = new[]
            {
              new
              {
                type = "pic_sysphoto",
                name = "系统拍照发图",
                key = "rselfmenu_1_0"
              },
              new
              {
                type = "pic_photo_or_album",
                name = "拍照或者相册发图",
                key = "rselfmenu_1_1"
              },
              new
              {
                type = "pic_weixin",
                name = "微信相册发图",
                key = "rselfmenu_1_2"
              }
            }
          },
          new
          {
            name = "其他",
            sub_button = new[]
            {
              new
              {
                type = "location_select",
                name = "发送位置",
                key = "rselfmenu_2_0"
              },
              new
              {
                type = "click",
                name = "今日歌曲",
                key = "V1001_TODAY_MUSIC"
              },
              new
              {
                type = "view",
                name = "百度",
                url = "http://www.baidu.com"
              }
            }
          }
        }

      </textarea>
    </td>
    <td><input class="btncss" id="btnCreate" type="button" value=" 创建 " /></td>
    <td id="resultMesage" class="resultMesage"></td>
  </tr>
</table>

有效代码写完了,看看效果

微信公众号平台接口开发 菜单管理的实现

微信公众号平台接口开发 菜单管理的实现

成功了哦。

Javascript 相关文章推荐
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
Nov 26 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
JavaScript实现身份证验证代码
Feb 17 Javascript
js字符串截取函数slice、substring和substr的比较
May 17 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
vue引入jq插件的实例讲解
Sep 12 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
Aug 06 Javascript
使用javascript解析二维码的三种方式
Nov 11 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 #Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
Aug 14 #Javascript
vue filter 完美时间日期格式的代码
Aug 14 #Javascript
如何对react hooks进行单元测试的方法
Aug 14 #Javascript
vue 中 命名视图的用法实例详解
Aug 14 #Javascript
详解vue 命名视图
Aug 14 #Javascript
浅谈JS中this在各个场景下的指向
Aug 14 #Javascript
You might like
PHP函数超时处理方法
2016/02/14 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
python发布模块的步骤分享
2014/02/21 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
python中logging包的使用总结
2018/02/28 Python
python实现简单神经网络算法
2018/03/10 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python3 反射的四种基本方法解析
2019/08/26 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
python里反向传播算法详解
2020/11/22 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
学生会部长竞聘书
2014/03/31 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
学校节水倡议书
2015/04/29 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
早上好问候语大全
2015/11/10 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android