モバイル決済の人気により、WeChat は中国で最も広く使用されている支払い方法の 1 つになりました。 WeChat Pay はさまざまな支払い方法を提供しており、QR コード支払いもますます多くのユーザーに歓迎されています。この記事ではPHPを使ってWeChat QRコード決済を実装する方法を紹介します。
1. 前提条件
開始する前に、次の条件を準備する必要があります:
2. WeChat 決済プロセス
WeChat 決済のプロセスは次のように簡単に要約できます。次の手順:
WeChat QR コード支払いを実装するには、上記のプロセスに従って、対応する手順を順番に完了する必要があります。
3. 実装手順
販売者の Web サイトで、ユーザーは注文情報を入力し、WeChat 支払いを選択する必要があります。方法。ユーザーが注文を送信した後、販売者は注文情報を WeChat Pay に送信する必要があります。
PHP では、CURL ライブラリを使用して POST リクエストを WeChat 支払い API に送信できます。以下はサンプル コードです。
$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转换为数组格式
上記のコードでは、次の関数を使用します。
uniqid()
は、一意のランダムを生成するために使用されます。 stringmake_sign()
署名の生成に使用されますarray_to_xml()
配列を XML 形式に変換します Send POST request
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)); }
require_once("phpqrcode.php"); QRcode::png($result["code_url"]);
QRcode::png() メソッドを使用して QR コードを生成します。
タグを使用して QR コードを表示できます。サンプル コードは次のとおりです:
echo "<img src='data:image/png;base64," . base64_encode(file_get_contents("qrcode.png")) . "' />";
タグを使用して QR コードを表示します。
$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() 関数を使用して、署名の有効性を確認します。最後に、支払い結果に基づいて注文ステータスが更新され、「成功」または「失敗」の応答が WeChat Pay に送信されます。
以上がPHPでWeChat QRコード決済を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。