


ThinkPhp5.1 effectue le paiement WeChat et plusieurs descriptions de statut après le paiement
Souvent, les appels de l'interface de paiement WeChat doivent être utilisés pendant le développement de projets, tels que : la production d'un centre commercial, le paiement en ligne, le paiement d'assurance, etc. L'éditeur a récemment construit plusieurs systèmes de facturation des frais d'eau, des systèmes d'émission de lettres de garantie et des systèmes d'enregistrement en ligne. Les systèmes de paiement WeChat sont utilisés dans chacun d'entre eux. La production du paiement WeChat et la description de plusieurs statuts après le paiement sont répertoriés ci-dessous. J'espère que cela sera utile à tout le monde.
1 , renvoyé tel quel dans l'API de requête et la notification de paiement, et peut être utilisé comme paramètre personnalisé. Dans les circonstances réelles, ce champ ne sera renvoyé que dans l'état d'achèvement du paiement. Parfois, nous devons renvoyer certaines valeurs spécifiques lors de l'interrogation des commandes pendant le développement, telles que : l'ID de membre, l'ID d'ordre de paiement, l'ID d'application, le nom du membre, etc. À l'heure actuelle, nous pouvons utiliser attach pour transmettre des paramètres, mais attach est un chaîne. Parfois, la valeur transmise est souvent un tableau, il vous suffit donc d'utiliser json_encode pour la conversion, par exemple :public function wxPayImg($body,$out_trade_no,$fee,$product_id,$logo,$path,$attach,$pro_id){ require_once Env::get('app_path')."api/wxpay/lib/WxPay.Api.php"; //实例化配置信息 $config = new WxPayConfig(); $input = new \WxPayUnifiedOrder(); //设置商品描述 $input->SetBody($body); //设置订单号 $input->SetOut_trade_no($out_trade_no); //设置商品金额(单位:分) $input->SetTotal_fee($fee); //设置异步通知地址 $notify = $config->GetNotifyUrl(); $input->SetNotify_url($notify); //设置交易类型 $input->SetTrade_Type('NATIVE'); //设置商品ID $input->SetProduct_id($product_id); $input->SetDevice_info($pro_id); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); //dump($result); $qr_url = $result['code_url']; $img = $this->createCode($qr_url,$logo,$path); //生成数组 $array = array('img'=>$img,'out_trade_no'=>$out_trade_no); return $array; } //生成二维码 public function createCode($code_url,$logo,$path){ //创建基本的QR码 $qrCode = new QrCode($code_url); $qrCode->setSize(300); //设置高级选项 $qrCode->setWriterByName('png'); $qrCode->setEncoding('UTF-8'); $qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH()); $qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]); $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]); //$qrCode->setLabel('', 16, App::getAppPath().'/../public/static/user/font/msyhl.ttc', LabelAlignment::CENTER()); $qrCode->setLogoPath($logo); $qrCode->setLogoWidth(50); $qrCode->setValidateResult(false); //边距设置 $qrCode->setMargin(10); //直接输出二维码 header('Content-Type: '.$qrCode->getContentType()); //echo $qrCode->writeString(); //将二维码保存到指定目录 $qrCode->writeFile($path); //生成数据URI以内联图像数据(即在<img alt="ThinkPhp5.1 effectue le paiement WeChat et plusieurs descriptions de statut après le paiement" >标记内) $dataUri = $qrCode->writeDataUri(); return $dataUri; }
Après avoir interrogé la commande, utilisez json_decode pour la conversion, par exemple :
public function jsApiPay($openId,$Body,$out_trade_no,$fee,$product_id,$attach){ require_once Env::get('app_path')."api/wxpay/lib/WxPay.Api.php"; $tools = new JsApiPay(); $input = new \WxPayUnifiedOrder(); //设置商品描述 $input->SetBody($Body); //设置订单号 $input->SetOut_trade_no($out_trade_no); //设置商品金额(单位:分) $input->SetTotal_fee($fee); //设置异步通知地址 $config = new WxPayConfig(); $notify = $config->GetNotifyUrl(); $input->SetNotify_url($notify); //设置交易类型 $input->SetTrade_Type('JSAPI'); //设置商品ID $input->SetProduct_id($product_id); //用户openID $input->SetOpenid($openId); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); $jsApiParameters = $tools->GetJsApiParameters($result); return $jsApiParameters; }
Le $arr obtenu ici. est un tableau, suivez directement Il suffit d'appeler les règles d'appel du tableau
3 Plusieurs statuts de paiement WeChat
Lorsque les informations de commande demandées n'existent pas, le retour est le suivant :
public function QueryOrder($number,$transaction_id=NULL){
require_once App::getAppPath().'api/wxpay/lib/WxPay.Api.php';
require_once App::getAppPath().'api/wxpay/lib/WxPay.Notify.php';
$input = new \WxPayOrderQuery();
$input->SetOut_trade_no($number);
$input->SetTransaction_id($transaction_id);
$config = new WxPayConfig();
$result = \WxPayApi::orderQuery($config, $input);
if($result['result_code']=='SUCCESS'){
if($result['trade_state']=='SUCCESS'){
$arr = json_decode($result['attach'],true);
$pay_time = $this->getPayTime($result['time_end']);
return ['code'=>100,'result_code'=>$result['result_code'],'attach'=>$arr,'pay_time'=>$pay_time,'result'=>$result,'msg'=>"支付成功"];
}else{
return ['code'=>101,'result_code'=>$result['result_code'],'err_code'=>$result['err_code'],'result'=>$result,'msg'=>"订单未支付"];
}
}else{
return ['code'=>103,'result_code'=>$result['result_code'],'result'=>$result,'msg'=>"订单不存在"];
}
//dump($result);
//return $result;
}
Lorsque le paiement des informations de commande demandées échoue , le retour est le suivant : $remarks = array( 'cid'=>1, 'member_id'=>2, 'apply_id'=>28, ); $attach = json_encode($remarks);
Lorsque les informations de commande demandées échouent Lorsque les informations de commande existent, le retour est le suivant :
$arr = json_decode($result['attach'],true);
Paiement natif réussi
array(9) { ["appid"] => string(18) "公众号APPId" ["err_code"] => string(13) "ORDERNOTEXIST" ["err_code_des"] => string(15) "订单不存在" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "H0K6KPemexExM5DV" ["result_code"] => string(4) "FAIL" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "8779CA8C7F4931B4296C19FFFB176A3111F74B7244123A0C0EB7AD8DB2B1BDA49DA" }
Recommandations associées : "
tutoriel vidéo thinkphp
"
Ce qui précède est le résumé par l'éditeur de certaines connaissances pertinentes sur le paiement WeChat. J'espère que cela sera utile à tous les développeurs qui aident !
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!

L'article traite du cadre de test intégré de ThinkPhP, mettant en évidence ses principales fonctionnalités telles que les tests d'unité et d'intégration, et comment il améliore la fiabilité des applications grâce à la détection précoce des bogues et à une meilleure qualité de code.

L'article discute de l'utilisation de ThinkPHP pour les flux de données boursières en temps réel, en se concentrant sur la configuration, la précision des données, l'optimisation et les mesures de sécurité.

L'article traite des considérations clés pour l'utilisation de ThinkPHP dans des architectures sans serveur, en se concentrant sur l'optimisation des performances, la conception sans état et la sécurité. Il met en évidence des avantages tels que la rentabilité et l'évolutivité, mais relève également des défis

L'article discute de la mise en œuvre de la découverte de services et de l'équilibrage des charges dans les microservices ThinkPHP, en se concentrant sur la configuration, les meilleures pratiques, les méthodes d'intégration et les outils recommandés. [159 caractères]

Le conteneur IOC de ThinkPhp propose des fonctionnalités avancées comme le chargement paresseux, la liaison contextuelle et l'injection de méthode pour une gestion efficace des dépendances dans les applications PHP. COMMANDE CHARACTER: 159

L'article discute de l'utilisation de ThinkPHP pour créer des outils de collaboration en temps réel, en se concentrant sur la configuration, l'intégration WebSocket et les meilleures pratiques de sécurité.

ThinkPHP profite aux applications SaaS avec sa conception légère, son architecture MVC et sa extensibilité. Il améliore l'évolutivité, accélère le développement et améliore la sécurité grâce à diverses fonctionnalités.

L'article décrit la création d'un système de file d'attente de tâches distribué à l'aide de ThinkPhp et RabbitMQ, en se concentrant sur l'installation, la configuration, la gestion des tâches et l'évolutivité. Les problèmes clés incluent assurer la haute disponibilité, éviter les pièges communs comme Imprope


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

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Dreamweaver Mac
Outils de développement Web visuel