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 :
II, paiement WeChat processus
Le processus de paiement WeChat peut être brièvement résumé comme les étapes suivantes :
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
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. 🎜QRcode::png()
pour générer un code QR. 🎜<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. 🎜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!