


Développement C# du portail WeChat et application de l'encapsulation et utilisation des enveloppes rouges WeChat cash
Mar 07, 2017 am 09:54 AMAprès le dernier essai, après avoir amélioré et reconstruit l'ensemble du cadre WeChat, le paiement WeChat, le paiement d'entreprise, les enveloppes rouges en espèces, les bons et divers coupons de carte ont été emballés, et le paiement WeChat a été inclus et la partie enveloppe rouge shake est courante parties des comptes officiels et des comptes d'entreprise. Ces interfaces liées au paiement peuvent être appelées dans les comptes officiels et les comptes d'entreprise. Après une série d'optimisation et de tri, ces contenus seront ajoutés un par un, en espérant que tout le monde aime et soutienne.
1. Le concept et l'utilisation des enveloppes rouges en espèces
1) Scénarios d'utilisation
Les enveloppes rouges en espèces WeChat Pay sont développées pour les commer?ants WeChat Pay. Les capacités spécifiques sont les suivantes?:
◆ Lorsque les commer?ants appellent l'interface, ils émettent des enveloppes rouges en spécifiant l'objet d'envoi et le montant de l'envoi. Cette méthode permet aux commer?ants de l'appliquer de manière flexible à une variété de scénarios d'activité riches <.>
◆ Collecte Après avoir re?u l'enveloppe rouge, les fonds de l'utilisateur seront directement transférés vers le changement WeChat, évitant ainsi le processus d'attribution compliqué et offrant aux utilisateurs une expérience fluide du paiement WeChat2) Règles d'envoi des enveloppes rouges WeChat
Règles de fréquence d'envoi
◆ Le nombre d'enveloppes rouges envoyées par minute ne doit pas dépasser 1800◆ Le même numéro de commer?ant, le nombre maximum d'enveloppes rouges envoyées par minute Le même utilisateur envoie une enveloppe rouge
Règles des enveloppes rouges◆ Le le montant d'une seule enveloppe rouge est compris entre [1,00 yuans, 200,00 yuans] ;
◆ La même enveloppe rouge ne peut être envoyée qu'à un seul utilisateur (si les règles ci-dessus ne répondent pas à vos besoins, veuillez envoyer un e-mail ; à wxhongbao@tencent.com pour les instructions de mise à niveau)
◆ Si l'enveloppe rouge n'est pas réclamée 72 heures après son émission, elle sera traitée. Remboursement
3) Processus d'appel de l'interface enveloppe rouge WeChat
◆ Appel d'API en arrière-plan?: communiquer avec le développement en détail lors de l'entrée dans le processus de débogage commun
◆ Avertir le serveur?: informer le serveur?; de l'openID de l'utilisateur qui a re?u l'enveloppe rouge WeChat, et informer le serveur du montant re?u par l'utilisateur
◆ Déduire de l'argent du compte professionnel : Une fois que le serveur aura obtenu l'information, il déduira l'argent ; de l'argent du compte professionnel correspondant Obtenez le montant correspondant?;
◆ échec de l'appel?: l'appel échoue en raison du non-respect des règles d'envoi, d'un solde insuffisant du compte professionnel, etc., et d'un retour d'informations à l'appelant?;
◆ Envoi réussi : enveloppe rouge WeChat au public Le compte envoie l'enveloppe rouge correspondante à l'utilisateur correspondant
2. Enveloppe rouge Cash
Description de l'interface et Le package C# est utilisé par les entreprises pour envoyer des enveloppes rouges aux utilisateurs individuels de WeChat. enveloppes de montants spécifiés à l’openid des utilisateurs WeChat désignés.
Bien que des enveloppes rouges en espèces puissent être émises via le backend marchand de WeChat, nous pouvons également utiliser l'API d'interface fournie par WeChat pour envoyer des enveloppes rouges en espèces.Paramètres de la requête
Nom du champ | Champ | Obligatoire | Exemple de valeur | Type | Description|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cha?ne aléatoire | nonce_str | est | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | Cha?ne(32) | Cha?ne aléatoire, ne dépassant pas 32?caractères | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Signature | signe td> | Oui | C380BEC2BFD727A4B6845133519F3AD6 | String(32) | Voir l'algorithme de génération de signature pour plus de détails | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numéro de commande du marchand | mch_billno | Oui | 10000098201411111234567890 | String(28) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numéro de commer?ant | mch_id | est | 10000098 | String(32) | Numéro de commer?ant attribué par le paiement WeChat | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Appid du compte public | wxappid | Oui | wx8888888888888888 | String(32) | L'ID de compte public attribué par WeChat (le numéro d'entreprise corpid est cet appId). Tous les appid transmis via l'interface doivent être l'appid du compte public (appliqué sur mp.weixin.qq.com), et non l'appid de l'APP (appliqué sur open.weixin.qq.com). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nom du marchand | send_name | est | Grand magasin Tinhong | Cha?ne ( 32) | Nom de l'expéditeur de l'enveloppe rouge | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Openid de l'utilisateur | re_openid | Oui | oxTWIuGaIt6gTKsQRLau2M0yL16EString(32) | Utilisateur ayant accepté l'enveloppe rougeL'openid de l'utilisateur sous wxappid | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Montant du paiement | montant_total | Oui | 1000 | int | Montant du paiement, points unitaires | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Le nombre total de personnes ayant re?u des enveloppes rouges | numéro_total | est | 1 | intNombre total de personnes ayant re?u des enveloppes rougestotal_num=1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
souhaitant | Oui | Merci d'avoir participé à l'activité de devinette des énigmes des lanternes et je vous souhaite un joyeux Festival des Lanternes?! | String(128) | Bénédictions de l'enveloppe rouge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Adresse IP | client_ip | Oui192.168.0.1 | String(15) | L'adresse IP de la machine de l'interface appelante | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nom de l'activité | act_name | est | deviner des énigmes de lanternes et attraper des enveloppes rouges | String(32) | Nom de l'activité | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Remarques | remarque | Oui | Plus vous devinez, plus vous l'avez, venez le chercher ! | String(256) | Remarques |
Exemple de données?:
<xml><xml>? ??<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>?? ??<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>?? ??<mch_id><![CDATA[888]]></mch_id>?? ??<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>?? ??<send_name><![CDATA[send_name]]></send_name>?? ??<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>?? ??<total_amount><![CDATA[200]]></total_amount>?? ??<total_num><![CDATA[1]]></total_num>?? ??<wishing><![CDATA[恭喜發(fā)財(cái)]]></wishing>?? ??<client_ip><![CDATA[127.0.0.1]]></client_ip>?? ??<act_name><![CDATA[新年紅包]]></act_name>?? ??<remark><![CDATA[新年紅包]]></remark>?? ??<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>? ??</xml>
Ce qui précède est une description de l'interface Et paramètres d'entrée , Dans des circonstances normales, nous devons décider comment implémenter l'encapsulation du code C# en fonction de ceux-ci. Tout d'abord, nous définissons les interfaces et les classes dont nous avons besoin, comme indiqué ci-dessous.
En analysant la description de l'interface ci-dessus, nous pouvons constater que certaines des interfaces sont des paramètres conventionnels fixes, c'est-à-dire les informations d'identité des comptes publics généraux ou des comptes d'entreprise, et certains sont des paramètres commerciaux, nous les séparons donc séparément, ce qui favorise notre encapsulation et notre utilisation de l'interface. Nous pouvons obtenir ces paramètres réguliers via l'identité du compte officiel. Pour les informations commerciales, nous pouvons définir une classe d'entité pour effectuer des données. stocker et échanger.
correspond aux paramètres conventionnels fixes dans la figure ci-dessus, comme indiqué ci-dessous dans la description de l'interface.
Par conséquent, nous pouvons définir et obtenir ces informations à partir du compte. Nous pouvons les configurer en arrière-plan de gestion, puis les supprimer et les utiliser dans la logique du code.
Selon l'introduction ci-dessus, nous pouvons définir le code d'interface de l'enveloppe rouge comme suit.
///?<summary> ????///?微信紅包(搖一搖紅包)操作API ????///?</summary> ????public?interface?ILotteryApi ????{?????????????? ????????///?<summary> ????????///?用于企業(yè)向微信用戶個(gè)人發(fā)現(xiàn)金紅包。需要商戶證書 ????????///?目前支持向指定微信用戶的openid發(fā)放指定金額紅包。 ????????///?</summary> ????????///?<returns></returns> ????????SendRedPackResult?SendRedPack(SendRedPackJson?json);
Parmi eux, SendRedPackJson est le paramètre métier que nous avons modifié. Nous avons défini une classe pour transporter les informations afin de faciliter le transfert d'informations via l'interface.
///?<summary> ????///?現(xiàn)金紅包和裂變紅包的基礎(chǔ)信息 ????///?</summary> ????public?class?BaseRedPackJson ????{ ????????///?<summary> ????????///?接受紅包的用戶 ????????///?用戶openid???? ????????///?</summary> ????????public?string?re_openid?{?get;?set;?} ????????///?<summary> ????????///?付款金額,單位分 ????????///?</summary> ????????public?int?total_amount?{?get;?set;?} ????????///?<summary> ????????///?紅包發(fā)放總?cè)藬?shù) ????????///?</summary> ????????public?int?total_num?{?get;?set;?} ????????///?<summary> ????????///?紅包祝福語 ????????///?</summary> ????????public?string?wishing?{?get;?set;?} ????????///?<summary> ????????///?活動(dòng)名稱 ????????///?</summary> ????????public?string?act_name?{?get;?set;?} ????????///?<summary> ????????///?備注信息 ????????///?</summary> ????????public?string?remark?{?get;?set;?} ????} ????///?<summary> ????///?發(fā)送紅包的數(shù)據(jù)信息 ????///?</summary> ????public?class?SendRedPackJson?:BaseRedPackJson ????{ ????????///?<summary> ????????///?調(diào)用接口的機(jī)器Ip地址 ????????///?</summary> ????????public?string?client_ip?{?get;?set;?} ????????public?SendRedPackJson() ????????{ ????????????this.total_num?=?1;//紅包發(fā)放總?cè)藬?shù) ????????} ????}
Selon la définition des paramètres ci-dessus, nous implémentons l'interface de l'enveloppe rouge cash Le code spécifique est le suivant. à l'intérieur est principalement de transmettre Entrez les paramètres généraux et les paramètres métier, puis appelez l'adresse de l'interface pour soumettre les données (POST), obtenez les résultats renvoyés et analysez-les.
///?<summary> ????????///?用于企業(yè)向微信用戶個(gè)人發(fā)現(xiàn)金紅包。需要商戶證書 ????????///?目前支持向指定微信用戶的openid發(fā)放指定金額紅包。 ????????///?</summary> ????????///?<returns></returns> ????????public?SendRedPackResult?SendRedPack(SendRedPackJson?json) ????????{ ????????????CheckAccount();//檢查AccountInfo的對(duì)象屬性值 ????????????//加入常規(guī)的參數(shù) ????????????WxPayData?data?=?new?WxPayData(); ????????????data.SetValue("wxappid",?AccountInfo.UniteAppId);//公眾賬號(hào)appid ????????????data.SetValue("mch_id",?AccountInfo.MchID);//商戶號(hào) ????????????data.SetValue("nonce_str",?data.GenerateNonceStr());//隨機(jī)字符串 ????????????data.SetValue("send_name",?AccountInfo.Name);//????紅包發(fā)送者名稱 ???????????? ????????????//商戶訂單號(hào)(每個(gè)訂單號(hào)必須唯一)?組成:mch_id+yyyymmdd+10位一天內(nèi)不能重復(fù)的數(shù)字。 ????????????//接口根據(jù)商戶訂單號(hào)支持重入,如出現(xiàn)超時(shí)可再調(diào)用。 ????????????data.SetValue("mch_billno",?data.GenerateOutTradeNo(AccountInfo.MchID)); ????????????data.SetValue("re_openid",?json.re_openid); ????????????data.SetValue("total_amount",?json.total_amount); ????????????data.SetValue("total_num",?json.total_num); ????????????data.SetValue("wishing",?json.wishing); ????????????data.SetValue("client_ip",?json.client_ip); ????????????data.SetValue("act_name",?json.act_name); ????????????data.SetValue("remark",?json.remark); ????????????data.SetValue("sign",?data.MakeSign(AccountInfo.PayAPIKey));//最后生成簽名 ????????????var?url?=?"https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; ????????????return?Helper.GetPayResultWithCert<SendRedPackResult>(data,?url,?AccountInfo.CertPath,?AccountInfo.CertPassword); ????????}
L'opération d'envoi d'enveloppes rouges nécessite un certificat, il faut donc ajouter le certificat correspondant, et le certificat est téléchargé depuis la plateforme marchande WeChat .
Téléchargez le certificat du projet [API Security] dans le backend du marchand pour l'utiliser dans notre environnement de développement.
Après avoir téléchargé le certificat, dans l'environnement Windows, il faut généralement double-cliquer pour l'installer et saisir le numéro de commer?ant requis comme mot de passe.
Dans le code, nous pouvons utiliser la classe de certificat pour ajouter
HttpHelper?helper?=?new?HttpHelper(); ????????????helper.ClientCertificates?=?new?X509CertificateCollection(); ????????????certPath?=?Path.Combine(System.Environment.CurrentDirectory,?certPath); ????????????helper.ClientCertificates.Add(new?X509Certificate2(certPath,?certPassword)); ????????????string?response?=?helper.GetHtml(url,?xml,?true);
3. Résultats de l'utilisation des enveloppes rouges WeChat
Par exemple, le code que nous appelons dans l'exemple de test est le suivant.
//現(xiàn)金紅包 ????????????????SendRedPackJson?packJson?=?new?SendRedPackJson() ????????????????{ ????????????????????act_name?=?"恭喜發(fā)財(cái)", ????????????????????client_ip?=?NetworkUtil.GetIPAddress(), ????????????????????remark?=?"企業(yè)紅包", ????????????????????wishing?=?"企業(yè)紅包", ????????????????????total_amount?=?100, ????????????????????total_num?=?1, ????????????????????re_openid?=?tosendOpenId?//發(fā)送給用戶的OpenID ????????????????}; ????????????????var?result?=?hbApi.SendRedPack(packJson); ????????????????var?message?=?string.Format("企業(yè)發(fā)送紅包:{0}?{1}",?result.Success???"成功"?:?"失敗",?result.Message); ????????????????Console.WriteLine(message); ????????????????Console.WriteLine(result.ToJson());
Le hbApi est la structure de l'interface ci-dessus, comme indiqué dans le code suivant.
AccountInfo??accountInfo?=?new?AccountInfo() ????{ ???????Name?=?this.SendName, ????????AppID?=?this.AppId, ????????AppSecret?=?this.AppSecret, ????????MchID?=?this.MchID, ????????PayAPIKey?=?this.PayAPIKey, ????????CertPath?=?this.CertPath, ????????CertPassword?=?this.CertPassword, ?????????PayNotifyUrl?=?this.PayNotifyUrl ?????}; ?ILotteryApi?hbApi?=?new?LotteryApi(accountInfo);
Après l'appel réussi, nous pouvons voir les résultats des informations de l'enveloppe rouge dans la conversation du compte officiel. Voici l'ensemble du processus d'envoi. et en ouvrant l'enveloppe rouge.
Pour plus de développement C# du portail et de l'application WeChat, l'encapsulation et l'utilisation des enveloppes rouges WeChat Cash, veuillez faire attention au site Web PHP chinois pour les articles connexes?!

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)