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


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 相关文章推荐
javascript利用控件对windows的操作实现原理与应用
Dec 23 Javascript
js调试系列 断点与动态调试[基础篇]
Jun 18 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
Mar 06 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
JS前端加密算法示例
Dec 22 Javascript
微信小程序报错:this.setData is not a function的解决办法
Sep 27 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
Apr 13 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中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python 互换字典的键值对实例
2019/02/12 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
几个常见的软件测试问题
2016/09/07 面试题
财务助理岗位职责
2013/11/10 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
专家推荐信范文
2015/03/26 职场文书
财务稽核岗位职责
2015/04/13 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python