public static GetMenuResult GetMenuFromJsonResult(GetMenuResultJson resultFull) { GetMenuResult result = null; try { ButtonGroup bg = new ButtonGroup(); foreach (var rootButton in resultFull.menu.button) { if (rootButton.name == null) { continue; } var availableSubtton = rootButton.sub_button.Count(z => !string.IsNullOrEmpty(z.name)); //一级菜单 if(availableSubtton == 0) { if (rootButton.type == null || (rootButton.type.Equals("CLICK", StringComparison.OrdinalIgnoreCase)&& string.IsNullOrEmpty(rootButton.key))) { throw new WeixinMenuException("单击按钮的key不能为空!"); } if (rootButton.type.Equals("CLICK", StringComparison.OrdinalIgnoreCase)) { bg.button.Add(new SingleClickButton() { name = rootButton.name, key = rootButton.key, type = rootButton.type }); } else { bg.button.Add(new SingleViewButton { name=rootButton.name, url=rootButton.url, type=rootButton.type }); } } else if (availableSubtton < 1) { throw new WeixinException("子菜单至少需要填写1个"); } //二级菜单 else { var subButton = new SubButton(rootButton.name); bg.button.Add(subButton); foreach (var subSubButton in rootButton.sub_button) { if (subSubButton.name==null) { continue; } if (subSubButton.type.Equals("CLICK", StringComparison.OrdinalIgnoreCase) && string.IsNullOrEmpty(subSubButton.key)) { throw new WeixinMenuException("单击按钮的key不能为空!"); } if (subSubButton.type.Equals("CLICK", StringComparison.OrdinalIgnoreCase)) { subButton.sub_button.Add(new SingleClickButton { name=subSubButton.name, key=subSubButton.key, type=subSubButton.type }); } else { subButton.sub_button.Add(new SingleViewButton { name = subSubButton.name, url = subSubButton.url, type = subSubButton.type }); } } } } if (bg.button.Count < 1) { throw new WeixinMenuException("一级菜单按钮至少一个!"); } result = new GetMenuResult { menu = bg }; } catch (Exception ex) { throw new WeixinMenuException(ex.Message, ex); } return result; }
public GetMenuResult() { menu = new ButtonGroup(); }
public static WxJsonResult CreateMenu(string accessToken,ButtonGroup buttonData) { var urlFormat = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}"; return ApiHelper.Post(accessToken, urlFormat, buttonData); }