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


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 EXCEL 操作类代码
Jul 30 Javascript
JavaScript的事件绑定(方便不支持js的时候)
Oct 01 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
用js判断是否为360浏览器的实现代码
Jan 15 Javascript
分享两款带遮罩的jQuery弹出框
Dec 30 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
javascript基本数据类型和转换
Mar 17 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
vue与TypeScript集成配置最简教程(推荐)
Oct 17 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 Javascript
微信小程序开发摇一摇功能
Nov 22 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
第五节 克隆 [5]
2006/10/09 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
深入解析koa之中间件流程控制
2019/06/17 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
spyder常用快捷键(分享)
2017/07/19 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
创业计划书六个要素
2013/12/26 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
党员承诺践诺书
2014/05/20 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
中秋节晚会开场白
2015/05/29 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL