ACCESS《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钟头微信客户端才会显示出来。测试时得以品尝废除关切群众账号后再次关心,则足以看出创制后的成效。

 接口参数配置:

ACCESS 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)-启用开发者方式》


相关文章