微信门户菜单管理及提交到微信服务器

By admin in 亚洲必赢app在哪下载 on 2019年1月13日

微信公众号(包括服务号和订阅号)都可以对菜单举行自定义设置,我们为了方便管理,一般先把菜单数据在本土管理维护,需要改进的时候,把它们更新到微信服务器上就可以了。本文基于那一个方法,介绍我的微信门户平台管理系列中菜单提交到微信服务器上的操作。微信门户应用管理连串,接纳基于MVC+EasyUI的门道,由于多数域名服务器上都只能帮助.NET4.0,所以以MVC3,C#4.0当做支付基础,基本上可以部署在任何.NET服务器上。

1、微信菜单的要求及相关界面设计

微信公众号的菜单我们可以透过网站开展地面的田间管理,维护好它们中间的层级关系,由于微信对自定义的菜谱要求相比严苛,以下是微信对自定义菜单的要求:

此时此刻自定义菜单最多包括3个一流菜单,每个一流菜单最多包含5个二级菜单。一流菜单最多4个汉字,二级菜单最多7个汉字,多出去的有些将会以“…”代替。

故此大家温馨依照约定,不要越界即可,否则提交菜单到服务器,可能会回到一些破绽百出,这些细节,我们在创制本地菜单管理的时候,注意一下就足以了。我在早期的一篇作品也介绍了自定义菜单的局部情节,需要可以举行回顾一下《C#付出微信门户及运用(6)–微信门户菜单的保管操作》,本篇紧假若介绍在自我的阳台管理连串内部,调用前边介绍的菜系接口API,实现菜单提交到服务器的操作。

基于微信的自定义菜单要求,我在治本连串之中,对微信的菜系多少个基础性的界面设计如下。

主菜单管理界面如下所示。

图片 1

添加菜单的界面设计如下所示

图片 2

微信菜单的修改界面如下所示

图片 3

微信菜单定义是储存在数据库里面,假使需要提交到微信服务器上并生效,则需要调用微信API接口举行拍卖,我在页面的Controller控制器里扩充一个提交到服务器的拍卖方法。

图片 4

 

2、提交菜单到微信服务器的操作

地方多少个界面,紧要就是依照微信菜单的习性,对菜单举办维护管理,我们最终的目标是把它们放到服务器上去,供大家处理客户的连锁事件操作的。

交由菜单的操作,我们在MVC的View页面里面,使用JQuery的Ajax提交即可(前提是大家在控制器里面添加相应的处理,后边介绍),界面脚本代码如下所示。

        //绑定提交按钮的的点击事件
        function BindSubmitEvent() {
            $("#btnSubmit").click(function () {
                $.messager.confirm("提交菜单确认", "您确认需要提交菜单到微信服务器吗?", function (action) {
                    if (action) {
                        //提交数据
                        $.ajax({
                            url: '/Menu/UpdateWeixinMenu',
                            type: 'post',
                            dataType: 'json',
                            success: function (data) {
                                if (data.Success) {
                                    $.messager.alert("提示", "提交微信菜单成功");
                                }
                                else {
                                    $.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
                                }
                            },
                            data: ''
                        });
                    }
                });
            });
        }

下边肉色的代码,就是我们在MVC的控制器里面定义的方法,大家只需要通过POST方法,对控制器方法调用,就能促成菜单提交到微信服务器上,至于具体里面的细节,我们可以把它挪到控制器或者更底层举办处理就是了,页面不需要涉及太多的逻辑就是了。

地点非常Menu控制器的UpdateWeixinMenu的不二法门代码如下所示(首要就是依照自家面前介绍过的开销模型举办拍卖就是了)。

        /// <summary>
        ///更新微信菜单
        /// </summary>
        /// <returns></returns>
        public ActionResult UpdateWeixinMenu()
        {
            string token = base.GetAccessToken();
            MenuListJson menuJson = GetWeixinMenu();

            IMenuApi menuApi = new MenuApi();
            CommonResult result = menuApi.CreateMenu(token, menuJson);
            return ToJsonContent(result);
        }

地点的几个法子这里逐一介绍一下。GetAccessToken紧要就是收获当前操作的拜会令牌,那里的操作可以用缓存举行缓存,否则频繁的取得AccessToken,达到天天指定的次数后,当天就不可以再用了。

GetWeixinMenu方法,紧要就是为了有利于,对获取构造微信的自定义菜单数据举办了一个函数封装,具体代码如下所示。

       /// <summary>
        /// 生成微信菜单的Json数据
        /// </summary>
        /// <returns></returns>
        private MenuListJson GetWeixinMenu()
        {
            MenuListJson menuJson = new MenuListJson();

            List<MenuNodeInfo> menuList = BLLFactory<Menu>.Instance.GetTree();
            foreach (MenuNodeInfo info in menuList)
            {
                ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.view;
                string value = (type == ButtonType.click) ? info.Key : info.Url;

                MenuJson weiInfo = new MenuJson(info.Name, type, value);
                AddSubMenuButton(weiInfo, info.Children);

                menuJson.button.Add(weiInfo);
            }
            return menuJson;
        }

 

        private void AddSubMenuButton(MenuJson menu, List<MenuNodeInfo> menuList)
        {
            if (menuList.Count > 0)
            {
                menu.sub_button = new List<MenuJson>();
            }
            foreach (MenuNodeInfo info in menuList)
            {
                ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.view;
                string value = (type == ButtonType.click) ? info.Key : info.Url;

                MenuJson weiInfo = new MenuJson(info.Name, type, value);
                menu.sub_button.Add(weiInfo);

                AddSubMenuButton(weiInfo, info.Children);
            }
        }

 

地点的代码,就是把地点存储的MenuNodeInfo数据,通过递归遍历的艺术,转换为微信的自定义菜单实体MenuJson,这样我们调用API就特别便宜了,这一个函数主要担负社团对应的实体信息就是了。至于调用微信API提交菜单的政工,如故让API自己切身处理为好,他们的代码如下所示(也就是地点函数的一部分代码)。

        IMenuApi menuApi = new MenuApi();
        CommonResult result = menuApi.CreateMenu(token, menuJson);
        return ToJsonContent(result);

说到底的结果是回来一个通用的结果CommonResult,这么些结果对象,非凡有利脚本的处理,假使有不当,则提示错误,否则也造福判断布尔值,也就是地方的页面代码脚本。

success: function (data) {
        if (data.Success) {
                  $.messager.alert("提示", "提交微信菜单成功");
           }
          else {
                    $.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
            }
       },

通过以上几局部的代码,大家就足以兑现前台MVC的视图界面,调用后台封装好的微信API,实现菜单的提交处理了。

假定感兴趣或者体验相关的客服回复功用,可以关注自己的微信了然下。具体效用可以关心自身的微信门户:马尼拉爱奇迪,也可以扫描上面二维码举办关爱精通。

图片 5

 

一经对这一个体系感兴趣,可以关注自身的其它随笔,类别随笔如下所示:

C#开发微信门户及拔取(25)-微信公司号的客户端管住效果

C#付出微信门户及应用(24)-微信小店货架信息保管

C#支付微信门户及运用(23)-微信小店商品管理接口的包裹和测试

C#开发微信门户及应用(22)-微信小店的支付和使用

C#付出微信门户及选用(21)-微信公司号的音信和事件的吸纳处理及解密 

C#支出微信门户及利用(20)-微信集团号的菜单管理

C#支付微信门户及使用(19)-微信集团号的信息发送(文本、图片、文件、语音、录像、图文消息等)

C#支付微信门户及采纳(18)-微信公司号的通讯录管理支出之成员管理

C#开发微信门户及利用(17)-微信集团号的通讯录管理支付之部门管理

C#付出微信门户及使用(16)-微信集团号的布局和选用

C#支出微信门户及运用(15)-微信菜单扩大扫一扫、发图片、发地理地方功用

 C#支付微信门户及应用(14)-在微信菜单中应用重定向获取用户数量

C#开发微信门户及采用(13)-使用地理地方扩充相关应用

C#付出微信门户及利用(12)-使用语音处理

C#支付微信门户及拔取(11)–微信菜单的多种展现模式介绍

C#开发微信门户及利用(10)–在保管系列中一块微信用户分组信息

C#付出微信门户及应用(9)-微信门户菜单管理及提交到微信服务器

C#支出微信门户及运用(8)-微信门户应用管理体系功用介绍

C#支出微信门户及利用(7)-微信多客服功能及开发集成

C#支出微信门户及应用(6)–微信门户菜单的管制操作

C#支付微信门户及使用(5)–用户分组信息保管

C#开发微信门户及利用(4)–关注用户列表及详细音信管理

C#支出微信门户及使用(3)–文本音讯和图文信息的回复

C#支付微信门户及利用(2)–微信消息的处理和应对

C#付出微信门户及使用(1)–起先采用微信接口

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢app官方下载 版权所有