


C# développe le portail WeChat et applique la gestion et la soumission des menus du portail WeChat au serveur WeChat
Mar 02, 2017 am 10:24 AMLes comptes publics WeChat (y compris les comptes de service et les comptes d'abonnement) peuvent personnaliser les paramètres du menu. Afin de faciliter la gestion, nous gérons et conservons généralement les données du menu localement lorsque des mises à jour sont nécessaires, elles sont mises à jour sur le serveur WeChat. C'est ?a. Sur la base de cette méthode, cet article présente l'opération de soumission de menus au serveur WeChat dans mon système de gestion de plateforme de portail WeChat. Le système de gestion des applications du portail WeChat adopte la route basée sur MVC EasyUI. étant donné que la plupart des serveurs de noms de domaine ne peuvent prendre en charge que .NET4.0, il utilise MVC3 et C#4.0 comme base de développement et peut essentiellement être déployé sur n'importe quel serveur .NET.
1. Exigences relatives aux menus WeChat et à la conception de l'interface associée
Nous pouvons gérer les menus des comptes publics WeChat localement via le site Web et maintenir la relation hiérarchique entre eux puisque WeChat nécessite une personnalisation des exigences du menu. sont relativement strictes. Voici les exigences de WeChat pour les menus personnalisés?:
Actuellement, les menus personnalisés incluent jusqu'à 3 menus de premier niveau, et chaque menu de premier niveau contient jusqu'à 5 menus de deuxième niveau. Le menu de premier niveau peut contenir jusqu'à 4 caractères chinois, et le menu de deuxième niveau peut contenir jusqu'à 7 caractères chinois. Les parties supplémentaires seront remplacées par "...".
Par conséquent, nous suivons l'accord et ne franchissons pas la frontière. Sinon, lors de la soumission du menu au serveur, certaines erreurs peuvent être renvoyées. Nous devons simplement faire attention à ces détails lors de la création du local. gestion des menus. J'ai également présenté certains contenus des menus personnalisés dans un premier article. Si vous en avez besoin, vous pouvez consulter ? Développement C# du portail et de l'application WeChat (6) - Opérations de gestion du menu du portail WeChat ?. Dans le système de gestion de la plateforme, l'API d'interface de menu introduite précédemment est appelée pour mettre en ?uvre l'opération de soumission du menu au serveur.
Selon les exigences du menu personnalisé de WeChat, j'ai con?u plusieurs interfaces de base pour le menu de WeChat dans le système de gestion comme suit.
L'interface de gestion du menu principal est la suivante.
La conception de l'interface du menu d'ajout est la suivante
L'interface de modification du menu WeChat est la suivante
La définition du menu WeChat est stockée dans la base de données. Si elle doit être soumise au serveur WeChat et prendre effet, elle doit appeler l'interface API WeChat pour être traitée. une soumission dans le contr?leur de la page. La méthode de traitement au serveur.
2. Soumettez le menu au serveur WeChat
Les interfaces ci-dessus sont principalement basées sur les propriétés du menu WeChat. Pour la maintenance et la gestion des menus, notre objectif ultime est de les mettre sur le serveur afin que nous puissions gérer les opérations événementielles liées aux clients.
Pour soumettre le menu, nous pouvons le soumettre en utilisant l'Ajax de JQuery dans la page MVC View (à condition d'ajouter le traitement correspondant dans le contr?leur, qui sera présenté plus tard). Le code du script d'interface est le suivant.
//綁定提交按鈕的的點擊事件 ????????function?BindSubmitEvent()?{ ????????????$("#btnSubmit").click(function?()?{ ????????????????$.messager.confirm("提交菜單確認(rèn)",?"您確認(rèn)需要提交菜單到微信服務(wù)器嗎?",?function?(action)?{ ????????????????????if?(action)?{ ????????????????????????//提交數(shù)據(jù) ????????????????????????$.ajax({ ????????????????????????????url:?'/Menu/UpdateWeixinMenu', ????????????????????????????type:?'post', ????????????????????????????dataType:?'json', ????????????????????????????success:?function?(data)?{ ????????????????????????????????if?(data.Success)?{ ????????????????????????????????????$.messager.alert("提示",?"提交微信菜單成功"); ????????????????????????????????} ????????????????????????????????else?{ ????????????????????????????????????$.messager.alert("提示",?"提交微信菜單失敗:"?+?data.ErrorMessage); ????????????????????????????????} ????????????????????????????}, ????????????????????????????data:?'' ????????????????????????}); ????????????????????} ????????????????}); ????????????}); ????????}
Le code rouge ci-dessus est la méthode que nous avons définie dans le contr?leur MVC. Il nous suffit d'appeler la méthode du contr?leur via la méthode POST, le menu. peut être soumis au serveur WeChat. Quant aux détails spécifiques, nous pouvons simplement les déplacer vers le contr?leur ou un niveau inférieur pour le traitement. La page n'a pas besoin d'impliquer trop de logique.
Le code de la méthode UpdateWeixinMenu du contr?leur de menu ci-dessus est le suivant (principalement basé sur le modèle de développement que j'ai présenté plus t?t).
///?<summary> ????????///更新微信菜單 ????????///?</summary> ????????///?<returns></returns> ????????public?ActionResult?UpdateWeixinMenu() ????????{ ????????????string?token?=?base.GetAccessToken(); ????????????MenuListJson?menuJson?=?GetWeixinMenu(); ????????????IMenuApi?menuApi?=?new?MenuApi(); ????????????CommonResult?result?=?menuApi.CreateMenu(token,?menuJson); ????????????return?ToJsonContent(result); ????????}
Les méthodes ci-dessus sont présentées une par une ici. GetAccessToken sert principalement à obtenir le jeton d'accès pour l'opération en cours.Les opérations ici peuvent être mises en cache, sinon, le AccessToken est obtenu fréquemment après avoir atteint le nombre spécifié de fois par jour, il ne peut plus être utilisé ce jour-là.
La méthode GetWeixinMenu est principalement destinée à des fins de commodité. Elle encapsule une fonction pour obtenir les données du menu personnalisé de WeChat. Le code spécifique est le suivant.
???????///?<summary> ///?<summary> ????????///?生成微信菜單的Json數(shù)據(jù) ????????///?</summary> ????????///?<returns></returns> ????????private?MenuListJson?GetWeixinMenu() ????????{ ????????????MenuListJson?menuJson?=?new?MenuListJson(); ????????????List<MenuNodeInfo>?menuList?=?BLLFactory<Menu>.Instance.GetTree(); ????????????foreach?(MenuNodeInfo?info?in?menuList) ????????????{ ????????????????ButtonType?type?=?(info.Type?==?"click")???ButtonType.click?:?ButtonType.view; ????????????????string?value?=?(type?==?ButtonType.click)???info.Key?:?info.Url; ????????????????MenuJson?weiInfo?=?new?MenuJson(info.Name,?type,?value); ????????????????AddSubMenuButton(weiInfo,?info.Children); ????????????????menuJson.button.Add(weiInfo); ????????????} ????????????return?menuJson; ????????}
?private?void?AddSubMenuButton(MenuJson?menu,?List<MenuNodeInfo>?menuList) ????????{ ????????????if?(menuList.Count?>?0) ????????????{ ????????????????menu.sub_button?=?new?List<MenuJson>(); ????????????} ????????????foreach?(MenuNodeInfo?info?in?menuList) ????????????{ ????????????????ButtonType?type?=?(info.Type?==?"click")???ButtonType.click?:?ButtonType.view; ????????????????string?value?=?(type?==?ButtonType.click)???info.Key?:?info.Url; ????????????????MenuJson?weiInfo?=?new?MenuJson(info.Name,?type,?value); ????????????????menu.sub_button.Add(weiInfo); ????????????????AddSubMenuButton(weiInfo,?info.Children); ????????????} ????????}
上面的代碼,就是把本地存儲的MenuNodeInfo數(shù)據(jù),通過遞歸遍歷的方式,轉(zhuǎn)換為微信的自定義菜單實體MenuJson,這樣我們調(diào)用API就非常方便了,這個函數(shù)主要負(fù)責(zé)構(gòu)造對應(yīng)的實體信息就是了。至于調(diào)用微信API提交菜單的事情,還是讓API自己親自處理為好,他們的代碼如下所示(也就是上面函數(shù)的部分代碼)。
????????IMenuApi?menuApi?=?new?MenuApi(); ????????CommonResult?result?=?menuApi.CreateMenu(token,?menuJson);????????return?ToJsonContent(result);
最終的結(jié)果是返回一個通用的結(jié)果CommonResult,這個結(jié)果對象,非常方便腳本的處理,如果有錯誤,則提示錯誤,否則也方便判斷布爾值,也就是上面的頁面代碼腳本。
success:?function?(data)?{ ????????if?(data.Success)?{ ??????????????????$.messager.alert("提示",?"提交微信菜單成功"); ???????????} ??????????else?{ ????????????????????$.messager.alert("提示",?"提交微信菜單失敗:"?+?data.ErrorMessage); ????????????} ???????},
通過以上幾部分的代碼,我們就可以實現(xiàn)前臺MVC的視圖界面,調(diào)用后臺封裝好的微信API,實現(xiàn)菜單的提交處理了。
更多C#開發(fā)微信門戶及應(yīng)用微信門戶菜單管理及提交到微信服務(wù)器?相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)