Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat

Cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat

WBOY
WBOYasal
2023-08-17 10:31:442178semak imbas

Cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat

Cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat

Sebagai kaedah pembayaran dalam talian yang mudah, pembayaran WeChat amat disukai oleh peniaga dan pengguna. Bagi pembangun, membangunkan fungsi pembayaran WeChat menggunakan bahasa PHP adalah tugas yang sangat penting. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat dan menyediakan contoh kod yang sepadan.

  1. Dapatkan antara muka pembayaran WeChat

Sebelum memulakan pembangunan, anda perlu terlebih dahulu memohon antara muka pembayaran daripada WeChat dan dapatkan kunci API dan nombor pedagang yang berkaitan. Log masuk ke Platform Pembangun Pembayaran WeChat, mohon antara muka pembayaran mengikut garis panduan, dan dapatkan kunci API dan nombor pedagang.

  1. Konfigurasikan persekitaran PHP

Sebelum memulakan pembangunan, pastikan anda telah memasang persekitaran PHP dan mendayakan sambungan yang sepadan: sambungan cURL dan sambungan openssl. Kedua-dua sambungan ini digunakan dalam PHP untuk menghantar permintaan HTTPS dan menyulitkan data, dan merupakan sambungan yang diperlukan untuk melaksanakan fungsi pembayaran WeChat.

  1. Konfigurasi parameter permintaan pembayaran

Sebelum membuat permintaan pembayaran, anda perlu mengkonfigurasi parameter pembayaran yang berkaitan dan menjana tandatangan mengikut dokumen antara muka pembayaran WeChat. Berikut ialah contoh kod:

// 配置支付参数
$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. Mulakan permintaan pembayaran

Mulakan permintaan pembayaran melalui fungsi perpustakaan cURL dan dapatkan maklumat pesanan prabayar. Berikut ialah kod sampel:

$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. Jana parameter pembayaran

Jana parameter pembayaran melalui prepay_id, yang digunakan untuk membangkitkan halaman pembayaran WeChat. Berikut ialah kod sampel:

$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. Panggilan halaman hadapan

Lepaskan parameter pembayaran yang dijana ke bahagian hadapan dan hubungi antara muka pembayaran WeChat melalui JS.

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

Di atas adalah keseluruhan proses menggunakan PHP untuk membangunkan fungsi pembayaran WeChat. Dengan contoh kod ini, anda boleh melaksanakan fungsi WeChat Pay dengan mudah dan menggunakannya pada tapak web atau aplikasi anda. Saya berharap anda berjaya pembangunan!

Atas ialah kandungan terperinci Cara menggunakan PHP untuk membangunkan fungsi pembayaran WeChat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn