Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pembayaran kod QR WeChat dalam PHP

Bagaimana untuk melaksanakan pembayaran kod QR WeChat dalam PHP

PHPz
PHPzasal
2023-04-19 09:20:412028semak imbas

Dengan populariti pembayaran mudah alih, WeChat telah menjadi salah satu kaedah pembayaran yang paling banyak digunakan di China. WeChat Pay menyediakan pelbagai kaedah pembayaran, dan pembayaran kod QR juga dialu-alukan oleh semakin ramai pengguna. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan pembayaran kod QR WeChat.

1. Prasyarat

Sebelum anda mula, anda perlu menyediakan syarat berikut:

  1. Akaun pembangun WeChat
  2. Fungsi pembayaran WeChat Mohon kelulusan
  3. Pembinaan persekitaran pembangunan PHP
  4. SDK pembayaran WeChat

2. Proses pembayaran WeChat

Proses pembayaran WeChat boleh diringkaskan secara ringkas seperti berikut Langkah berikut:

  1. Pengguna membuka halaman pembayaran pedagang dan memilih kaedah pembayaran
  2. Pedagang menghantar maklumat pesanan pengguna ke WeChat Pay
  3. WeChat Pay menjana kod 2D dan mengembalikannya kepada pedagang
  4. Pedagang memaparkan kod QR kepada pengguna
  5. Pengguna menggunakan WeChat untuk mengimbas kod QR dan menyelesaikan pembayaran
  6. WeChat Pay menghantar pemberitahuan hasil pembayaran kepada pedagang

Untuk melaksanakan pembayaran kod QR WeChat, kami perlu melengkapkan langkah yang sepadan mengikut urutan mengikut proses di atas.

3. Langkah pelaksanaan

  1. Buat pesanan pembayaran

Di laman web pedagang, pengguna perlu mengisi maklumat pesanan dan memilih pembayaran WeChat kaedah. Selepas pengguna menyerahkan pesanan, pedagang perlu menghantar maklumat pesanan kepada WeChat Pay.

Dalam PHP, kami boleh menggunakan perpustakaan CURL untuk menghantar permintaan POST ke API pembayaran WeChat. Berikut ialah contoh kod:

$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转换为数组格式

Dalam kod di atas, kami menggunakan fungsi berikut:

  • uniqid() untuk menjana rentetan rawak unik
  • make_sign() Digunakan untuk menjana tandatangan
  • array_to_xml() Tukar tatasusunan kepada format XML
  • curl_post() Hantar permintaan POST
  • xml_to_array() Tukar XML Tukar kepada format tatasusunan

Antaranya, kod untuk penjanaan tandatangan adalah seperti berikut:

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));
}

Perlu diingatkan bahawa nombor pedagang dan kunci API boleh diperolehi dalam platform pedagang WeChat Pay.

  1. Jana kod QR

Selepas mendapat respons daripada pembayaran WeChat, peniaga perlu menghuraikan pautan kod QR dalam respons dan menjananya menjadi kod QR. Dalam PHP, kita boleh menggunakan perpustakaan PHPQRCode untuk menjana kod QR Kod sampel adalah seperti berikut:

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

Dalam kod di atas, kami mula-mula memperkenalkan perpustakaan PHPQRCode. Kemudian, gunakan kaedah QRcode::png() untuk menjana kod QR.

  1. Paparkan kod QR

Selepas menjana kod QR, peniaga perlu memaparkannya kepada pengguna. Dalam PHP, kita boleh menggunakan tag <img> untuk memaparkan kod QR Contoh kod adalah seperti berikut:

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

Dalam kod di atas, kami membaca fail kod QR sebagai data binari dan memprosesnya. Pengekodan Base64. Kemudian, gunakan data yang dikodkan sebagai URL imej dan gunakan teg <img> untuk memaparkan kod QR.

  1. Pemberitahuan hasil pembayaran

Selepas pengguna menyelesaikan pembayaran, WeChat Pay akan menolak hasil pembayaran ke URL pemberitahuan hasil pembayaran pedagang. Selepas menerima pemberitahuan, peniaga perlu mengesahkan kesahihan pemberitahuan dan mengemas kini status pesanan mengikut keputusan pembayaran dalam pemberitahuan. Kod sampel untuk PHP adalah seperti berikut:

$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";
}

Dalam kod di atas, kami mula-mula menggunakan file_get_contents("php://input") untuk membaca data XML dalam badan permintaan POST dan menukarnya kepada format tatasusunan. Kemudian, gunakan fungsi check_sign() untuk mengesahkan kesahihan tandatangan. Akhir sekali, status pesanan dikemas kini berdasarkan hasil pembayaran dan respons "BERJAYA" atau "GAGAL" dihantar ke WeChat Pay.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan pembayaran kod QR WeChat. Semasa proses pelaksanaan, anda perlu memberi perhatian kepada butiran proses pembayaran WeChat dan menggunakan fungsi dan perpustakaan berkaitan PHP dengan munasabah. Saya harap artikel ini dapat memberi anda sedikit bantuan semasa melaksanakan pembayaran WeChat.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pembayaran kod QR WeChat dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn