Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP zur Entwicklung der WeChat-Zahlungsfunktion

So verwenden Sie PHP zur Entwicklung der WeChat-Zahlungsfunktion

WBOY
WBOYOriginal
2023-08-17 10:31:442222Durchsuche

So verwenden Sie PHP zur Entwicklung der WeChat-Zahlungsfunktion

So verwenden Sie PHP zur Entwicklung der WeChat-Zahlungsfunktion

Als praktische Online-Zahlungsmethode ist die WeChat-Zahlung bei Händlern und Verbrauchern sehr beliebt. Für Entwickler ist die Verwendung der PHP-Sprache zur Entwicklung von WeChat-Zahlungsfunktionen eine sehr wichtige Aufgabe. In diesem Artikel wird die Verwendung von PHP zur Entwicklung von WeChat-Zahlungsfunktionen vorgestellt und entsprechende Codebeispiele bereitgestellt.

  1. Holen Sie sich die WeChat-Zahlungsschnittstelle

Bevor Sie mit der Entwicklung beginnen, müssen Sie zunächst die Zahlungsschnittstelle von WeChat beantragen und den entsprechenden API-Schlüssel und die Händlernummer erhalten. Melden Sie sich bei der WeChat Payment Developer Platform an, beantragen Sie die Zahlungsschnittstelle gemäß den Richtlinien und erhalten Sie den API-Schlüssel und die Händlernummer.

  1. PHP-Umgebung konfigurieren

Bevor Sie mit der Entwicklung beginnen, stellen Sie sicher, dass Sie die PHP-Umgebung installiert und die entsprechenden Erweiterungen aktiviert haben: cURL-Erweiterung und openSL-Erweiterung. Diese beiden Erweiterungen werden in PHP zum Senden von HTTPS-Anfragen und zum Verschlüsseln von Daten verwendet und sind notwendige Erweiterungen zur Implementierung der WeChat-Zahlungsfunktionen.

  1. Konfiguration der Zahlungsanforderungsparameter

Bevor Sie eine Zahlungsanforderung stellen, müssen Sie die relevanten Zahlungsparameter konfigurieren und eine Signatur gemäß dem WeChat-Zahlungsschnittstellendokument erstellen. Das Folgende ist ein Beispielcode:

// 配置支付参数
$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. Initiieren Sie eine Zahlungsanforderung

Initiieren Sie eine Zahlungsanforderung über die cURL-Bibliotheksfunktion und erhalten Sie die Informationen zur Prepaid-Bestellung. Das Folgende ist der Beispielcode:

$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. Zahlungsparameter generieren

Zahlungsparameter über prepay_id generieren, das zum Aufrufen der WeChat-Zahlungsseite verwendet wird. Das Folgende ist der Beispielcode:

$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. Aufruf der Front-End-Seite

Übergeben Sie die generierten Zahlungsparameter an das Front-End und rufen Sie die WeChat-Zahlungsschnittstelle über JS auf.

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

Das Obige ist der gesamte Prozess der Entwicklung der WeChat-Zahlungsfunktion mit PHP. Mit diesen Codebeispielen können Sie die WeChat Pay-Funktionalität einfach implementieren und auf Ihre Website oder Anwendung anwenden. Ich wünsche Ihnen eine erfolgreiche Entwicklung!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP zur Entwicklung der WeChat-Zahlungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn