一.前言
开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档.
接口文档地址: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.
public string access_token { get; set; } protected void Page_Load(object sender, EventArgs e) { FileStream fs1 = new FileStream(Server.MapPath(".") + "\\menu.txt", FileMode.Open); StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("UTF-8")); string menu = sr.ReadToEnd(); sr.Close(); fs1.Close(); var str = 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
代码如下:
public string GetPage(string posturl, string postData) { 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) 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; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); string err = string.Empty; Response.Write(content); return content; } catch (Exception ex) { string err = ex.Message; return string.Empty; } }
以上所述就是本文的全部内容了,希望大家能够喜欢
本文向大家介绍.NET微信公众号开发之查询自定义菜单,包括了.NET微信公众号开发之查询自定义菜单的使用技巧和注意事项,需要的朋友参考一下 一.前言 前面我们已经创建好了我们的自定义菜单。那么我们现在要如何查询我们自定义的菜单。 原理都是一样的,而且都是相当简单,只是接口地址文档换掉了。 二、开始编码 同样我们首先创建好我的查询页面,在这里我们使用aspx页面 selectMenu.a
本文向大家介绍微信公众平台开发之自定义菜单.Net代码解析,包括了微信公众平台开发之自定义菜单.Net代码解析的使用技巧和注意事项,需要的朋友参考一下 用户自定义菜单制作时,需要用到access_token,我们直接使用前面讲解的IsExistAccess_Token()函数。我理解的微信公共平台里面菜单分为button和sub_button,即菜单和子菜单,这些菜单都有一个name的属性,类别分
本文向大家介绍.NET微信公众号开发之公众号消息处理,包括了.NET微信公众号开发之公众号消息处理的使用技巧和注意事项,需要的朋友参考一下 一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们要认真阅读,官方给我们的文档:http://mp.wei
本文向大家介绍.NET微信公众号开发之准备工作,包括了.NET微信公众号开发之准备工作的使用技巧和注意事项,需要的朋友参考一下 一.前言 微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。形成了一种主流的线上线下微信互动营销方式。 二.开发准备 在开发以前,公司给你把一些资料准备好
本文向大家介绍Java微信公众平台之自定义菜单,包括了Java微信公众平台之自定义菜单的使用技巧和注意事项,需要的朋友参考一下 一、自定义菜单的说明和按钮类型 1、菜单说明 1)自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 2)一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。 3)创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号
本文向大家介绍微信公众号开发之设置自定义菜单实例代码【java版】,包括了微信公众号开发之设置自定义菜单实例代码【java版】的使用技巧和注意事项,需要的朋友参考一下 本实例是为了实现在管理后台实现微信菜单的添加删除管理。 1、首先我们需要新建一个数据库表用于存放menu菜单项 可包含的字段有id、父类id、name、排序、是否显示、类型(view、click)、链接、adddate 注意后台存m