PHP を使用して WeChat 支払い機能を開発する方法
WeChat 支払いは、便利なオンライン支払い方法として、販売者や消費者に深く愛されています。開発者にとって、PHP言語を使用したWeChat決済機能の開発は非常に重要な作業です。この記事では、PHP を使用して WeChat 決済機能を開発する方法と、対応するコード例を紹介します。
開発を開始する前に、まず WeChat から決済インターフェースを申請し、関連する API キーと販売者番号を取得する必要があります。 WeChat Payment Developer Platform にログインし、ガイドラインに従って決済インターフェースを申請し、API キーと加盟店番号を取得します。
開発を開始する前に、PHP 環境がインストールされ、対応する拡張機能 (cURL 拡張機能と openssl 拡張機能) が有効になっていることを確認してください。これら 2 つの拡張機能は、PHP で HTTPS リクエストの送信とデータの暗号化に使用され、WeChat 支払い機能を実装するために必要な拡張機能です。
支払いリクエストを行う前に、関連する支払いパラメータを設定し、WeChat 支払いインターフェースドキュメントに従って署名を生成する必要があります。以下はサンプル コードです。
// 配置支付参数 $params = [ 'appid' => 'YOUR_APPID', 'mch_id' => 'YOUR_MCH_ID', 'nonce_str' => md5(time() . mt_rand(0, 1000)), 'body' => '商品描述', 'out_trade_no' => '订单号', 'total_fee' => '支付金额', 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => '支付回调地址', 'trade_type' => 'JSAPI', 'openid' => '用户openid', ]; // 生成签名 $sign = ''; foreach ($params as $key => $value) { if ($key != 'sign' && $value != '') { $sign .= $key . '=' . $value . '&'; } } $sign .= 'key=' . 'YOUR_API_KEY'; // API密钥 $params['sign'] = strtoupper(md5($sign));
cURL ライブラリ関数を通じて支払いリクエストを開始し、前払い注文情報を取得します。以下はサンプル コードです:
$xml_data = "<xml>"; foreach ($params as $key => $value) { $xml_data .= "<" . $key . ">" . $value . "</" . $key . ">"; } $xml_data .= "</xml>"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data); $response = curl_exec($ch); curl_close($ch); $result = simplexml_load_string($response); if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') { $prepay_id = $result->prepay_id; // 保存prepay_id,用于后续支付 }
prepay_id を通じて支払いパラメータを生成します。これは、WeChat 支払いページを呼び出すために使用されます。サンプル コードは次のとおりです。
$nonce_str = md5(time() . mt_rand(0, 1000)); $prepay_params = [ 'appId' => 'YOUR_APPID', 'timeStamp' => time(), 'nonceStr' => $nonce_str, 'package' => 'prepay_id=' . $prepay_id, 'signType' => 'MD5', ]; $sign = ''; ksort($prepay_params); foreach ($prepay_params as $key => $value) { $sign .= $key . '=' . $value . '&'; } $sign .= 'key=' . 'YOUR_API_KEY'; // API密钥 $prepay_params['paySign'] = strtoupper(md5($sign));
生成された支払いパラメータをフロントエンドに渡し、JS 経由で WeChat 支払いインターフェイスを呼び出します。
function onBridgeReady() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', { 'appId': '<?php echo $prepay_params["appId"]; ?>', 'timeStamp': '<?php echo $prepay_params["timeStamp"]; ?>', 'nonceStr': '<?php echo $prepay_params["nonceStr"]; ?>', 'package': '<?php echo $prepay_params["package"]; ?>', 'signType': '<?php echo $prepay_params["signType"]; ?>', 'paySign': '<?php echo $prepay_params["paySign"]; ?>' }, function (res) { if (res.err_msg == "get_brand_wcpay_request:ok") { // 支付成功后的处理逻辑 } } ); } if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) { document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); } else if (document.attachEvent) { document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } } else { onBridgeReady(); }
上記は、PHP を使用して WeChat 決済機能を開発するプロセス全体です。これらのコード例を使用すると、WeChat Pay 機能を簡単に実装し、Web サイトやアプリケーションに適用できます。開発の成功を祈っています!
以上がPHPを使用してWeChat決済機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。