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

一.前言

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

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

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

二.准备工做

首先把咱们要建立的菜单写在一个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这些参数须要换成咱们本身的,这些参数咱们能够放在配置文件中。也能够单独的放在一个帮助类里面。cookie

     同时在建立菜单的时候咱们须要带上个人access_token这个令牌来验证咱们的身份,那么咱们首先要作的就是获取咱们的这个令牌,那个这个令牌要如何获取了,咱们能够经过一个接口获取 ,只须要传递咱们的appid和secret这个两个参数app

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

  上面的GetPage方法的返回值。这样咱们就能够获取咱们的令牌了。post

      最后一步:带上咱们的令牌,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;
            }
        }

五.微信公众号开发系列

1.0初始微信公众号

2.0建立自定义菜单

3.0查询自定义菜单

4.0公众号消息处理

5.0微信支付

6.0模板消息

相关文章
相关标签/搜索