#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