程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 《C#微信開發系列(2)-自定義菜單管理》,

《C#微信開發系列(2)-自定義菜單管理》,

編輯:C#入門知識

《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小時微信客戶端才會展現出來。測試時可以嘗試取消關注公眾賬號後再次關注,則可以看到創建後的效果。

 接口參數配置:

 

②請求接口:

 

接口調用請求說明:

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 creayeMenu_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"}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved