.NET微信公众号开发-2.0创建自定义菜单

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

一.前言开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档.

接口文档地址:http://mp.weixin.QQ.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

看了这些个文档,基本意思明白了,就是我们把我们要创建的菜单创建好,post到微信的服务器上面,微信服务器然后给我们一些状态码,从而判断我们的菜单是否创建成功,只是在发送json数据以前我们要做一 些身份验证。

二.准备工作首先把我们要创建的菜单写在一个txt文本中:

{"button":[

{"type":"view","name":"付停车费","url":"http://www.baidu.com"},{"name":"个人中心","sub_button":[

{"type":"view","name":"个人信息","url":"http://www.baidu.com"},

{"type":"view","name":"订单查询","url":"http://www.baidu.com"},

{"type":"view","name":"使用帮助","url":"http://www.baidu.com"},

{"type":"view","name":"下载APP","url":"http://www.baidu.com"}]

}]

}

三.开始编码 首先我们创建一个一般处理程序createMenu.ashx.

publicstringaccess_token {get;set; }PRotectedvoidPage_Load(objectsender, EventArgs e)

{

FileStream fs1=newFileStream(Server.MapPath(".") +"\\menu.txt", FileMode.Open);

StreamReader sr=newStreamReader(fs1, Encoding.GetEncoding("UTF-8"));stringmenu =sr.ReadToEnd();

sr.Close();

fs1.Close();varstr = GetPage("https://api.weixin.qq.com/cgi-bin/token?

grant_type=client_credential&appid=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1","");

JObject jo=JObject.Parse(str);

access_token= jo["access_token"].ToString();

GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+ access_token +"", menu);

}

这里需要注意的是appid,secret这些参数需要换成我们自己的,这些参数我们可以放在配置文件中。也可以单独的放在一个帮助类里面。

同时在创建菜单的时候我们需要带上我的access_token这个令牌来验证我们的身份,那么我们首先要做的就是获取我们的这个令牌,那个这个令牌要如何获取了,我们可以通过一个接口获取 ,只需要传递我们的appid和secret这个两个参数

{"access_token":"jVLAT9Rp9dNgxI4pb4RWlSx_9HJLXICmk_uWDlRtAug8wcaWhZZ10eqZCYRZrEwCIJf1-vBhS9YEX00Dj7q__lJCyTIWOxTruOd25opkf-0","expires_in":7200}

上面的GetPage方法的返回值。这样我们就可以获取我们的令牌了。

最后一步:带上我们的令牌,post我们的json菜单数据就可以创建菜单了。

当你看到如下代码:

{"errcode":0,"errmsg":"ok"}

说明你的菜单创建成功了。

四:GetPage 代码如下:

publicstringGetPage(stringposturl,stringpostData)

{

Stream outstream=null;

Stream instream=null;

StreamReader sr=null;

HttpWebResponse response=null;

HttpWebRequest request=null;

Encoding encoding=Encoding.UTF8;byte[] data =encoding.GetBytes(postData);//准备请求...try{//设置参数request = WebRequest.Create(posturl)asHttpWebRequest;

CookieContainer cookieContainer=newCookieContainer();

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()asHttpWebResponse;//直到request.GetResponse()程序才开始向目标网页发送Post请求instream =response.GetResponseStream();

sr=newStreamReader(instream, encoding);//返回结果网页(html)代码stringcontent =sr.ReadToEnd();stringerr =string.Empty;

Response.Write(content);returncontent;

}catch(Exception ex)

{stringerr =ex.Message;returnstring.Empty;

}

}

五.微信公众号开发系列1.0初始微信公众号

2.0创建自定义菜单

3.0查询自定义菜单

4.0公众号消息处理

5.0微信支付

6.0模板消息

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有