微信自定义菜单这个就比较简单,直接贴代码。
微信说的注意:
目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
#region 菜单管理 public ActionResult CreateMenu() { string access_token = weixin.AccessToken(); string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token; string data = ""; using (StreamReader sr = new StreamReader(Server.MapPath("/Config/menu.txt"))) { data = sr.ReadToEnd(); } var json = HttpHelper.Post(url, data); return Content(json); } public ActionResult DeleteMenu() { string access_token = weixin.AccessToken(); string url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + access_token; var json = HttpHelper.Get(url); return Content(json); } #endregion #region 菜单管理 public ActionResult CreateMenu() { string access_token = weixin.AccessToken(); string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token; string data = ""; using (StreamReader sr = new StreamReader(Server.MapPath("/Config/menu.txt"))) { data = sr.ReadToEnd(); } var json = HttpHelper.Post(url, data); return Content(json); } public ActionResult DeleteMenu() { string access_token = weixin.AccessToken(); string url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + access_token; var json = HttpHelper.Get(url); return Content(json); } #endregion
返回结果
正确时的返回JSON数据包如下:
{"errcode":0,"errmsg":"ok"}错误时的返回JSON数据包如下(示例为无效菜单名长度):
{"errcode":40018,"errmsg":"invalid button name size"}
menu.txt
{ "button":[ { "name":"一级标题1", "sub_button":[ { "type":"view", "name":"二级标题1", "url":"http://xx.xx.com/1.html" }, { "type":"view", "name":"二级标题2", "url":"" }, { "type":"view", "name":"二级标题3", "url":"" }, { "type":"view", "name":"二级标题4", "url":"" }, { "type":"view", "name":"二级标题5", "url":"" }] }, { "type":"view", "name":"一级标题2", "url":"http://xx.xx.com/2.html" }, { "name":"一级标题3", "sub_button":[ { "type":"view", "name":"二级标题1", "url":"" }, { "type":"view", "name":"二级标题2", "url":"http://xx.xx.com/3-1.html" }] }] }