Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die WeChat-QR-Code-Zahlung in PHP

So implementieren Sie die WeChat-QR-Code-Zahlung in PHP

PHPz
PHPzOriginal
2023-04-19 09:20:412068Durchsuche

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:

  1. WeChat-Entwicklerkonto#🎜 🎜#
  2. Bewerben Sie sich für die WeChat-Zahlungsfunktion über
  3. Aufbau einer PHP-Entwicklungsumgebung
  4. WeChat-Zahlungs-SDK
2. WeChat-Zahlungsprozess

Der Prozess der WeChat-Zahlung lässt sich kurz wie folgt zusammenfassen:

    Der Benutzer öffnet die Zahlungsseite des Händlers und wählt die Zahlungsmethode aus
  1. #🎜 🎜#Der Händler sendet die Bestellinformationen des Benutzers an WeChat Pay
  2. WeChat Pay generiert einen QR-Code und sendet ihn an den Händler zurück
  3. Der Händler zeigt den QR-Code an Benutzer
  4. Benutzer verwenden WeChat, um den QR-Code zu scannen und die Zahlung abzuschließen
  5. WeChat-Zahlung sendet Benachrichtigungen über Zahlungsergebnisse an Händler
  6. In Um die WeChat-QR-Code-Zahlung zu implementieren, müssen wir die entsprechenden Schritte der Reihe nach gemäß dem oben genannten Prozess ausführen.

3. Implementierungsschritte

Zahlungsauftrag erstellen
  1. Auf der Händler-Website muss der Benutzer ausfüllen Geben Sie die Bestellinformationen ein und wählen Sie die WeChat-Zahlungsmethode. Nachdem der Benutzer die Bestellung abgeschickt hat, muss der Händler die Bestellinformationen an WeChat Pay senden.

In 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 generieren
  • make_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密钥可在微信支付商户平台中获取。

  1. 生成二维码

在获取到微信支付的响应后,商户需要解析响应中的二维码链接,并将其生成二维码。PHP中,我们可以使用PHPQRCode库来生成二维码,示例代码如下:

require_once("phpqrcode.php");
QRcode::png($result["code_url"]);

在上述代码中,我们首先引入了PHPQRCode库。然后,使用其QRcode::png()方法生成二维码。

  1. 展示二维码

在生成二维码后,商户需要将其展示给用户。在PHP中,我们可以使用<img>标签展示二维码,示例代码如下:

echo "<img src=&#39;data:image/png;base64," . base64_encode(file_get_contents("qrcode.png")) . "&#39; />";

在上述代码中,我们将二维码文件读取为二进制数据,并将其进行Base64编码。然后,将编码后的数据作为图片的URL,使用<img>标签展示二维码。

  1. 支付结果通知

在用户完成支付后,微信支付会向商户的支付结果通知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. #🎜🎜#
    #🎜🎜#QR-Code generieren#🎜🎜##🎜🎜##🎜🎜#Nachdem der Händler die Antwort von der WeChat-Zahlung erhalten hat, muss er den QR-Code in der Antwort analysieren verlinken und einen QR-Code generieren. In PHP können wir die PHPQRCode-Bibliothek verwenden, um QR-Codes zu generieren. Der Beispielcode lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Im obigen Code haben wir zuerst die PHPQRCode-Bibliothek eingeführt. Verwenden Sie dann die Methode QRcode::png(), um einen QR-Code zu generieren. #🎜🎜#
      #🎜🎜#QR-Code anzeigen#🎜🎜##🎜🎜##🎜🎜#Nach der Generierung des QR-Codes muss der Händler ihn dem Benutzer anzeigen. In PHP können wir das Tag <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. #🎜🎜#
        #🎜🎜#Benachrichtigung über Zahlungsergebnisse#🎜🎜##🎜🎜##🎜🎜#Nachdem der Benutzer die Zahlung abgeschlossen hat, überträgt WeChat Pay das Zahlungsergebnis an das Zahlungsergebnis des Händlers Benachrichtigungs-URL. Nach Erhalt der Benachrichtigung muss der Händler die Gültigkeit der Benachrichtigung überprüfen und den Bestellstatus basierend auf dem Zahlungsergebnis in der Benachrichtigung aktualisieren. Der Beispielcode für PHP lautet wie folgt: #🎜🎜#rrreee#🎜🎜#Im obigen Code verwenden wir zunächst 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn