Quel est le processus de paiement php WeChat ?
Préparation anticipée :
1. Compte du service d'authentification WeChat et ouverture du paiement WeChat
. 2. SDK de paiement WeChat, adresse de téléchargement : https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
3. Connectez-vous à la plateforme de paiement WeChat https. :/ /pay.weixin.qq.com/index.php/account/api_certTélécharger le certificat de paiement
Étapes de la méthode :
1.Traitement du fichier de démonstration
(1) Téléchargez la démo officielle, le nom du fichier est WxpayAPI_php_v3 et renommez le fichier en wxpay pour faciliter l'écriture du répertoire plus tard
(2) Ouvrez WxPay.Api.php dans le dossier lib ; Dans le fichier, il y a un code de configuration de requête réseau curl à la ligne 537 :
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
est remplacé par :
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
afin d'empêcher cURL de vérifier le certificat du homologue.
(3) Ouvrez le fichier WxPay.Config.php sous le dossier lib À partir de la ligne 25, complétez les paramètres d'informations de base en fonction de votre compte
const APPID = '公众账号APPID'; const MCHID = '商户号'; const KEY = '商户支付密钥'; const APPSECRET = '公众帐号secert';
(4) Ouvrez la lib. dossier Dans le fichier WxPay.Notify.php ci-dessous, le code à la ligne 79 :
if($needSign == true && $this->GetReturn_code($return_code) == "SUCCESS") { $this->SetSign(); }
est remplacé par :
if($needSign == true && $this->GetReturn_code() == "SUCCESS") { $this->SetSign(); }
(5) Ouvrez le répertoire des certificats de certificat et remplacez les deux certificats qu'il contient par votre propre certificat de paiement.
Recommandations associées : "Tutoriel PHP"
2. Paramètres d'arrière-plan du compte officiel
(1) Configurer le nom de domaine autorisé de la page Web, mon domaine le nom est ( xy.chuyin.ren);
(2) Configurez le répertoire d'autorisation de paiement. Le nom de domaine est (xy.chuyin.ren). demo dans le répertoire pointé par ce nom de domaine. Sous le dossier weixinopen/, le fichier jsapi.php de la démo se trouve dans le répertoire example/, le répertoire d'autorisation de paiement est donc : xy.chuyin.ren/weixinopen/wxpay/. exemple/
3. Processus de paiement
Ouvrez le fichier jsapi.php dans le répertoire d'exemple. L'initiation et le traitement du paiement sont tous terminés ici.
(1) Obtenir l'openid de l'utilisateur
Vous avez déjà configuré votre APPID et APPSecert, il n'est donc pas nécessaire de le traiter ici.
//①、获取用户openid $tools = new JsApiPay(); $openId = $tools->GetOpenid();
La classe JsApiPay() initialisée ici obtient d'abord un objet. Le fichier correspond à WxPay.JsApiPay.php dans le répertoire example/ L'appel de la méthode GetOpenid() obtiendra automatiquement son propre openID.
(2) Commande unifiée
//②、统一下单 $input = new WxPayUnifiedOrder(); $input->SetBody("test"); $input->SetAttach("test"); $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis")); $input->SetTotal_fee("1"); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag("test"); $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php"); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $order = WxPayApi::unifiedOrder($input); echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>'; printf_info($order); $jsApiParameters = $tools->GetJsApiParameters($order);
correspond à la méthode unifiedOrder() à la ligne 24 de WxPay.Api.php, qui configure les informations de commande et la fonction de rappel de paiement. Plusieurs paramètres doivent être définis. modifié ici :
A. Nom du produit :
$input->SetBody("test");
B Numéro de commande
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
C. Montant du paiement
$input->SetTotal_fee("1");
D. >
Définissez l'emplacement de votre fichier notify.php, je le définis donc ici sur : http://xy.chuyin.ren/weixinopen/wxpay/example/notify.phpVous pouvez également écrivez d'autres adresses, bien sûr, cela doit être sous le nom de domaine d'autorisation de paiement. Une fois le paiement réussi, il rappellera automatiquement la méthode spécifiée dans le lien, où les opérations de jugement et de base de données peuvent être effectuées.$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetAttach("test");
<script type="text/javascript"> //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', <?php echo $jsApiParameters; ?>, function(res){ WeixinJSBridge.log(res.err_msg); alert(res.err_code+res.err_desc+res.err_msg); } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } } </script>
$notify = new PayNotifyCallBack(); $notify->Handle(false);
/** * * 回调入口 * @param bool $needSign 是否需要签名输出 */ final public function Handle($needSign = true) { $msg = "OK"; //当返回false的时候,表示notify中调用NotifyCallBack回调失败获取签名校验失败,此时直接回复失败 $result = WxpayApi::notify(array($this, 'NotifyCallBack'), $msg); if($result == false){ $this->SetReturn_code("FAIL"); $this->SetReturn_msg($msg); $this->ReplyNotify(false); return; } else { //该分支在成功回调到NotifyCallBack方法,处理完成之后流程 $this->SetReturn_code("SUCCESS"); $this->SetReturn_msg("OK"); } $this->ReplyNotify($needSign); }
$result = WxpayApi::notify(array($this, 'NotifyCallBack'), $msg); 然后来到WxPay.Api.php文件的第411行,notify()函数: /** * * 支付结果通用通知 * @param function $callback * 直接回调函数使用方法: notify(you_function); * 回调类成员函数方法:notify(array($this, you_function)); * $callback 原型为:function function_name($data){} */ public static function notify($callback, &$msg) { //获取通知的数据 $xml = $GLOBALS['HTTP_RAW_POST_DATA']; //file_put_contents('log.txt',$xml,FILE_APPEND); //如果返回成功则验证签名 try { $result = WxPayResults::Init($xml); } catch (WxPayException $e){ $msg = $e->errorMessage(); return false; } return call_user_func($callback, $result); }
Nous pouvons enregistrer les données XML renvoyées ici, puis les ouvrir pour voir si $out_trade_no est le numéro de commande que j'ai défini avant le paiement et $attach est le jeu de paramètres supplémentaires.
Après avoir obtenu le numéro de commande, j'écrirai directement la logique une fois le paiement réussi, comme la modification des données dans la base de données, etc.
De cette façon, l'analyse générale du paiement JsApi du paiement WeChat est terminé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!

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)

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,

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.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

Cet article fournit un guide détaillé pour le téléchargement en toute sécurité de l'application OUYI OKX en Chine. En raison des restrictions sur les magasins d'applications nationales, il est conseillé aux utilisateurs de télécharger l'application via le site officiel d'Ouyi OKX, ou d'utiliser le code QR fourni par le site officiel pour analyser et télécharger. Pendant le processus de téléchargement, assurez-vous de vérifier l'adresse officielle du site Web, de consulter les autorisations d'application, d'effectuer une analyse de sécurité après l'installation et d'activer la vérification à deux facteurs. Pendant l'utilisation, veuillez respecter les lois et réglementations locales, utiliser un environnement de réseau sûr, protéger la sécurité des comptes, être vigilant contre la fraude et investir rationnellement. Cet article est pour référence uniquement et ne constitue pas des conseils d'investissement.

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

Problèmes de compatibilité et méthodes de dépannage pour les logiciels et applications de sécurité de l'entreprise. De nombreuses entreprises installeront des logiciels de sécurité afin d'assurer la sécurité intranet. Cependant, les logiciels de sécurité parfois ...

Cet article fournit un bref guide pour l'achat et la vente de monnaie virtuelle de binance mise à jour en 2025 et explique en détail les étapes de fonctionnement des transactions de devises virtuelles sur la plate-forme de binance. Le guide couvre l'achat de monnaie Fiat USDT, l'achat de transactions en devises d'autres devises (tels que BTC) et les opérations de vente, y compris le trading du marché et la limite de trading. En outre, le guide rappelle également spécifiquement les risques clés tels que la sécurité des paiements et la sélection du réseau pour les transactions de monnaie fiduciaire, aidant les utilisateurs à effectuer des transactions de binance en toute sécurité et efficacement. Grâce à cet article, vous pouvez rapidement maîtriser les compétences de l'achat et de la vente de monnaies virtuelles sur la plate-forme Binance et de réduire les risques de transaction.

En PHP, vous pouvez prévenir efficacement les attaques du CSRF en utilisant des jetons imprévisibles. Les méthodes spécifiques comprennent: 1. Générer et intégrer les jetons CSRF dans la forme; 2. Vérifiez la validité du jeton lors du traitement de la demande.
