


Comment implémenter le paiement par code QR WeChat en PHP
Avec la popularité du paiement mobile, WeChat est devenu l'une des méthodes de paiement les plus utilisées en Chine. WeChat Pay propose une variété de méthodes de paiement, et le paiement par code QR est également apprécié par de plus en plus d'utilisateurs. Cet article explique comment utiliser PHP pour implémenter le paiement par code QR WeChat.
1. Conditions préalables
Avant de commencer, vous devez préparer les conditions suivantes :
- Compte développeur WeChat
- Application de la fonction de paiement WeChat réussie
- Construction de l'environnement de développement PHP
- SDK de paiement WeChat
II, paiement WeChat processus
Le processus de paiement WeChat peut être brièvement résumé comme les étapes suivantes :
- L'utilisateur ouvre la page de paiement du commerçant et sélectionne le mode de paiement
- Le commerçant envoie les informations de commande de l'utilisateur au paiement WeChat
- Le paiement WeChat génère 2D code et le renvoie au commerçant
- Le commerçant affiche le code QR à l'utilisateur
- L'utilisateur utilise WeChat pour scanner le code QR et finalise le paiement
- WeChat Pay envoie une notification de résultat de paiement au commerçant
Afin de mettre en œuvre le paiement par code QR WeChat, nous devons suivre le processus ci-dessus pour terminer les étapes correspondantes.
3. Étapes de mise en œuvre
- Créer un ordre de paiement
Sur le site marchand, l'utilisateur doit renseigner les informations de commande et sélectionner le mode de paiement WeChat. Une fois que l'utilisateur a soumis la commande, le commerçant doit envoyer les informations de commande à WeChat Pay.
En PHP, nous pouvons utiliser la bibliothèque CURL pour envoyer des requêtes POST à l'API de paiement WeChat. Voici un exemple de code :
$url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; $fields = array( "appid" => "YOUR_APP_ID", // 公众号ID或应用ID "mch_id" => "YOUR_MCH_ID", // 商户号 "nonce_str" => uniqid(), // 随机字符串 "out_trade_no" => "YOUR_ORDER_NUMBER", // 商户订单号 "total_fee" => "YOUR_ORDER_AMOUNT", // 订单金额,单位为分 "spbill_create_ip" => $_SERVER["REMOTE_ADDR"], // 用户端实际ip "notify_url" => "YOUR_NOTIFY_URL", // 支付通知回调地址 "trade_type" => "NATIVE", // 交易类型,NATIVE为扫码支付 "product_id" => "PRODUCT_ID", // 商品ID ); $fields["sign"] = make_sign($fields, "YOUR_MCH_KEY"); // 签名字段 $xml = array_to_xml($fields); // 将数组转换为XML格式 $response = curl_post($url, $xml); // 发送POST请求 $result = xml_to_array($response); // 将响应XML转换为数组格式
Dans le code ci-dessus, nous utilisons les fonctions suivantes :
-
uniqid()
est utilisé pour générer une chaîne aléatoire uniqueuniqid()
用于生成一个唯一的随机字符串 -
make_sign()
用于生成签名 -
array_to_xml()
将数组转换为XML格式 -
curl_post()
发送POST请求 -
xml_to_array()
将XML转换为数组格式
其中,签名生成的代码如下:
function make_sign($fields, $key) { $string = ""; ksort($fields); foreach ($fields as $k => $v) { if ($k != "sign" && $v != "" && !is_array($v)) { $string .= $k . "=" . $v . "&"; } } $string .= "key=" . $key; return strtoupper(md5($string)); }
需要注意的是,商户号和API密钥可在微信支付商户平台中获取。
- 生成二维码
在获取到微信支付的响应后,商户需要解析响应中的二维码链接,并将其生成二维码。PHP中,我们可以使用PHPQRCode库来生成二维码,示例代码如下:
require_once("phpqrcode.php"); QRcode::png($result["code_url"]);
在上述代码中,我们首先引入了PHPQRCode库。然后,使用其QRcode::png()
方法生成二维码。
- 展示二维码
在生成二维码后,商户需要将其展示给用户。在PHP中,我们可以使用<img>
标签展示二维码,示例代码如下:
echo "<img src='data:image/png;base64," . base64_encode(file_get_contents("qrcode.png")) . "' />";
在上述代码中,我们将二维码文件读取为二进制数据,并将其进行Base64编码。然后,将编码后的数据作为图片的URL,使用<img>
标签展示二维码。
- 支付结果通知
在用户完成支付后,微信支付会向商户的支付结果通知URL推送支付结果。在接收到通知后,商户需要验证通知的有效性,并根据通知中的支付结果更新订单状态。PHP的示例代码如下:
$xml = file_get_contents("php://input"); $data = xml_to_array($xml); if (check_sign($data, "YOUR_MCH_KEY")) { if ($data["return_code"] == "SUCCESS" && $data["result_code"] == "SUCCESS") { // 修改订单状态 // ... echo "SUCCESS"; } else { echo "FAIL"; } } else { echo "FAIL"; }
在上述代码中,我们首先使用file_get_contents("php://input")
读取POST请求体中的XML数据,并将其转换为数组格式。然后,使用check_sign()
make_sign () est utilisé pour générer une signature <p></p>
<code>array_to_xml()
Convertir le tableau au format XML
curl_post()
Envoyer une requête POST 🎜🎜xml_to_array( )
Convertir XML au format tableau 🎜🎜Parmi eux, le code généré par la signature est le suivant : 🎜rrreee🎜A noter que le numéro de commerçant et la clé API peuvent être obtenus dans le WeChat Pay plateforme marchande. 🎜- 🎜Générer un code QR🎜🎜🎜Après avoir reçu la réponse du paiement WeChat, le commerçant doit analyser le lien du code QR dans la réponse et générer un code QR. En PHP, nous pouvons utiliser la bibliothèque PHPQRCode pour générer des codes QR. L'exemple de code est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous avons d'abord introduit la bibliothèque PHPQRCode. Ensuite, utilisez sa méthode
QRcode::png()
pour générer un code QR. 🎜- 🎜Afficher le code QR🎜🎜🎜Après avoir généré le code QR, le commerçant doit l'afficher à l'utilisateur. En PHP, nous pouvons utiliser la balise
<img>
pour afficher le code QR. L'exemple de code est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous lisons le fichier de code QR sous forme de données binaires et. convertir Il est codé en Base64. Ensuite, utilisez les données codées comme URL de l'image et utilisez la balise <img>
pour afficher le code QR. 🎜- 🎜Notification du résultat du paiement🎜🎜🎜Une fois que l'utilisateur a terminé le paiement, WeChat Pay transmettra le résultat du paiement à l'URL de notification du résultat du paiement du commerçant. Après avoir reçu la notification, le commerçant doit vérifier la validité de la notification et mettre à jour le statut de la commande en fonction du résultat du paiement indiqué dans la notification. L'exemple de code pour PHP est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons d'abord
file_get_contents("php://input")
pour lire les données XML dans le corps de la requête POST et les convertir. dans un format de tableau. Ensuite, utilisez la fonction check_sign()
pour vérifier la validité de la signature. Enfin, le statut de la commande est mis à jour en fonction du résultat du paiement et une réponse « SUCCÈS » ou « ÉCHEC » est envoyée à WeChat Pay. 🎜🎜4. Résumé🎜🎜Cet article présente comment utiliser PHP pour implémenter le paiement par code QR WeChat. Pendant le processus de mise en œuvre, vous devez prêter attention aux détails du processus de paiement WeChat et utiliser raisonnablement les fonctions et bibliothèques liées à PHP. J'espère que cet article pourra vous aider lors de la mise en œuvre du paiement WeChat. 🎜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

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 !

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)

L'article traite des 10 meilleures vulnérabilités de l'OWASP dans les stratégies PHP et d'atténuation. Les problèmes clés incluent l'injection, l'authentification brisée et les XS, avec des outils recommandés pour surveiller et sécuriser les applications PHP.

La compilation JIT de PHP 8 améliore les performances en compilant le code fréquemment exécuté en code machine, bénéficiant aux applications avec des calculs lourds et en réduisant les temps d'exécution.

L'article traite de la sécurisation des téléchargements de fichiers PHP pour éviter les vulnérabilités comme l'injection de code. Il se concentre sur la validation du type de fichier, le stockage sécurisé et la gestion des erreurs pour améliorer la sécurité de l'application.

L'article traite du cryptage symétrique et asymétrique en PHP, en comparant leur aptitude, leurs performances et leurs différences de sécurité. Le chiffrement symétrique est plus rapide et adapté aux données en vrac, tandis que l'asymétrique est utilisé pour l'échange de clés sécurisé.

L'article examine la mise en œuvre d'authentification et d'autorisation robustes dans PHP pour empêcher un accès non autorisé, détaillant les meilleures pratiques et recommandant des outils d'amélioration de la sécurité.

L'article traite des stratégies de mise en œuvre de la limitation du taux d'API en PHP, y compris des algorithmes comme un godet de jeton et un seau qui fuit, et en utilisant des bibliothèques comme Symfony / Rate-Limiter. Il couvre également la surveillance, l'ajustement dynamiquement des limites de taux et la main

L'article traite des stratégies pour prévenir les attaques du CSRF dans PHP, notamment en utilisant des jetons CSRF, des cookies de même site et une bonne gestion de session.

L'article traite des meilleures pratiques pour la validation des entrées PHP pour améliorer la sécurité, en se concentrant sur des techniques telles que l'utilisation de fonctions intégrées, une approche de liste blanche et une validation côté serveur.
