国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat Développement Asp.Net MVC pour le paiement par scan code WeChat

Développement Asp.Net MVC pour le paiement par scan code WeChat

Mar 16, 2018 pm 01:47 PM
asp.net Développement Payer

Cette fois, je vous présente Asp.Net Développement MVC pour le paiement par scan code WeChat, et quelles sont les précautions pour le paiement par scan code WeChat Développement Asp.Net MVC. pratique réelle Jetons un coup d’?il au cas.

Le paiement par scan code fait ici référence à l'utilisation du paiement WeChat sur le site Web du PC, qui est le mode officiel 2. Le site Web est Asp.net MVC, qui est organisé comme suit. (La démo est en bas)

1. Préparation

La méthode de commande unifiée dans l'API WeChat utilisée, le paramètre clé est 'ID de compte public ( appid)', 'Merchant ID (mch_id)' et 'Merchant Payment Key (KEY)', vous devez donc d'abord avoir un compte officiel approuvé, et activer le paiement fonction, puis postulez pour un commer?ant. Après avoir réussi l'examen, vous obtiendrez le numéro de commer?ant, qui est le nom de connexion de la plateforme marchande. La clé de paiement du commer?ant est utilisée pour la signature afin de garantir que l'URL n'est pas falsifiée. Après être entré sur la plateforme marchande, définissez-la dans la sécurité API. Il s'agit d'une cha?ne de 32 bits.

Après avoir ces trois paramètres, une autre chose à noter est l'heure de début de la transaction et l'heure de fin de la transaction L'intervalle devrait durer plus de cinq minutes et moins de 2 heures. Dans le cas contraire, une erreur sera signalée lors de l'obtention de l'URL de paiement.

2. Générer le code QR de paiement

Avec les paramètres ci-dessus, l'étape suivante consiste à télécharger le SDK?: SDK .net et exemples.

Malheureusement, cet exemple officiel ne fonctionnait pas correctement au début. Référencez la DLL appropriée au répertoire MVC. Et créez un dossier WxPayAPI et copiez les classes pertinentes.

Ensuite, définissez les paramètres pertinents dans WxPayConfig sur vos propres paramètres, puis modifiez la méthode GetPayUrl,

?public?string?GetPayUrl(Order?order,string?ip)
????????{????????????if?(order?==?null)
????????????{????????????????throw?new?ArgumentNullException("order");
????????????}???????????
????????????var?product?=?order.OrderItems.First();
????????????WxPayData?data?=?new?WxPayData();
????????????data.SetValue("appid",?WxPayConfig.APPID);
????????????data.SetValue("mch_id",?WxPayConfig.MCHID);????????????//?data.SetValue("device_info",?"iphone4s");
????????????data.SetValue("nonce_str",?WxPayApi.GenerateNonceStr());
????????????data.SetValue("body",?product.AttributeDescription);//商品描述
????????????data.SetValue("detail",?product.AttributeDescription);//商品描述
????????????data.SetValue("attach",?"北京分店");//附加數(shù)據(jù)
????????????data.SetValue("out_trade_no",?order.TradeNumber);//隨機(jī)字符串???????????//?data.SetValue("total_fee",?Convert.ToInt32(order.OrderTotal?*?100));//總金額
????????????data.SetValue("total_fee",?1);//總金額
????????????data.SetValue("spbill_create_ip",ip);//總金額
????????????data.SetValue("time_start",?DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始時(shí)間
????????????data.SetValue("time_expire",?DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"));//交易結(jié)束時(shí)間
????????????data.SetValue("goods_tag",?"智能嬰兒床");//商品標(biāo)記
????????????data.SetValue("notify_url",?"http://www.xxxx.com/Checkout/ResultNotify");//通知地址
????????????data.SetValue("trade_type",?"NATIVE");//交易類型
????????????data.SetValue("product_id",?product.ProductId);//商品ID??
????????????data.SetValue("sign",?data.MakeSign());//簽名
????????????Logger.Info("獲得簽名"?+?data.GetValue("sign"));
????????????WxPayData?result?=?WxPayApi.UnifiedOrder(data);//調(diào)用統(tǒng)一下單接口????????????Logger.Info(result.ToJson());????????????string?url?=?result.GetValue("code_url").ToString();//獲得統(tǒng)一下單接口返回的二維碼鏈接
????????????Logger.Info("pay?url:"?+?url);????????????return?url;
????????}

TradeNumber est généré en appelant la méthode WxPayApi.GenerateOutTradeNo(), et notify_url est l'adresse notifiée par WeChat après le paiement de l'utilisateur. L'unité du montant est le centime, qui ne peut être transmis qu'en type int ou en type cha?ne et doit être converti. Après avoir obtenu avec succès l'url, créez un mode de paiement dans le contr?leur responsable du paiement. Utilisé pour afficher les codes QR :

??ActionResult?Payment((??ArgumentException(?order?=?_orderService.GetOrderByGuid(?user?==??url2?==??+=

Cela renvoie juste une url, sur la page :

<img src="@ViewBag.QRCode" class="qrcode"  />

Le qrCodeEncoder utilisé en arrière-plan génère des codes QR.

??public?FileResult?MakeQRCode(string?data)
????????{????????????if?(string.IsNullOrEmpty(data))?
????????????????throw?new?ArgumentException("data");????????????//初始化二維碼生成工具
????????????QRCodeEncoder?qrCodeEncoder?=?new?QRCodeEncoder();
????????????qrCodeEncoder.QRCodeEncodeMode?=?QRCodeEncoder.ENCODE_MODE.BYTE;
????????????qrCodeEncoder.QRCodeErrorCorrect?=?QRCodeEncoder.ERROR_CORRECTION.M;
????????????qrCodeEncoder.QRCodeVersion?=?0;
????????????qrCodeEncoder.QRCodeScale?=?4;????????????//將字符串生成二維碼圖片
????????????Bitmap?image?=?qrCodeEncoder.Encode(data,?Encoding.Default);????????????//保存為PNG到內(nèi)存流??
????????????MemoryStream?ms?=?new?MemoryStream();
????????????image.Save(ms,?ImageFormat.Jpeg);????????????return?File(ms.ToArray(),?"image/jpeg");
????????}

Après succès, vous obtiendrez la page de paiement :

Scannez le code QR et la page de paiement appara?tra :

3. Rappel

Après le paiement de l'utilisateur, WeChat enverra un message à l'interface précédemment réservée (l'interface ne peut pas prendre de paramètres). recevoir le message, puis envoyer un message à WeChat après confirmation des informations. Pour les paramètres et documents détaillés, veuillez consulter l'API officielle

Ici, nous avons légèrement modifié la méthode dans la démo et l'avons mise dans le contr?leur?:

??public?ActionResult?ResultNotify()
????????{????????????//接收從微信后臺(tái)POST過來的數(shù)據(jù)
????????????Stream?s?=?Request.InputStream;????????????int?count?=?0;????????????byte[]?buffer?=?new?byte[1024];
????????????StringBuilder?builder?=?new?StringBuilder();????????????while?((count?=?s.Read(buffer,?0,?1024))?>?0)
????????????{
????????????????builder.Append(Encoding.UTF8.GetString(buffer,?0,?count));
????????????}
????????????s.Flush();
????????????s.Close();
????????????s.Dispose();
????????????Logger.Info(this.GetType()+?"Receive?data?from?WeChat?:?"?+?builder);????????????//轉(zhuǎn)換數(shù)據(jù)格式并驗(yàn)證簽名
????????????WxPayData?data?=?new?WxPayData();????????????try
????????????{
????????????????data.FromXml(builder.ToString());
????????????}????????????catch?(WxPayException?ex)
????????????{????????????????//若簽名錯(cuò)誤,則立即返回結(jié)果給微信支付后臺(tái)
????????????????WxPayData?res?=?new?WxPayData();
????????????????res.SetValue("return_code",?"FAIL");
????????????????res.SetValue("return_msg",?ex.Message);
????????????????Log.Error(this.GetType().ToString(),?"Sign?check?error?:?"?+?res.ToXml());
????????????????Response.Write(res.ToXml());
????????????????Response.End();
????????????}
????????????Logger.Info(this.GetType()+?"Check?sign?success");
????????????ProcessNotify(data);????????????return?View();
????????}????????public?void?ProcessNotify(WxPayData?data)
????????{
????????????WxPayData?notifyData?=?data;????????????//檢查支付結(jié)果中transaction_id是否存在
????????????if?(!notifyData.IsSet("transaction_id"))
????????????{????????????????//若transaction_id不存在,則立即返回結(jié)果給微信支付后臺(tái)
????????????????WxPayData?res?=?new?WxPayData();
????????????????res.SetValue("return_code",?"FAIL");
????????????????res.SetValue("return_msg",?"支付結(jié)果中微信訂單號(hào)不存在");
????????????????Logger.Error(this.GetType()+"The?Pay?result?is?error?:?"?+?res.ToXml());
????????????????Response.Write(res.ToXml());
????????????????Response.End();
????????????}????????????string?transaction_id?=?notifyData.GetValue("transaction_id").ToString();????????????//查詢訂單,判斷訂單真實(shí)性
????????????if?(!QueryOrder(transaction_id))
????????????{????????????????//若訂單查詢失敗,則立即返回結(jié)果給微信支付后臺(tái)
????????????????WxPayData?res?=?new?WxPayData();
????????????????res.SetValue("return_code",?"FAIL");
????????????????res.SetValue("return_msg",?"訂單查詢失敗");
????????????????Logger.Error(this.GetType()+"Order?query?failure?:?"?+?res.ToXml());
????????????????Response.Write(res.ToXml());
????????????????Response.End();
????????????}????????????//查詢訂單成功
????????????else
????????????{
????????????????WxPayData?res?=?new?WxPayData();
????????????????res.SetValue("return_code",?"SUCCESS");
????????????????res.SetValue("return_msg",?"OK");
????????????????Logger.Info(this.GetType()+"order?query?success?:?"?+?res.ToXml());????????????????SetPaymentResult(data.GetValue("out_trade_no").ToString(),?PaymentStatus.Paid);
????????????????Response.Write(res.ToXml());
????????????????Response.End();
????????????}
????????}

Après avoir re?u la confirmation, nous avons besoin pour mettre à jour le statut de la commande :

??public?void?SetPaymentResult(string?tradeno,?PaymentStatus?status)
????????{
????????????Logger.Info("訂單號(hào):"+tradeno);????????????var?order?=?_orderService.GetOrderByTradeNumber(tradeno);????????????if?(order?!=?null)
????????????{
????????????????order.PaymentStatus?=?status;????????????????if?(status?==?PaymentStatus.Paid)
????????????????{
????????????????????order.PaidDate?=?DateTime.Now;
????????????????}
????????????????_orderService.UpdateOrder(order);
????????????????Logger.Info("訂單:"+tradeno+"成功更新狀態(tài)為"+status);
????????????}
????????}

Vérifiez ensuite le statut de la commande sur la page. Après avoir confirmé le succès, passez à la page.

Dans le backend de la plateforme marchande, on peut interroger?:

Je crois que vous l'avez ma?trisé après avoir lu le cas dans cet article Méthode, pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web php chinois !

Lecture recommandée?:

Développement de la fonction de remboursement pour le paiement WeChat

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

WeChat Hardware H5 Development Controlling Lights

Un plug-in de date léger particulièrement facile à utiliser en JS

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

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 grace à 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)

Sujets chauds

Tutoriel PHP
1502
276
Comment payer une course en taxi sur Baidu Maps Introduction aux étapes de paiement d'une course en taxi. Comment payer une course en taxi sur Baidu Maps Introduction aux étapes de paiement d'une course en taxi. Mar 13, 2024 am 10:04 AM

Baidu Map APP est désormais devenu le logiciel de navigation de voyage préféré pour de nombreux utilisateurs, de sorte que certaines des fonctions ici sont complètes et peuvent être sélectionnées et utilisées gratuitement pour résoudre certains des problèmes que vous pouvez rencontrer lors de vos déplacements quotidiens. vos propres itinéraires de voyage, planifiez certains de vos propres projets de voyage et après avoir vérifié les itinéraires correspondants, vous pouvez choisir les méthodes de voyage appropriées en fonction de vos propres besoins. Ainsi, que vous choisissiez des transports en commun, le vélo, la marche ou le taxi peuvent tous satisfaire. Il existe des itinéraires de navigation correspondants qui peuvent vous conduire à un certain endroit. Ensuite, tout le monde se sentira plus à l'aise s'il choisit de prendre un taxi. Il existe de nombreux chauffeurs. Ils sont tous capables de prendre des commandes en ligne et il existe des taxis. devenir super

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

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

Explorer la technologie front-end du langage Go?: une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go?: une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Feb 22, 2024 pm 02:33 PM

Résumé des cinq bibliothèques du langage Go les plus populaires : des outils essentiels au développement, nécessitant des exemples de code spécifiques. Depuis sa naissance, le langage Go a fait l'objet d'une attention et d'une application généralisées. En tant que langage de programmation émergent, efficace et concis, le développement rapide de Go est indissociable du support de riches bibliothèques open source. Cet article présentera les cinq bibliothèques de langage Go les plus populaires. Ces bibliothèques jouent un r?le essentiel dans le développement Go et offrent aux développeurs des fonctions puissantes et une expérience de développement pratique. Parallèlement, afin de mieux comprendre les usages et les fonctions de ces bibliothèques, nous les expliquerons avec des exemples de codes précis.

Quelle distribution Linux est la meilleure pour le développement Android ? Quelle distribution Linux est la meilleure pour le développement Android ? Mar 14, 2024 pm 12:30 PM

Le développement d'Android est un travail chargé et passionnant, et le choix d'une distribution Linux adaptée au développement est particulièrement important. Parmi les nombreuses distributions Linux, laquelle est la plus adaptée au développement Android ? Cet article explorera ce problème sous plusieurs aspects et donnera des exemples de code spécifiques. Tout d’abord, jetons un coup d’?il à plusieurs distributions Linux actuellement populaires : Ubuntu, Fedora, Debian, CentOS, etc. Elles ont toutes leurs propres avantages et caractéristiques.

Quel framework est le mieux adapté au développement VSCode?? Quel framework est le mieux adapté au développement VSCode?? Mar 25, 2024 pm 02:03 PM

VSCode est un éditeur de code open source puissant, flexible et facile à étendre, largement apprécié par les développeurs. Il prend en charge de nombreux langages et frameworks de programmation pour répondre aux différents besoins du projet. Cependant, les avantages de VSCode peuvent varier selon les frameworks. Cet article discutera de l'applicabilité de VSCode dans le développement de différents frameworks et fournira des exemples de code spécifiques. 1.ReactReact est une bibliothèque JavaScript populaire utilisée pour créer des interfaces utilisateur. Lors du développement de projets avec React,

See all articles