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:
2. Proses pembayaran WeChat
Proses pembayaran WeChat boleh diringkaskan secara ringkas seperti berikut Langkah berikut:
Untuk melaksanakan pembayaran kod QR WeChat, kami perlu melengkapkan langkah yang sepadan mengikut urutan mengikut proses di atas.
3. Langkah pelaksanaan
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 unikmake_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.
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.
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='data:image/png;base64," . base64_encode(file_get_contents("qrcode.png")) . "' />";
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.
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!