微信公众号开发---自定义菜单
园子里面的微信公众号的开发已经很多了,个人随笔记录得傻瓜式开发........最最最基础的开发
从上到下一步一步的走
1 #region 公众号自定义菜单管理 2 /// <summary> 3 /// 菜单数据 4 /// </summary> 5 /// <returns></returns> 6 public string PageConent() 7 { 8 9 var json = "{\"button\":[{\"name\":\"We\",\"sub_button\":[{\"type\":\"view\",\"name\":\"回顾一下\",\"url\":\"https://www.baidu.com\"}]},{\"name\":\"Are\",\"sub_button\":[{\"type\":\"view\",\"name\":\"活动一下\",\"url\":\"https://tieba.baidu.com/index.html\"}]},{\"name\":\"伐木累\",\"sub_button\":[{\"type\":\"view\",\"name\":\"吃一下\",\"url\":\"https://tieba.baidu.com/index.html\"},{\"type\":\"view\",\"name\":\"个人中心\",\"url\":\"https://tieba.baidu.com/index.html\"},{\"type\":\"click\",\"name\":\"我的订单\",\"key\":\"clickdd\"},{\"type\":\"click\",\"name\":\"WIFI密码\",\"key\":\"clickmm\"}]}]}"; 10 return json; 11 } 12 13 /// <summary> 14 /// 创建菜单 15 /// </summary> 16 /// <returns></returns> 17 public JsonResult PostInsertPage() 18 { 19 var result = new WxReturnModel(); 20 //开发阶段每次获取Token 21 var power = new WeixinPowerModel 22 { 23 AppID = WxAppId, 24 AppSecret = appsecret, 25 AccessToken = WxApi.GetToken(WxAppId, appsecret), 26 }; 27 LogUtil.WriteLog("token:" + power.AccessToken); 28 //组合参数传输 29 var conent = PageConent(); 30 result = WxApi.PostHttp<WxReturnModel>("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + power.AccessToken, conent); 31 LogUtil.WriteLog("json数据:" + conent); 32 LogUtil.WriteLog("自定义菜单创建:" + conent); 33 return Json(result, JsonRequestBehavior.AllowGet); 34 } 35 36 /// <summary> 37 /// 查询菜单 38 /// </summary> 39 /// <returns></returns> 40 public string GetPage() 41 { 42 //GetToken(); 43 var url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + GetToken(); 44 var result = WxApi.RequestUrl(url, "Get"); 45 return result; 46 } 47 /// <summary> 48 /// 删除菜单接口 49 /// </summary> 50 /// <returns></returns> 51 public string DeletePage() 52 { 53 //GetToken(); 54 var url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + GetToken(); 55 var result = WxApi.RequestUrl(url, "Get"); 56 return result; 57 } 58 #endregion 59 60 #region 公众号个性化菜单管理 61 /// <summary> 62 /// 菜单数据 63 /// </summary> 64 /// <returns></returns> 65 public string PageconditionalConent() 66 { 67 68 var json = "{\"button\":[{\"name\":\"We\",\"sub_button\":[{\"type\":\"view\",\"name\":\"回顾一下\",\"url\":\"https://www.baidu.com\"}]},{\"name\":\"Are\",\"sub_button\":[{\"type\":\"view\",\"name\":\"活动一下\",\"url\":\"https://tieba.baidu.com/index.html\"}]},{\"name\":\"伐木累\",\"sub_button\":[{\"type\":\"view\",\"name\":\"吃一下\",\"url\":\"https://tieba.baidu.com/index.html\"},{\"type\":\"view\",\"name\":\"个人中心\",\"url\":\"https://tieba.baidu.com/index.html\"},{\"type\":\"click\",\"name\":\"上海订单\",\"key\":\"clickdd\"},{\"type\":\"click\",\"name\":\"WIFI密码\",\"key\":\"clickmm\"}]}],\"matchrule\":{\"country\":\"中国\",\"province\":\"上海\"}}"; 69 return json; 70 } 71 72 /// <summary> 73 /// 新增个性化菜单 74 /// </summary> 75 /// <returns></returns> 76 public JsonResult PageconditionalInsert() 77 { 78 var result = new WxReturnModel(); 79 //开发阶段每次获取Token 80 var power = new WeixinPowerModel 81 { 82 AppID = WxAppId, 83 AppSecret = appsecret, 84 AccessToken = WxApi.GetToken(WxAppId, appsecret), 85 }; 86 LogUtil.WriteLog("token:" + power.AccessToken); 87 //组合参数传输 88 var conent = PageconditionalConent(); 89 result = WxApi.PostHttp<WxReturnModel>("https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=" + power.AccessToken, conent); 90 LogUtil.WriteLog("json数据:" + conent); 91 LogUtil.WriteLog("自定义菜单创建:" + conent); 92 return Json(result, JsonRequestBehavior.AllowGet); 93 } 94 95 /// <summary> 96 /// 删除个性化菜单 97 /// </summary> 98 /// <returns></returns> 99 public JsonResult PageDealerconditional(string menuid) 100 { 101 var result=new WxReturnModel(); 102 //开发阶段每次获取Token(正式代码出现wxID冲突,目前所有Token现用现取,独立微信开发下存Webconfig) 103 104 var token = GetToken(); 105 result = 106 WxApi.PostHttp<WxReturnModel>( 107 "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=" + token, "{\"menuid\":\""+ menuid + "\"}"); 108 return Json(result, JsonRequestBehavior.AllowGet); 109 } 110 #endregion
当中用到的一些类及方法
#region 获取Token /// <summary> /// 获取Token /// </summary> public static string GetToken(string appid, string secret) { string strJson = RequestUrl( string.Format( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret)); return GetJsonValue(strJson, "access_token"); } #endregion
#region 获取Json字符串某节点的值 /// <summary> /// 获取Json字符串某节点的值 /// </summary> public static string GetJsonValue(string jsonStr, string key) { string result = string.Empty; if (!string.IsNullOrEmpty(jsonStr)) { key = "\"" + key.Trim('"') + "\""; int index = jsonStr.IndexOf(key) + key.Length + 1; if (index > key.Length + 1) { //先截逗号,若是最后一个,截"}"号,取最小值 int end = jsonStr.IndexOf(',', index); if (end == -1) { end = jsonStr.IndexOf('}', index); } result = jsonStr.Substring(index, end - index); result = result.Trim(new [] {'"', ' ', '\"'}); //过滤引号或空格 } } return result; } #endregion
public static T PostHttp<T>(string url, string dic) { LogUtil.WriteLog("第一种请求:"+dic); var returnJson = PostHttp(url, dic); return JsonConvert.DeserializeObject<T>(returnJson); } public static string PostHttp(string url, string dic) { //HttpWebRequest对象实例:该类用于获取和操作HTTP请求 创建WebRequest对象 var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; var payload = Encoding.UTF8.GetBytes(dic); //填充POST数据 request.ContentLength = payload.Length; request.ContentType = "application/x-www-form-urlencoded"; var writer = request.GetRequestStream(); writer.Write(payload, 0, payload.Length); writer.Close(); //HttpWebResponse对象实例:该类用于获取和操作HTTP应答 var response = (HttpWebResponse)request.GetResponse(); //构造字节流 StreamReader reader = new StreamReader(response.GetResponseStream()); //流从头读至尾 string jsonp = reader.ReadToEnd(); //LogUtil.WriteLog("结果:" + jsonp); //LogUtil.WriteLog("---------------------------------------------------------------------"); reader.Close(); response.Close(); return jsonp; }
public class WxReturnModel { public string errcode { get; set; } public string errmsg { get; set; } public string menuid { get; set; } }

浙公网安备 33010602011771号