Exemplo n.º 1
0
        public async Task CreateMenuAsync(MenuCreateInput input)
        {
            var    useAddCondidionalApi = input.MenuMatchRule != null && !input.MenuMatchRule.CheckAllNull();
            string accessToken          = await GetAccessToken();

            //重新整理按钮信息
            WxJsonResult     result      = null;
            IButtonGroupBase buttonGroup = null;

            if (useAddCondidionalApi)
            {
                //个性化接口
                buttonGroup = CommonApi.GetMenuFromJsonResult(input.ResultFull, new ConditionalButtonGroup()).menu;

                var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                addConditionalButtonGroup.matchrule = input.MenuMatchRule;
                result = CommonApi.CreateMenuConditional(accessToken, addConditionalButtonGroup);
            }
            else
            {
                //普通接口
                buttonGroup = CommonApi.GetMenuFromJsonResult(input.ResultFull, new ButtonGroup()).menu;
                result      = CommonApi.CreateMenu(accessToken, buttonGroup);
            }
        }
Exemplo n.º 2
0
        public ActionResult CreateMenu(string token, GetMenuResultFull resultFull, MenuMatchRule menuMatchRule)
        {
            if (String.IsNullOrWhiteSpace(token))
            {
                token = GetToken();
            }

            var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull();
            var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口"));

            try
            {
                if (token.IsNullOrEmpty())
                {
                    throw new WeixinException("Token不能为空!");
                }

                //重新整理按钮信息
                WxJsonResult     result      = null;
                IButtonGroupBase buttonGroup = null;
                if (useAddCondidionalApi)
                {
                    //个性化接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu;

                    var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                    addConditionalButtonGroup.matchrule = menuMatchRule;
                    result   = CommonApi.CreateMenuConditional(token, addConditionalButtonGroup);
                    apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid);
                }
                else
                {
                    //普通接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                    result      = CommonApi.CreateMenu(token, buttonGroup);
                }

                var json = new
                {
                    Success = result.errmsg == "ok",
                    Message = "菜单更新成功。" + apiName
                };
                return(Json(json, new JsonSerializerSettings()
                {
                    ContractResolver = new DefaultContractResolver()
                }));
            }
            catch (Exception ex)
            {
                var json = new { Success = false, Message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) };
                return(Json(json, new JsonSerializerSettings()
                {
                    ContractResolver = new DefaultContractResolver()
                }));
            }
        }
Exemplo n.º 3
0
        public ActionResult CreateMenu(GetMenuResultFull resultFull, MenuMatchRule menuMatchRule)
        {
            if (string.IsNullOrEmpty(_wxAccount.AppId) || string.IsNullOrEmpty(_wxAccount.Secret))
            {
                return(Json(new { error = "AppId或AppSecret为空" }, JsonRequestBehavior.AllowGet));
            }

            var token = AccessTokenContainer.TryGetAccessToken(_wxAccount.AppId, _wxAccount.Secret);

            var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull();
            var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口"));

            try
            {
                //重新整理按钮信息
                WxJsonResult     result      = null;
                IButtonGroupBase buttonGroup = null;
                if (useAddCondidionalApi)
                {
                    //个性化接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu;

                    var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                    addConditionalButtonGroup.matchrule = menuMatchRule;
                    result   = CommonApi.CreateMenuConditional(token, addConditionalButtonGroup);
                    apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid);
                }
                else
                {
                    //普通接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                    result      = CommonApi.CreateMenu(token, buttonGroup);
                }

                return(Json(new { success = result.errmsg == "ok", message = "菜单更新成功。" + apiName }));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) }));
            }
        }
Exemplo n.º 4
0
        public ActionResult CreateMenu(string token, GetMenuResultFull resultFull, MenuMatchRule menuMatchRule)
        {
            var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull();
            var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口"));

            try
            {
                //重新整理按钮信息
                WxJsonResult     result      = null;
                IButtonGroupBase buttonGroup = null;
                if (useAddCondidionalApi)
                {
                    //个性化接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu;

                    var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                    addConditionalButtonGroup.matchrule = menuMatchRule;
                    result   = CommonApi.CreateMenuConditional(token, addConditionalButtonGroup);
                    apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid);
                }
                else
                {
                    //普通接口
                    buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                    result      = CommonApi.CreateMenu(token, buttonGroup);
                }

                var json = new
                {
                    Success = result.errmsg == "ok",
                    Message = "菜单更新成功。" + apiName
                };
                return(Json(json));
            }
            catch (Exception ex)
            {
                var json = new { Success = false, Message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) };
                return(Json(json));
            }
        }
Exemplo n.º 5
0
        public ActionResult CreateMenu(string token, GetMenuResultFull resultFull, MenuMatchRule menuMatchRule)
        {
            bool   flag = (menuMatchRule != null) && !menuMatchRule.CheckAllNull();
            string str  = "使用接口:" + (flag ? "个性化菜单接口" : "普通自定义菜单接口") + "。";

            try
            {
                WxJsonResult     result     = null;
                IButtonGroupBase buttonData = null;
                if (flag)
                {
                    ConditionalButtonGroup menu = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu as ConditionalButtonGroup;
                    menu.matchrule = menuMatchRule;
                    result         = CommonApi.CreateMenuConditional(token, menu, 0x2710);
                    str            = str + "menuid:" + (result as CreateMenuConditionalResult).menuid + "。";
                }
                else
                {
                    buttonData = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                    result     = CommonApi.CreateMenu(token, buttonData, 0x2710);
                }
                var data = new {
                    Success = result.errmsg == "ok",
                    Message = "菜单更新成功。" + str
                };
                return(base.Json(data));
            }
            catch (Exception exception)
            {
                var type2 = new {
                    Success = false,
                    Message = "更新失败:" + exception.Message + "。" + str
                };
                return(base.Json(type2));
            }
        }
        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="appId">微信appId</param>
        /// <param name="menuFull_Button">菜单数据定义</param>
        /// <param name="menuMatchRule">个性化匹配规则</param>
        /// <returns></returns>
        private async Task CreateConditionalMenu(string appId, MenuFull_ButtonGroup menuFull_Button, MenuMatchRule menuMatchRule)
        {
            await _wechatAppConfigManager.RegisterWechatApp(appId);

            try
            {
                var resultFull = new GetMenuResultFull()
                {
                    menu = menuFull_Button
                };

                // 数据校验
                var buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu;
                // 附加规则
                var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                addConditionalButtonGroup.matchrule = menuMatchRule;
                // 立即创建
                var result = CommonApi.CreateMenuConditional(appId, addConditionalButtonGroup);
            }
            catch (UserFriendlyException e)
            {
                throw e;
            }
        }