/// <summary> /// 创建菜单 /// </summary> /// <param name="accessToken"></param> /// <param name="buttonData">菜单内容</param> /// <returns></returns> public static WxJsonResult CreateMenu(string accessToken, ButtonGroup buttonData) { JavaScriptSerializer js = new JavaScriptSerializer(); var jsonString = js.Serialize(buttonData); CookieContainer cookieContainer = null;// new CookieContainer(); using (MemoryStream ms = new MemoryStream()) { var bytes = Encoding.UTF8.GetBytes(jsonString); ms.Write(bytes, 0, bytes.Length); ms.Seek(0, SeekOrigin.Begin); var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", accessToken); var result = Post.PostGetJson<WxJsonResult>(url, cookieContainer, ms); return result; } }
/// <summary> /// 根据微信返回的Json数据得到可用的GetMenuResult结果 /// </summary> /// <param name="resultFull"></param> /// <returns></returns> public static GetMenuResult GetMenuFromJsonResult(GetMenuResultFull resultFull) { GetMenuResult result = null; try { //重新整理按钮信息 ButtonGroup bg = new ButtonGroup(); foreach (var rootButton in resultFull.menu.button) { if (rootButton.name == null) { continue;//没有设置一级菜单 } var availableSubButton = rootButton.sub_button.Count(z => !string.IsNullOrEmpty(z.name));//可用二级菜单按钮数量 if (availableSubButton == 0) { //底部单击按钮 if (string.IsNullOrEmpty(rootButton.key)) { throw new WeixinMenuException("单击按钮的key不能为空!"); } bg.button.Add(new SingleButton() { name = rootButton.name, key = rootButton.key, // type = rootButton.type//目前只有click }); } else if (availableSubButton < 2) { throw new WeixinMenuException("子菜单至少需要填写2个!"); } else { //底部二级菜单 var subButton = new SubButton(rootButton.name); bg.button.Add(subButton); foreach (var subSubButton in rootButton.sub_button) { if (subSubButton.name == null) { continue; //没有设置菜单 } if (string.IsNullOrEmpty(subSubButton.key)) { throw new WeixinMenuException("单击按钮的key不能为空!"); } subButton.sub_button.Add(new SingleButton() { name = subSubButton.name, key = subSubButton.key, //type = subSubButton.type //目前只有click }); } } } if (bg.button.Count < 2) { throw new WeixinMenuException("一级菜单按钮至少为2个!"); } result = new GetMenuResult() { menu = bg }; } catch (Exception ex) { throw new WeixinMenuException(ex.Message, ex); } return result; }
public GetMenuResult() { menu = new ButtonGroup(); }