private static object GetMenuItem(CustomMenuButtonBase menuButtonBase)
        {
            var customMenuTopButton = menuButtonBase as CustomMenuTopButton;
            if (customMenuTopButton != null)
            {
                var menu = customMenuTopButton;
                return new
                {
                    name = menu.Name,
                    sub_button = menu.Childs.Select(GetMenuItem).ToArray()
                };
            }

            var menuButton = (CustomMenuButton)menuButtonBase;
            switch (menuButton.Type)
            {
                case CustomMenuType.Click:
                case CustomMenuType.ScancodePush:
                case CustomMenuType.ScancodeWaitmsg:
                case CustomMenuType.PicSysphoto:
                case CustomMenuType.PicPhotoOrAlbum:
                case CustomMenuType.PicWeixin:
                case CustomMenuType.LocationSelect:
                    {
                        var menu = (CustomMenuKeyButton)menuButton;
                        return new
                        {
                            type = CustomMenuTypeMappings[menu.Type],
                            name = menu.Name,
                            key = menu.Key
                        };
                    }
                case CustomMenuType.View:
                    {
                        var menu = (CustomMenuViewButton)menuButton;
                        return new
                        {
                            type = CustomMenuTypeMappings[menu.Type],
                            name = menu.Name,
                            url = menu.Url
                        };
                    }
                case CustomMenuType.MediaId:
                case CustomMenuType.ViewLimited:
                    {
                        var menu = (CustomMenuMediaButton)menuButton;
                        return new
                        {
                            type = CustomMenuTypeMappings[menu.Type],
                            name = menu.Name,
                            media_id = menu.MediaId
                        };
                    }
                default:
                    throw new NotSupportedException("不支持的类型:" + menuButton.Type);
            }
        }
Example #2
0
        private static object GetMenuItem(CustomMenuButtonBase menuButtonBase)
        {
            var customMenuTopButton = menuButtonBase as CustomMenuTopButton;

            if (customMenuTopButton != null)
            {
                var menu = customMenuTopButton;
                return(new
                {
                    name = menu.Name,
                    sub_button = menu.Childs.Select(GetMenuItem).ToArray()
                });
            }

            var menuButton = (CustomMenuButton)menuButtonBase;

            switch (menuButton.Type)
            {
            case CustomMenuType.Click:
            case CustomMenuType.ScancodePush:
            case CustomMenuType.ScancodeWaitmsg:
            case CustomMenuType.PicSysphoto:
            case CustomMenuType.PicPhotoOrAlbum:
            case CustomMenuType.PicWeixin:
            case CustomMenuType.LocationSelect:
            {
                var menu = (CustomMenuKeyButton)menuButton;
                return(new
                    {
                        type = CustomMenuTypeMappings[menu.Type],
                        name = menu.Name,
                        key = menu.Key
                    });
            }

            case CustomMenuType.View:
            {
                var menu = (CustomMenuViewButton)menuButton;
                return(new
                    {
                        type = CustomMenuTypeMappings[menu.Type],
                        name = menu.Name,
                        url = menu.Url
                    });
            }

            case CustomMenuType.MediaId:
            case CustomMenuType.ViewLimited:
            {
                var menu = (CustomMenuMediaButton)menuButton;
                return(new
                    {
                        type = CustomMenuTypeMappings[menu.Type],
                        name = menu.Name,
                        media_id = menu.MediaId
                    });
            }

            default:
                throw new NotSupportedException("不支持的类型:" + menuButton.Type);
            }
        }
        /// <summary>
        /// 设置自定义菜单。
        /// </summary>
        /// <param name="menus">自定义菜单数组。</param>
        /// <exception cref="ArgumentNullException"><paramref name="menus"/> 为null。</exception>
        /// <exception cref="ArgumentException"><paramref name="menus"/> 长度超过3。</exception>
        public void Set(CustomMenuButtonBase[] menus)
        {
            if (menus.NotNull("menus").Length > 3)
                throw new ArgumentException("顶级菜单项不能超过3个。", "menus");

            var url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + _accountModel.GetAccessToken();

            WeiXinHttpHelper.Post(url, new { button = menus.Select(GetMenuItem) });
        }