Exemplo n.º 1
0
        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="token"></param>
        /// <param name="rule">匹配规则共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。</param>
        /// <param name="menu1"></param>
        /// <param name="menu2"></param>
        /// <param name="menu3"></param>
        /// <returns>menuid</returns>
        public static string MenuCreatCondition(this AccessToken token, MenuMatchRule rule, MenuBase menu1, MenuBase menu2 = null, MenuBase menu3 = null)
        {
            var list = new List <MenuBase>();

            list.Add(menu1);
            list.Add(menu2);
            list.Add(menu3);
            return(token.MenuCreatCondition(rule, list.ToList()));
        }
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(MPMenuViewModel request)
        {
            string            token         = GetToken(); // request.token;
            GetMenuResultFull resultFull    = request.ResultFull;
            MenuMatchRule     menuMatchRule = request.MenuMatchRule;

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

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

                    var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup;
                    addConditionalButtonGroup.matchrule = menuMatchRule;
                    result   = Senparc.Weixin.MP.CommonAPIs.CommonApi.CreateMenuConditional(token, addConditionalButtonGroup);
                    apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid);
                }
                else
                {
                    //普通接口
                    buttonGroup = Senparc.Weixin.MP.CommonAPIs.CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                    result      = Senparc.Weixin.MP.CommonAPIs.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.º 4
0
                public static string AddCondition(MenuMatchRule rule, List <MenuBase> buttons)
                {
                    StringBuilder str = new StringBuilder();

                    str.Append("{\"button\":[");
                    foreach (var item in buttons.Take(3))
                    {
                        if (item != null)
                        {
                            str.Append(item.ToString());
                        }
                    }
                    if (str.ToString().EndsWith(","))
                    {
                        str.Remove(str.Length - 1, 1);
                    }
                    str.Append("],").Append(rule.ToString()).Append("}");
                    return(str.ToString());
                }
Exemplo n.º 5
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.º 6
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));
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// 创建个性化菜单
 /// </summary>
 /// <param name="token"></param>
 /// <param name="rule">匹配规则共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。</param>
 /// <param name="buttons"></param>
 /// <returns>menuid</returns>
 public static string MenuCreatCondition(this AccessToken token, MenuMatchRule rule, List <MenuBase> buttons) =>
 Api.Menu.AddCondition(token.access_token, rule, buttons);
Exemplo n.º 8
0
 public static string AddCondition(string access_token, MenuMatchRule rule, List <MenuBase> buttons) =>
 ApiJTokenPost(JsonCreate.AddCondition(rule, buttons), "/cgi-bin/menu/addconditional?access_token={0}", access_token)
 ?.GetString("menuid") ?? throw new Exception("未找到个性化菜单Id信息");
        /// <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;
            }
        }