Mit der Popularität des mobilen Bezahlens hat sich WeChat zu einer der am weitesten verbreiteten Zahlungsmethoden in China entwickelt. WeChat Pay bietet eine Vielzahl von Zahlungsmethoden und auch die Zahlung per QR-Code wird von immer mehr Nutzern begrüßt. In diesem Artikel wird erläutert, wie Sie mit PHP die WeChat-QR-Code-Zahlung implementieren.
1. Voraussetzungen
Bevor Sie beginnen, müssen Sie die folgenden Bedingungen vorbereiten:
3. Implementierungsschritte
Zahlungsauftrag erstellenIn PHP können wir die CURL-Bibliothek verwenden, um POST-Anfragen an die WeChat-Zahlungs-API zu senden. Das Folgende ist ein Beispielcode:
$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转换为数组格式
Im obigen Code verwenden wir die folgenden Funktionen:
uniqid()
Wird verwendet um eine eindeutige Zufallszeichenfolge zu generierenmake_sign()
Wird zum Generieren einer Signatur verwendetuniqid()
用于生成一个唯一的随机字符串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()
array_to_xml()
konvertiert das Array in XML-Format
curl_post()
POST-Anfrage senden
xml_to_array()
XML in Array-Format konvertieren #🎜🎜 ##🎜🎜#Der durch die Signatur generierte Code lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Es ist zu beachten, dass die Händlernummer und der API-Schlüssel auf der WeChat Pay-Händlerplattform erhältlich sind. #🎜🎜#QRcode::png()
, um einen QR-Code zu generieren. #🎜🎜#<img>
verwenden, um den QR-Code anzuzeigen. Der Beispielcode lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Im obigen Code lesen wir den QR Codedatei als Binärdaten erstellen und mit Base64 kodieren. Verwenden Sie dann die codierten Daten als URL des Bildes und verwenden Sie das Tag <img>
, um den QR-Code anzuzeigen. #🎜🎜#file_get_contents("php://input")
, um die XML-Daten im zu lesen POST-Anfragetext und konvertieren Sie ihn in das Array-Format. Verwenden Sie dann die Funktion check_sign()
, um die Gültigkeit der Signatur zu überprüfen. Abschließend wird der Bestellstatus basierend auf dem Zahlungsergebnis aktualisiert und eine „ERFOLGREICH“ oder „FEHLER“-Antwort an WeChat Pay gesendet. #🎜🎜##🎜🎜# 4. Zusammenfassung #🎜🎜##🎜🎜# In diesem Artikel wird erläutert, wie Sie PHP zur Implementierung der WeChat-QR-Code-Zahlung verwenden. Während des Implementierungsprozesses müssen Sie auf die Details des WeChat-Zahlungsprozesses achten und PHP-bezogene Funktionen und Bibliotheken sinnvoll nutzen. Ich hoffe, dieser Artikel kann Ihnen bei der Implementierung der WeChat-Zahlung hilfreich sein. #🎜🎜#Das obige ist der detaillierte Inhalt vonSo implementieren Sie die WeChat-QR-Code-Zahlung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!