《C#微信支付系列(2)-自定义菜单管理》

2.0于定义菜单管理

 

①连接人说明

 

微信服务号聊天窗口下面的菜单项(有的群众号出启用有的虽没),这个得于编写模式简单布置,也足以以出模式代码配置。微信公众平台开发者文档:微信公众号支付平台创建于定义菜单,可以看看创建菜单的一些注意事项,下面的用网页调试工具调试该接口,只是调试接口是否好正常调用,并无是直接创造菜单,根据微信自定义菜单管理文档菜单事件只是分为两种植:

click: 用户点击click类型按钮后,微信服务器会经信息接口推送消息类型也event 的结构被开发者(参考消息接口指南),并且带来齐按钮中开发者填写的key值,开发者可以经从定义的key值与用户展开交互。

view: 用户点击view类型按钮后,微信客户端将会见打开开发者在按钮中填入的url值 (即网页链接),达到打开网页的目的,建议与网页授权获取用户中心信息接口结合,获得用户的登入个人信息。

设置菜单JSON格式(可根据需要开展改动):

{
     "button":[
     {    
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {    
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"视频",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

安排菜单的注意点:

1、自定义菜单最多包3个一级菜单,每个一级菜单最多含5只二级菜单。

2、一级菜单最多4单汉字,二级菜单最多7只汉字,多出去的部分用会晤因“…”代替。

3、创建于定义菜单后,由于微信客户端缓存,需要24钟头微信客户端才见面表现出。测试时好尝尝取消关注群众账号后再行关注,则足以看出创建后的法力。

 接口参数配置:

图片 1

 

②请求接口:

 

接口调用请求说明:

http请求方式:POST(请动https协议)

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

 

POST请求接口调用接口凭据ACCESS_TOKEN的获得方式可参见文档(获取ACCESS_TOKEN文档)使用POST方式带上ACCESS_TOKEN以及菜单JSON请求接口,具体落实代码如下:

 

 1 /// <summary>
 2 /// 创建菜单事件
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 protected void createMenu_Click(object sender, EventArgs e)
 7 {
 8    FileStream fs1 = new FileStream(Server.MapPath("~/") + "\\menuInfo.txt", FileMode.Open);
 9    StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("GBK"));
10    string menu = sr.ReadToEnd();
11    sr.Close();
12    fs1.Close();
13    CreateMenu("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN", menu);
14 }

 

 1 /// <summary>
 2 /// 创建公众号菜单
 3 /// </summary>
 4 /// <param name="posturl">URL</param>
 5 /// <param name="postData">菜单JSON数据</param>
 6 /// <returns></returns>
 7 public void CreateMenu(string posturl, string postData)
 8 {
 9    Stream outstream = null;
10    Stream instream = null;
11    StreamReader sr = null;
12    HttpWebResponse response = null;
13    HttpWebRequest request = null;
14    Encoding encoding = Encoding.UTF8;
15    byte[] data = encoding.GetBytes(postData);
16 
17    request = WebRequest.Create(posturl) as HttpWebRequest;
18    CookieContainer cookieContainer = new CookieContainer();
19    request.CookieContainer = cookieContainer;
20       request.AllowAutoRedirect = true;
21       request.Method = "POST";
22       request.ContentType = "application/x-www-form-urlencoded";
23       request.ContentLength = data.Length;
24       outstream = request.GetRequestStream();
25       outstream.Write(data, 0, data.Length);
26       outstream.Close();
27       response = request.GetResponse() as HttpWebResponse;
28       instream = response.GetResponseStream();
29       sr = new StreamReader(instream, encoding);
30       string content = sr.ReadToEnd();
31       Context.Response.Write(content);
32 }

接口返回结果:

科学时返回的JSON数据包格式如下:

{“errcode”:0,”errmsg”:”ok”}

 

左时之回到JSON数据包如下(示例为无用菜单名长度):

{“errcode”:40018,”errmsg”:”invalid button name size”}

 


一旦你针对《C#微信支付系列》这个系列感兴趣的话,可以关心自己的其它文章(持续创新中…),系列随笔地址如下:

《C#微信支付系列(Top)-微信开发总体学习路线》

《C#微信支付系列(4)-接收 /
返回文本消息》

《C#微信支付系列(3)-获取接口调用凭据》

《C#微信支付系列(2)-自定义菜单管理》

《C#微信支付系列(1)-启用开发者模式》


相关文章