麦田

不积跬步无以至千里.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 #region 公众号创建菜单接口
 //创建菜单主方法
 private string createMenu()
 {
     //1、将创建菜单的JSON数据保存到menu.txt了,也可以直接将JSON写成一个string串
     string menu = @" //这个是微信公众号官网的例子,我直接拿来使用了---郑林 2019-11-19
     {
       ""button"":[
           {    
               ""type"":""view"",
               ""name"":""更多优惠券"",
               ""url"":""http://xxxx.space""
           }]
      }
     ";

     //2、获取我的访问令牌
     string my_token = getMyWeChatToken();

     //3、组合成创建菜单的URL
     string url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", my_token);

     //4、调用创建菜单的方法,并返回结果
     return createMenu(url, menu);
 }

 //创建菜单
 private string createMenu(string url, string menu_txt)
 {
     Stream outstream = null;
     Stream instream = null;
     StreamReader sr = null;
     HttpWebResponse response = null;
     HttpWebRequest request = null;
     Encoding encoding = Encoding.UTF8;
     byte[] data = encoding.GetBytes(menu_txt);

     request = WebRequest.Create(url) as HttpWebRequest;//创建请求

     //写入数据
     CookieContainer cookieContainer = new CookieContainer();
     request.CookieContainer = cookieContainer;
     request.AllowAutoRedirect = true;
     request.Method = "POST";
     request.ContentType = "application/x-www-form-urlencoded";
     request.ContentLength = data.Length;
     outstream = request.GetRequestStream();
     outstream.Write(data, 0, data.Length);
     outstream.Close();

     //读取返回结果
     response = request.GetResponse() as HttpWebResponse;
     instream = response.GetResponseStream();
     sr = new StreamReader(instream, encoding);
     string content = sr.ReadToEnd();

     //读取操作码
     JObject my_toke_obj = (JObject)JsonConvert.DeserializeObject(content);
     string error_code = my_toke_obj["errcode"].ToString();

     return error_code;
 }

 //获取访问令牌
 public string getMyWeChatToken()
 {

     string urltemp = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";

     //需要填写自己的APPID和APPSECRET
     string url = string.Format(urltemp, AppID, AppSecret);

     HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
     request.Method = "GET";
     request.ContentType = "application/x-www-form-urlencoded";//链接类型
     HttpWebResponse response = request.GetResponse() as HttpWebResponse;

     string access_token = "";
     using (Stream s = response.GetResponseStream())
     {
         StreamReader reader = new StreamReader(s, Encoding.UTF8);
         access_token = reader.ReadToEnd();
     }


     JObject my_toke_obj = (JObject)JsonConvert.DeserializeObject(access_token);

     string my_token = my_toke_obj["access_token"].ToString();

     return my_toke_obj["access_token"].ToString();

 }
 #endregion

 

posted on 2025-04-12 11:54  一些记录  阅读(18)  评论(0)    收藏  举报