Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP zur Implementierung der WeChat-Zahlungsabrechnungsabfrage
Mit der Popularität des mobilen Bezahlens ist die WeChat-Zahlung zu einer Zahlungsmethode geworden, die nicht ignoriert werden kann. Als Entwickler ist die Rechnungsabfrage ein wesentlicher Bestandteil bei der Nutzung von WeChat Pay. In diesem Artikel wird erläutert, wie Sie die PHP-Sprache zum Abfragen von WeChat-Zahlungsauszügen verwenden.
Bevor Sie die WeChat-Zahlung verwenden, müssen Sie zunächst die WeChat-Zahlungskontoinformationen konfigurieren. Nachdem Sie ein Konto im WeChat Pay Developer Center (https://pay.weixin.qq.com/) registriert und die entsprechenden Zertifizierungen abgeschlossen haben, können Sie die APPID, die Händler-ID, den Händlerschlüssel und andere Informationen von WeChat Pay erhalten.
Nachdem die WeChat-Zahlung abgeschlossen ist, generiert das System den entsprechenden Transaktionsdatensatz und lädt den Transaktionsdatensatz auf den WeChat-Zahlungsserver hoch. Wir können den Link zum Herunterladen des Kontoauszugs erhalten, indem wir die von WeChat Pay bereitgestellte API aufrufen.
Die spezifische API ist: https://api.mch.weixin.qq.com/pay/downloadbill
Die API muss die folgenden Parameter übergeben:
Parametername | Erforderlich | Typ | Beispielwert | Description |
---|---|---|---|---|
appid | ist | string(32) | wxd678efh567hg6787 | Die von WeChat zugewiesene öffentliche Konto-ID |
mch_ ID | ist | string(32) | 1230000109 | Die von WeChat Pay zugewiesene Händlernummer |
nonce_str | ist | string(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | zufällige Zeichenfolge |
sign | ist | string(32) | C380BEC2BFD727A4B6845133519F3AD6 | Signature |
Dabei muss sich die Signaturgenerierung auf die Signaturregeln von WeChat Pay beziehen. Spezifische Implementierungsmethoden finden Sie in den offiziellen Dokumenten von WeChat Pay.
Über den im vorherigen Schritt erhaltenen Link zum Herunterladen der Erklärung können wir die Curl-Bibliothek von PHP verwenden, um die Erklärung herunterzuladen. Die spezifische Code-Implementierung lautet wie folgt:
$url = 'https://api.mch.weixin.qq.com/pay/downloadbill'; $params = array( 'appid' => 'xxx', 'mch_id' => 'xxx', 'nonce_str' => 'xxx', 'sign' => 'xxx', 'bill_date' => 'xxx', // 对账单日期 'bill_type' => 'ALL', // ALL-返回当日所有订单信息,SUCCESS-返回当日成功支付的订单,REFUND-返回当日退款订单,REVOKED-已撤销或已退款的订单 ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $response = curl_exec($ch); curl_close($ch);
Die heruntergeladene Anweisung ist eine CSV-Datei und muss zur weiteren Verarbeitung von PHP analysiert werden. Wir können die Funktion fgetcsv verwenden, um die Daten jeder Zeile zu lesen und die Daten dann zu analysieren.
Die spezifische Code-Implementierung lautet wie folgt:
$lines = explode(" ", $response); $header = explode(",", $lines[0]); // 第一行为表头信息 $data = array(); for($i = 1; $i < count($lines)-2; $i++) { // 最后两行为统计信息,不需要处理 $line = explode(",", $lines[$i]); $row = array(); foreach ($header as $key => $value) { $row[$value] = $line[$key]; } $data[] = $row; }
Die Anweisung gibt die Originaldaten zurück, was eine bestimmte Verarbeitung erfordert, um das Abgleichsergebnis zu erhalten. Wir können die Daten nach Bestellnummern des Händlers gruppieren und die Daten dann nach Bestellnummer, Transaktionstyp, Transaktionsstatus und anderen Bedingungen filtern. Abschließend können die Abgleichsergebnisse auf der HTML-Seite ausgegeben werden.
Die spezifische Code-Implementierung lautet wie folgt:
$grouped_data = array(); foreach ($data as $row) { $grouped_data[$row['商户订单号']][] = $row; } $result = array(); foreach ($grouped_data as $order_no => $order_lines) { $success_lines = array_filter($order_lines, function($line) { return $line['交易状态'] == 'SUCCESS'; }); if (count($success_lines) == 0) { $result[] = array( 'order_no' => $order_no, 'reconciliation_status' => 'fail', 'transaction_type' => $order_lines[0]['交易类型'], 'transaction_status' => $order_lines[0]['交易状态'], 'total_amount' => $order_lines[0]['应结订单金额'], 'refund_amount' => $order_lines[0]['已退款金额'], 'fee' => $order_lines[0]['手续费'], ); } else { $success_line = $success_lines[0]; $total_amount = array_sum(array_column($order_lines, '应结订单金额')); $refund_amount = array_sum(array_column($order_lines, '已退款金额')); $fee = array_sum(array_column($order_lines, '手续费')); $result[] = array( 'order_no' => $order_no, 'reconciliation_status' => 'success', 'transaction_type' => $success_line['交易类型'], 'transaction_status' => $success_line['交易状态'], 'total_amount' => $total_amount, 'refund_amount' => $refund_amount, 'fee' => $fee, ); } } // 输出结果到HTML页面上 echo "<table>"; echo "<tr><td>订单号</td><td>对账状态</td><td>交易类型</td><td>交易状态</td><td>总金额</td><td>退款金额</td><td>手续费</td></tr>" foreach ($result as $row) { echo "<tr>"; echo "<td>{$row['order_no']}</td>"; echo "<td>{$row['reconciliation_status']}</td>"; echo "<td>{$row['transaction_type']}</td>"; echo "<td>{$row['transaction_status']}</td>"; echo "<td>{$row['total_amount']}</td>"; echo "<td>{$row['refund_amount']}</td>"; echo "<td>{$row['fee']}</td>"; echo "</tr>"; } echo "</table>";
An diesem Punkt ist der Prozess der Verwendung von PHP zur Implementierung der WeChat-Zahlungsauszugsabfrage abgeschlossen. Ich hoffe, dieser Artikel kann Entwicklerfreunden helfen, die WeChat Pay verwenden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP zur Implementierung der WeChat-Zahlungsabrechnungsabfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!