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


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 相关文章推荐
基于jQuery的history历史记录插件
Dec 11 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
Jan 11 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
如何实现一个webpack模块解析器
Oct 24 Javascript
可能被忽略的一些JavaScript数组方法细节
Feb 28 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 Javascript
用webAPI实现图片放大镜效果
Nov 23 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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
全面理解闭包机制
2016/07/11 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
Python反射的用法实例分析
2018/02/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
简单了解python的break、continue、pass
2019/07/08 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python super()函数的基本使用
2020/09/10 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
2015年党日活动总结范文
2015/03/25 职场文书
2015年财政局工作总结
2015/05/21 职场文书
2016春节放假通知范文
2015/08/18 职场文书
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL