Maison Applet WeChat Développement WeChat Développement d'une fonction de remboursement pour WeChat Pay

Développement d'une fonction de remboursement pour WeChat Pay

Mar 16, 2018 pm 01:42 PM
功能 开发 退款

Cette fois, je vais vous présenter le développement de la fonction de remboursement de WeChat Pay. Quelles sont les précautions pour le développement de la fonction de remboursement de WeChat Pay. Ce qui suit est un cas pratique, jetons un coup d'œil. .

Tout d’abord, plaignons-nous de la documentation et de la démo de WeChat. Les informations sur les étapes importantes ne sont pas clairement soulignées et la démo .net n’a jamais été exécutée avec succès.

1. Scannez le code QR WeChat pour vous connecter

2. Paiement WeChat PC

Il a fallu plusieurs tentatives pour passer par cette fonction de remboursement. Ce qui suit est une introduction aux étapes de développement de la fonction de remboursement des paiements WeChat :

1. Téléchargez le certificat et importez-le dans le système

Le remboursement WeChat nécessite un certificat. certificat dans la démo officielle, mais il s'agit d'un certificat que vous devez télécharger à partir de la colonne de sécurité de l'API de la plateforme marchande WeChat. Dans un document Word de l'exemple d'utilisation du certificat officiel, vous pouvez voir les mots suivants : C# Là. est une chose à noter, en plus d'utiliser apiclient_cert.p12, le certificat doit être importé dans le système d'exploitation avant de pouvoir être utilisé 1. Utilisé dans le code ; 2. Importer dans le système d'exploitation, les deux étant indispensables. La version .NET doit être supérieure à 2.0 Je ne connaissais pas ces deux étapes auparavant et j'ai perdu trop de temps. Téléchargez donc d'abord le certificat :

La vérification du téléphone portable et le mot de passe de connexion sont requis lors du téléchargement. Après le téléchargement, recherchez le certificat

apiclient_cert.p12 et double-cliquez pour l'importer. Lors de l'importation, vous serez invité à saisir un mot de passe. Ce mot de passe est l'identifiant du commerçant, et il doit s'agir du certificat téléchargé. votre propre plateforme marchande. Sinon, une invite pour un mot de passe incorrect apparaîtra :

Importez l'invite correcte :

2. Remboursement du code

Vous pouvez directement utiliser le code dans la démo officielle ici. Téléchargez la démo

Vous devez modifier plusieurs paramètres dans WxPayConfig :

      public const string APPID = "wxf6dd794bcexxxx";        public const string MCHID = "xxxx";        public const string KEY = "xxxxx849ba56abbe56e05xxxxx";        public const string APPSECRET = "---";        //=======【证书路径设置】===================================== 
        /* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要)        */
        public const string SSLCERT_PATH = "/WxPayAPI/cert/apiclient_cert.p12";        public const string SSLCERT_PASSWORD = "131xxxx";
Copier après la connexion
Le SSLCERT_PASSWORD ci-dessus est MCHID, qui est l'ID du commerçant, l'erreur SSLCERT_PASSWORD indiquera que le mot de passe réseau spécifié est incorrect :

Ensuite, ajoutez une méthode de remboursement dans le

contrôleur, y compris le numéro de commande WeChat, le numéro de commande du commerçant, le montant total et le montant du remboursement. Choisissez l'un des numéros de commande du commerçant et du numéro de commande WeChat. Paramètres détaillés

  public ActionResult DoRefund()
        {            string result = Refund.Run("","131667780120trade_no", "1", "1");            return Content(result);
        }
Copier après la connexion
Méthode d'exécution de la classe Refund :

 /***
        * 申请退款完整业务流程逻辑
        * @param transaction_id 微信订单号(优先使用)
        * @param out_trade_no 商户订单号
        * @param total_fee 订单总金额
        * @param refund_fee 退款金额
        * @return 退款结果(xml格式)        */
        public static string Run(string transaction_id, string out_trade_no, string total_fee, string refund_fee)
        {
            Logger.Info("Refund is processing...");
            WxPayData data = new WxPayData();            if (!string.IsNullOrEmpty(transaction_id))//微信订单号存在的条件下,则已微信订单号为准            {
                data.SetValue("transaction_id", transaction_id);
            }            else//微信订单号不存在,才根据商户订单号去退款            {
                data.SetValue("out_trade_no", out_trade_no);
            }
            data.SetValue("total_fee", int.Parse(total_fee));//订单总金额
            data.SetValue("refund_fee", int.Parse(refund_fee));//退款金额
            data.SetValue("out_refund_no", out_trade_no);//随机生成商户退款单号
            data.SetValue("op_user_id", WxPayConfig.MCHID);//操作员,默认为商户号
            WxPayData result = WxPayApi.Refund(data);//提交退款申请给API,接收返回数据
            Logger.Info("Refund process complete, result : " + result.ToXml());            return result.ToPrintStr();
        }
Copier après la connexion
Remboursement : Méthode

 /**
        * 
        * 申请退款
        * @param WxPayData inputObj 提交给申请退款API的参数
        * @param int timeOut 超时时间
        * @throws WxPayException
        * @return 成功时返回接口调用结果,其他抛异常        */
        public static WxPayData Refund(WxPayData inputObj, int timeOut = 6)
        {            string url = "https://api.mch.weixin.qq.com/secapi/pay/refund";            //检测必填参数
            if (!inputObj.IsSet("out_trade_no") && !inputObj.IsSet("transaction_id"))
            {                throw new WxPayException("退款申请接口中,out_trade_no、transaction_id至少填一个!");
            }            else if (!inputObj.IsSet("out_refund_no"))
            {                throw new WxPayException("退款申请接口中,缺少必填参数out_refund_no!");
            }            else if (!inputObj.IsSet("total_fee"))
            {                throw new WxPayException("退款申请接口中,缺少必填参数total_fee!");
            }            else if (!inputObj.IsSet("refund_fee"))
            {                throw new WxPayException("退款申请接口中,缺少必填参数refund_fee!");
            }            else if (!inputObj.IsSet("op_user_id"))
            {                throw new WxPayException("退款申请接口中,缺少必填参数op_user_id!");
            }
            inputObj.SetValue("appid", WxPayConfig.APPID);//公众账号ID
            inputObj.SetValue("mch_id", WxPayConfig.MCHID);//商户号
            inputObj.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));//随机字符串
            inputObj.SetValue("sign", inputObj.MakeSign());//签名
            
            string xml = inputObj.ToXml();            var start = DateTime.Now;
            Log.Debug("WxPayApi", "Refund request : " + xml);            string response = HttpService.Post(xml, url, true, timeOut);//调用HTTP通信接口提交数据到API
            Log.Debug("WxPayApi", "Refund response : " + response);            var end = DateTime.Now;            int timeCost = (int)((end - start).TotalMilliseconds);//获得接口耗时            //将xml格式的结果转换为对象以返回
            WxPayData result = new WxPayData();
            result.FromXml(response);
            ReportCostTime(url, timeCost, result);//测速上报
            return result;
        }
Copier après la connexion
N'oubliez pas de la modifier selon vos propres paramètres dans l'environnement de production . Si les paramètres sont corrects, il reviendra :

De plus, WeChat recevra immédiatement une notification de remboursement :

Résumé : À ce stade, la fonction de remboursement a été mise en œuvre. En fait, si les paramètres et les processus sont corrects, la réglementation de WeChat vous permet encore de demander le remboursement d'une transaction dans un délai d'un an.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment utiliser le dégradé de ss3

Explication détaillée de Promise dans jQuery, Angular et node

Bibliothèque de lecture vidéo H5 video.js explication détaillée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

La différence entre vivox100s et x100 : comparaison des performances et analyse des fonctions La différence entre vivox100s et x100 : comparaison des performances et analyse des fonctions Mar 23, 2024 pm 10:27 PM

Les téléphones mobiles vivox100 et x100 sont des modèles représentatifs de la gamme de produits de téléphonie mobile de Vivo. Ils représentent respectivement les niveaux de technologie haut de gamme de Vivo à différentes périodes. Par conséquent, ces deux téléphones mobiles présentent certaines différences en termes de conception, de performances et de fonctions. Cet article procédera à une comparaison détaillée entre ces deux téléphones mobiles en termes de comparaison des performances et d'analyse des fonctions pour aider les consommateurs à mieux choisir le téléphone mobile qui leur convient. Tout d’abord, examinons la comparaison des performances entre les vivox100 et x100. vivox100s est équipé des dernières

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Partager les étapes pour demander un remboursement avec WeChat Pay Partager les étapes pour demander un remboursement avec WeChat Pay Mar 25, 2024 pm 06:31 PM

1. Tout d'abord, nous devons ouvrir l'application WeChat sur le téléphone mobile, puis cliquer pour nous connecter au compte WeChat, afin d'accéder à la page d'accueil de WeChat. 2. Cliquez sur le bouton [Moi] dans le coin inférieur droit de la page d'accueil de WeChat, puis sélectionnez l'option [Paiement] Nous cliquons pour accéder à la page de paiement. 3. Après avoir accédé à la page [Paiement], cliquez sur l'option [Porte-monnaie] pour entrer, puis cliquez sur [Facture] dans le coin supérieur droit de la page [Porte-monnaie].

Qu'est-ce que l'auto-média exactement ? Quelles sont ses principales caractéristiques et fonctions ? Qu'est-ce que l'auto-média exactement ? Quelles sont ses principales caractéristiques et fonctions ? Mar 21, 2024 pm 08:21 PM

Avec le développement rapide d'Internet, le concept d'auto-média est devenu profondément ancré dans le cœur des gens. Alors, qu’est-ce que l’auto-média exactement ? Quelles sont ses principales caractéristiques et fonctions ? Ensuite, nous explorerons ces questions une par une. 1. Qu’est-ce que l’auto-média exactement ? Nous-médias, comme son nom l’indique, signifie que vous êtes les médias. Il fait référence à un support d'informations grâce auquel des individus ou des équipes peuvent créer, éditer, publier et diffuser de manière indépendante du contenu via la plateforme Internet. Différent des médias traditionnels, tels que les journaux, la télévision, la radio, etc., les automédias sont plus interactifs et personnalisés, permettant à chacun de devenir producteur et diffuseur d'informations. 2. Quelles sont les principales caractéristiques et fonctions du self-média ? 1. Seuil bas : L’essor des médias autonomes a abaissé le seuil d’entrée dans l’industrie des médias. Des équipements encombrants et des équipes professionnelles ne sont plus nécessaires.

Combien de temps faut-il pour que la caution Doudian soit remboursée ? Combien de temps faut-il pour que le remboursement arrive ? Combien de temps faut-il pour que la caution Doudian soit remboursée ? Combien de temps faut-il pour que le remboursement arrive ? Mar 26, 2024 pm 01:56 PM

Avec la popularité d’Internet, les achats en ligne sont devenus une partie importante de la vie des gens. Le magasin Douyin de Douyin a attiré un grand nombre d'utilisateurs grâce à son modèle de vente unique et à ses produits diversifiés. Cependant, au cours du processus d’achat, certains utilisateurs étaient confus quant à la politique de retour des dépôts de Doudian. Alors que les consommateurs accordent davantage d'attention à la sécurité et aux droits des achats, Doudian a besoin d'un mécanisme de remboursement plus transparent et standardisé pour renforcer la confiance des consommateurs. En optimisant le processus de remboursement et en renforçant la supervision des commerçants, Doudian peut améliorer l'expérience utilisateur et accroître la fidélité des utilisateurs. Les consommateurs peuvent également prêter attention aux réglementations des plateformes et communiquer avec les commerçants pour résoudre efficacement le problème du remboursement des dépôts et garantir que leurs propres droits et intérêts ne sont pas lésés. 1. Combien de temps faut-il pour que la caution Doudian soit remboursée ? Doudian est un modèle d'achat basé sur un système de crédit, qui oblige les consommateurs à

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Comment annuler une réservation d'hôtel sur Ctrip Comment annuler une réservation d'hôtel sur Ctrip Apr 01, 2024 pm 07:34 PM

Ctrip rassemble des millions d'hôtels, de compagnies aériennes, de sociétés de location de voitures et de prestataires de services de voyage à travers le monde pour offrir aux utilisateurs une grande variété d'options de voyage. Aujourd'hui, je vais parler de l'un des didacticiels de paiement des hôtels de voyage de Ctrip. J'en ai besoin, apprenez ensemble. La première étape du processus de départ de l'hôtel Ctrip consiste à accéder à l'application Ctrip, à sélectionner [Itinéraire] ci-dessous, puis à cliquer sur [Détails de la commande] de l'hôtel que nous avons réservé. Étape 2 : Cliquez sur [Annuler la commande] dans le coin inférieur gauche. Étape 3 : Cliquez sur le motif de l'annulation, puis cliquez sur [Annuler la commande] en bas.

See all articles