


C# entwickelt das WeChat-Portal und wendet Verwaltungsvorg?nge des WeChat-Portalmenüs an
Mar 31, 2017 pm 03:45 PMIn den vorherigen Artikeln habe ich meine eigene technische Erkundung und die damit verbundene Erfahrungszusammenfassung der WeChat-API fortgesetzt Einerseits besteht der Zweck darin, mit allen zu diesem Aspekt zu interagieren und zu kommunizieren. Andererseits konzentrieren wir uns auch auf die Entwicklung der zugrunde liegenden Technologie von WeChat-Anwendungen und die Konsolidierung der Grundmodule, damit sie in zukünftigen Anwendungen verwendet werden k?nnen. In diesem Aufsatz werden weiterhin die Verwaltungsvorg?nge des WeChat-Portalmenüs vorgestellt. 1. Grundinformationen des Menüs
Für das Menü des WeChat-Portals k?nnen sowohl allgemeine Dienstkonten als auch Abonnementkonten die Entwicklung dieses Moduls haben, das Abonnementkonto scheint dies jedoch zu ben?tigen Es muss authentifiziert werden, bevor es in Besitz genommen werden kann, und das Dienstkonto kann ohne Zertifizierung genutzt werden. Dieses Menü kann einen
http://www.miracleart.cn/code/6685.html" target="_blank">Bearbeitungsmodus Sekund?rmenüs. Das Menü der ersten Ebene kann bis zu 4 chinesische Schriftzeichen enthalten 7 chinesische Zeichen. Die zus?tzlichen Teile werden durch ?...“ ersetzt. Schnittstelle kann zwei Arten von Schaltfl?chen implementieren:
Die Die vom Menü selbst übermittelten Daten sindclick: 用戶點擊click類型按鈕后,微信服務(wù)器會通過消息接口推送消息類型為 event???? 的結(jié)構(gòu)給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進行交互; view: 用戶點擊view類型按鈕后,微信客戶端將會打開開發(fā)者在按鈕中填寫的url值???? (即網(wǎng)頁鏈接),達到打開網(wǎng)頁的目的,建議與網(wǎng)頁授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個人信息。Json
-DatenString . Die offiziellen Beispieldaten lauten wie folgt:
Oben k?nnen wir das unterschiedliche Menü sehen Typen haben unterschiedliche Feldinhalte, z. B. solche mit dem Attribut ?URL“ und dem Typ ?Klick“, und das Menü kann im Allgemeinen das Attribut ?Untermenü“ haben Erstellen Sie die entsprechenden Menü-Entit?tsklasseninformationen, sie k?nnen nicht auf einmal analysiert werden.{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "type":"click", "name":"歌手簡介", "key":"V1001_TODAY_SINGER" }, { "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" }] }] }
2. Ich habe einige WeChat-Schnittstellen-Entwicklungscodes gesehen, die das Menü in mehrere Entit?ten unterteilen Klassen und geben Sie die Vererbungsbeziehung an und konfigurieren Sie dann deren Attribute. Die ungef?hre Beziehung ist wie folgt:
Mit diesem Attribut k?nnen wir mehr Attribute der Entit?tsklasseninformationen des Menüs zusammenführen ??>Bei so vielen Informationen muss ich jedoch unterschiedliche Attributtypen für verschiedene Typen angeben. Was ist, wenn ich das Schlüsselattribut im Menü ?Ansichtstyp“ festlege? MehrereKonstruktoren werden verwendet, um verschiedene Menüinformationen zu erstellen.
[JsonProperty( NullValueHandling = NullValueHandling.Ignore)]Objekt
hinzufügen für Untermenü.
/// <summary> /// 菜單基本信息 /// </summary> public class MenuInfo { /// <summary> /// 按鈕描述,既按鈕名字,不超過16個字節(jié),子菜單不超過40個字節(jié) /// </summary> public string name { get; set; } /// <summary> /// 按鈕類型(click或view) /// </summary> [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string type { get; set; } /// <summary> /// 按鈕KEY值,用于消息接口(event類型)推送,不超過128字節(jié) /// </summary> [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string key { get; set; } /// <summary> /// 網(wǎng)頁鏈接,用戶點擊按鈕可打開鏈接,不超過256字節(jié) /// </summary> [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string url { get; set; } /// <summary> /// 子按鈕數(shù)組,按鈕個數(shù)應(yīng)為2~5個 /// </summary> [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List<MenuInfo> sub_button { get; set; } .......
Da nur die Attributinhalte von Name und sub_button angegeben sind und die anderen Inhalte null sind, enth?lt das natürlich erstellte JSON diese nicht, was perfekt ist!
Um Menüinformationen zu erhalten, müssen wir auch zwei Entit?tsobjekte definieren, wie unten gezeigt.
3. Schnittstellenimplementierung von Menüverwaltungsvorg?ngen/// <summary> /// 參數(shù)化構(gòu)造函數(shù) /// </summary> /// <param name="name">按鈕名稱</param> /// <param name="buttonType">菜單按鈕類型</param> /// <param name="value">按鈕的鍵值(Click),或者連接URL(View)</param> public MenuInfo(string name, ButtonType buttonType, string value) { this.name = name; this.type = buttonType.ToString(); if (buttonType == ButtonType.click) { this.key = value; } else if(buttonType == ButtonType.view) { this.url = value; } }
Aus der Definition von WeChat k?nnen wir ersehen, dass wir Menüinformationen abrufen, Menüs erstellen und l?schen< k?nnen API. ??>Menüs, dann definieren wir ihre Schnittstellen wie folgt.
/// <summary> /// 參數(shù)化構(gòu)造函數(shù),用于構(gòu)造子菜單 /// </summary> /// <param name="name">按鈕名稱</param> /// <param name="sub_button">子菜單集合</param> public MenuInfo(string name, IEnumerable<MenuInfo> sub_button) { this.name = name; this.sub_button = new List<MenuInfo>(); this.sub_button.AddRange(sub_button); }
Die spezifische Implementierung zum Abrufen von Menüinformationen ist wie folgt.
/// <summary> /// 獲取菜單數(shù)據(jù) /// </summary> /// <param name="accessToken">調(diào)用接口憑證</param> /// <returns></returns> public MenuJson GetMenu(string accessToken) { MenuJson menu = null; var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/get?access_token={0}", accessToken); MenuListJson list = JsonHelper<MenuListJson>.ConvertJson(url); if (list != null) { menu = list.menu; } return menu; }
這里就是把返回的Json數(shù)據(jù),統(tǒng)一轉(zhuǎn)換為我們需要的實體信息了,一步到位。
調(diào)用代碼如下所示。
private void btnGetMenuJson_Click(object sender, EventArgs e) { IMenuApi menuBLL = new MenuApi(); MenuJson menu = menuBLL.GetMenu(token); if (menu != null) { Console.WriteLine(menu.ToJson()); } }
創(chuàng)建和刪除菜單對象的操作實現(xiàn)如下所示。
/// <summary> /// 創(chuàng)建菜單 /// </summary> /// <param name="accessToken">調(diào)用接口憑證</param> /// <param name="menuJson">菜單對象</param> /// <returns></returns> public CommonResult CreateMenu(string accessToken, MenuJson menuJson) { var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", accessToken); string postData = menuJson.ToJson(); return Helper.GetExecuteResult(url, postData); } /// <summary> /// 刪除菜單 /// </summary> /// <param name="accessToken">調(diào)用接口憑證</param> /// <returns></returns> public CommonResult DeleteMenu(string accessToken) { var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={0}", accessToken); return Helper.GetExecuteResult(url); }
看到這里,有些人可能會問,實體類你簡化了,那么創(chuàng)建菜單是不是挺麻煩的,特別是構(gòu)造對應(yīng)的信息應(yīng)該如何操作呢?前面不是介紹了不同的構(gòu)造函數(shù)了嗎,通過他們簡單就搞定了,不用記下太多的實體類及它們的繼承關(guān)系來處理菜單信息。
private void btnCreateMenu_Click(object sender, EventArgs e) { MenuInfo productInfo = new MenuInfo("軟件產(chǎn)品", new MenuInfo[] { new MenuInfo("病人資料管理系統(tǒng)", ButtonType.click, "patient"), new MenuInfo("客戶關(guān)系管理系統(tǒng)", ButtonType.click, "crm"), new MenuInfo("酒店管理系統(tǒng)", ButtonType.click, "hotel"), new MenuInfo("送水管理系統(tǒng)", ButtonType.click, "water") }); MenuInfo frameworkInfo = new MenuInfo("框架產(chǎn)品", new MenuInfo[] { new MenuInfo("Win開發(fā)框架", ButtonType.click, "win"), new MenuInfo("WCF開發(fā)框架", ButtonType.click, "wcf"), new MenuInfo("混合式框架", ButtonType.click, "mix"), new MenuInfo("Web開發(fā)框架", ButtonType.click, "web"), new MenuInfo("代碼生成工具", ButtonType.click, "database2sharp") }); MenuInfo relatedInfo = new MenuInfo("相關(guān)鏈接", new MenuInfo[] { new MenuInfo("公司介紹", ButtonType.click, "Event_Company"), new MenuInfo("官方網(wǎng)站", ButtonType.view, "http://www.iqidi.com"), new MenuInfo("提點建議", ButtonType.click, "Event_Suggestion"), new MenuInfo("聯(lián)系客服", ButtonType.click, "Event_Contact"), new MenuInfo("發(fā)郵件", ButtonType.view, "http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=S31yfX15fn8LOjplKCQm") }); MenuJson menuJson = new MenuJson(); menuJson.button.AddRange(new MenuInfo[] { productInfo, frameworkInfo, relatedInfo }); //Console.WriteLine(menuJson.ToJson()); if (MessageUtil.ShowYesNoAndWarning("您確認要創(chuàng)建菜單嗎") == System.Windows.Forms.DialogResult.Yes) { IMenuApi menuBLL = new MenuApi(); CommonResult result = menuBLL.CreateMenu(token, menuJson); Console.WriteLine("創(chuàng)建菜單:" + (result.Success ? "成功" : "失敗:" + result.ErrorMessage)); } }
菜單的效果如下:
?更多C# entwickelt das WeChat-Portal und wendet Verwaltungsvorg?nge des WeChat-Portalmenüs an相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)