ホームページ > バックエンド開発 > PHPチュートリアル > PHPを使用してWeChat決済機能を開発する方法

PHPを使用してWeChat決済機能を開発する方法

WBOY
リリース: 2023-08-17 10:32:02
オリジナル
2211 人が閲覧しました

PHPを使用してWeChat決済機能を開発する方法

PHP を使用して WeChat 支払い機能を開発する方法

WeChat 支払いは、便利なオンライン支払い方法として、販売者や消費者に深く愛されています。開発者にとって、PHP言語を使用したWeChat決済機能の開発は非常に重要な作業です。この記事では、PHP を使用して WeChat 決済機能を開発する方法と、対応するコード例を紹介します。

  1. WeChat 決済インターフェースの取得

開発を開始する前に、まず WeChat から決済インターフェースを申請し、関連する API キーと販売者番号を取得する必要があります。 WeChat Payment Developer Platform にログインし、ガイドラインに従って決済インターフェースを申請し、API キーと加盟店番号を取得します。

  1. PHP 環境の構成

開発を開始する前に、PHP 環境がインストールされ、対応する拡張機能 (cURL 拡張機能と openssl 拡張機能) が有効になっていることを確認してください。これら 2 つの拡張機能は、PHP で HTTPS リクエストの送信とデータの暗号化に使用され、WeChat 支払い機能を実装するために必要な拡張機能です。

  1. 支払いリクエストパラメータの設定

支払いリクエストを行う前に、関連する支払いパラメータを設定し、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));
ログイン後にコピー
  1. 支払いリクエストの開始

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,用于后续支付
}
ログイン後にコピー
  1. 支払いパラメータの生成

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));
ログイン後にコピー
  1. フロントエンド ページ呼び出し

生成された支払いパラメータをフロントエンドに渡し、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート