Demande de remboursement WeChat pour PHP
Cette fois, je vais vous présenter l'application de remboursement WeChat de PHP. Quelles sont les précautions pour que PHP mette en œuvre l'application de remboursement WeChat. Voici des cas pratiques, jetons un coup d'œil.
J'ai expliqué plus tôt comment implémenter le paiement WeChat. Pour plus de détails, consultez l'article de blog : Implémentation du processus de paiement WeChat (paiement jsapi) en PHP et Implémentation du processus de paiement WeChat (paiement jsapi) dans ThinkPHP. En raison des besoins de l'entreprise, un remboursement WeChat est également requis. Après recherche et exploration, le problème a finalement été résolu.
Préparation préliminaire :
Bien sûr, le paiement WeChat a été réglé, sinon comment puis-je obtenir un remboursement Cette fois, j'utiliserai le ? démo officielle. Bien sûr, il peut y avoir de nombreux maîtres sur Internet qui ont eux-mêmes réécrit et encapsulé la démo, ce qui est peut-être plus facile à utiliser et plus simple, mais je ne recommande toujours pas de l'utiliser pour les raisons suivantes :
( 1) Il n'est peut-être pas entièrement fonctionnel, peut-être qu'il implémente simplement le paiement WeChat, mais il existe également des fonctions commerciales telles que la demande de remboursement, la demande de remboursement, les demandes de commande et l'annulation de commandes, dont vous pourriez avoir besoin plus tard si vous comptez sur la commodité. du SDK du master, vous serez confus s'il y a de nouveaux besoins commerciaux
(2) Considérations de sécurité, en ce qui concerne le paiement et l'argent, cela doit être très sûr. Bien que je me plaigne également du SDK officiel, au moins il sera relativement sûr. Bien qu'aucun problème n'ait été trouvé pour le moment, ce serait mauvais s'il y avait des failles.
Cet article est toujours implémenté en utilisant la méthode remboursée () fournie dans WxPay.Api.php, le fichier de classe le plus important du SDK officiel. Cette méthode se trouve dans le 141ème chapitre de WxPay.Api.php. OK, le code est le suivant :
/** * * 申请退款,WxPayRefund中out_trade_no、transaction_id至少填一个且 * out_refund_no、total_fee、refund_fee、op_user_id为必填参数 * appid、mchid、spbill_create_ip、nonce_str不需要填入 * @param WxPayRefund $inputObj * @param int $timeOut * @throws WxPayException * @return 成功时返回,其他抛异常 */ public static function refund($inputObj, $timeOut = 6){ $url = "https://api.mch.weixin.qq.com/secapi/pay/refund"; //检测必填参数 if(!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) { throw new WxPayException("退款申请接口中,out_trade_no、transaction_id至少填一个!"); }else if(!$inputObj->IsOut_refund_noSet()){ throw new WxPayException("退款申请接口中,缺少必填参数out_refund_no!"); }else if(!$inputObj->IsTotal_feeSet()){ throw new WxPayException("退款申请接口中,缺少必填参数total_fee!"); }else if(!$inputObj->IsRefund_feeSet()){ throw new WxPayException("退款申请接口中,缺少必填参数refund_fee!"); }else if(!$inputObj->IsOp_user_idSet()){ throw new WxPayException("退款申请接口中,缺少必填参数op_user_id!"); } $inputObj->SetAppid(WxPayConfig::APPID);//公众账号ID $inputObj->SetMch_id(WxPayConfig::MCHID);//商户号 $inputObj->SetNonce_str(self::getNonceStr());//随机字符串 $inputObj->SetSign();//签名 $xml = $inputObj->ToXml(); $startTimeStamp = self::getMillisecond();//请求开始时间 $response = self::postXmlCurl($xml, $url, true, $timeOut); $result = WxPayResults::Init($response); self::reportCostTime($url, $startTimeStamp, $result);//上报请求花费时间 return $result; }
La méthode officielle indique clairement quels paramètres sont requis, et le SDK a déjà renseigné certains paramètres requis pour nous. Je vais ré-encapsuler cette méthode pour. faciliter son utilisation dans le projet. Appelé :
/** * 微信退款 * @param string $order_id 订单ID * @return 成功时返回(array类型),其他抛异常 */ function wxRefund($order_id){ //我的SDK放在项目根目录下的Api目录下 require_once APP_ROOT."/Api/wxpay/lib/WxPay.Api.php"; //查询订单,根据订单里边的数据进行退款 $order = M('order')->where(array('id'=>$order_id,'is_refund'=>2,'order_status'=>1))->find(); $merchid = WxPayConfig::MCHID; if(!$order) return false; $input = new WxPayRefund(); $input->SetOut_trade_no($order['order_sn']); //自己的订单号 $input->SetTransaction_id($order['transaction_id']); //微信官方生成的订单流水号,在支付成功中有返回 $input->SetOut_refund_no(getrand_num(true)); //退款单号 $input->SetTotal_fee($order['total_price']); //订单标价金额,单位为分 $input->SetRefund_fee($order['total_price']); //退款总金额,订单总金额,单位为分,只能为整数 $input->SetOp_user_id($merchid); $result = WxPayApi::refund($input); //退款操作 // 这句file_put_contents是用来查看服务器返回的退款结果 测试完可以删除了 //file_put_contents(APP_ROOT.'/Api/wxpay/logs/log3.txt',arrayToXml($result),FILE_APPEND); return $result; }
Je dois me plaindre ici. Il ne mentionne pas le type de valeur de retour. Lors du paiement, les données XML sont renvoyées. est renvoyé. Cela m'a pris au dépourvu Haha, mais il revient toujours mieux et peut être directement jugé et traité.
L'appel de méthode est encore plus simple :
//微信退款 $result = wxRefund($order_id); // 这句file_put_contents是用来查看服务器返回的退款结果 测试完可以删除了 //file_put_contents(APP_ROOT.'/Api/wxpay/logs/log4.txt',arrayToXml($result),FILE_APPEND); if(($result['return_code']=='SUCCESS') && ($result['result_code']=='SUCCESS')){ //退款成功 }else if(($result['return_code']=='FAIL') || ($result['result_code']=='FAIL')){ //退款失败 //原因 $reason = (empty($result['err_code_des'])?$result['return_msg']:$result['err_code_des']); }else{ //失败 }
Un remboursement réussi sera renvoyé comme suit :
Le test personnel est correct : c'est une intégration Il est implémenté avec le SDK officiel. Si vous n'utilisez pas le SDK, vous pouvez utiliser une méthode plus simple. Voir : PHP pour implémenter le paiement WeChat (paiement jsapi) et le remboursement (pas besoin d'intégrer le SDK de paiement)
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 à. d'autres articles connexes sur le site php chinois !
Lecture recommandée :
Comment afficher des images directement dans le navigateur avec PHP
PHP détermine si WeChat est ouvert ou pas ouvrir le navigateur
Explication détaillée autonome du déploiement MySQLd_multi
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!

Outils d'IA chauds

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Sesame Exchange est une plate-forme de commerce électronique transfrontalière qui relie les acheteurs et les vendeurs dans le monde et fournit un large éventail de biens et services. Après avoir téléchargé l'application, les utilisateurs enregistrent un compte pour parcourir et acheter des produits. La plate-forme fournit une variété de méthodes de paiement et les utilisateurs peuvent afficher l'état de la commande et les vendeurs de contacts. Si vous avez une demande de retour, vous devez contacter le vendeur pour soumettre une demande de retour. Pour assurer la sécurité, assurez-vous de protéger les informations personnelles, faites attention aux e-mails suspects et utilisez des méthodes de paiement sécurisées.
