Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan PHP: Bagaimana untuk melaksanakan fungsi pembayaran WeChat

Pembangunan PHP: Bagaimana untuk melaksanakan fungsi pembayaran WeChat

WBOY
WBOYasal
2023-09-20 10:52:531586semak imbas

Pembangunan PHP: Bagaimana untuk melaksanakan fungsi pembayaran WeChat

Pembangunan PHP: Bagaimana untuk melaksanakan fungsi pembayaran WeChat, contoh kod khusus diperlukan

Dalam proses mempopularkan dan pembangunan pembayaran mudah alih, Pembayaran WeChat telah Ia telah menjadi salah satu alat pembayaran yang dipercayai oleh majoriti pengguna. Sebagai pembangun PHP, menguasai dan melaksanakan fungsi pembayaran WeChat adalah sangat penting untuk laman web komersial atau aplikasi e-dagang. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan fungsi pembayaran WeChat dan memberikan contoh kod khusus.

  1. Persediaan

Sebelum bermula, kita perlu menyediakan syarat-syarat berikut:

    #🎜 Akaun pembangun WeChat yang sah dan fungsi pembayaran WeChat yang diaktifkan
  • persekitaran operasi PHP, adalah disyorkan untuk menggunakan versi PHP7 dan ke atas
  • Pelanjutan cURL yang dipasang dan dikonfigurasikan#🎜 🎜##🎜 🎜#Memuat turun dan mengimport SDK (kit alat pembangunan) WeChat Pay
  • Tetapkan maklumat pembayaran asas
    #🎜🎜 #Before #Before fungsi pembayaran, mula-mula kami perlu menyediakan beberapa maklumat asas, termasuk:
Nombor pedagang (mch_id): pengenalan unik pedagang pada platform pembayaran WeChat

#🎜 🎜#ID Permohonan (appid): ID aplikasi yang didaftarkan oleh pembangun pada platform terbuka WeChat

    kunci API (kunci): Kunci yang digunakan untuk menandatangani dan mengesahkan mesej pembayaran
  • #🎜🎜 #Laluan sijil: Laluan sijil yang digunakan untuk mengesahkan keputusan pembayaran yang dikembalikan oleh pelayan pembayaran WeChat
  • Dalam kod, maklumat ini boleh ditakrifkan sebagai pemalar atau fail konfigurasi untuk memudahkan panggilan berikutnya. dan pengurusan.
  • define('MCH_ID', '商户号');
    define('APPID', '应用ID');
    define('KEY', 'API密钥');
    define('CERT_PATH', '证书路径');
  • Jana pesanan pembayaran

Selepas pengguna mengklik butang pembayaran, kami perlu menjana pesanan pembayaran dan menyerahkannya kepada pembayaran WeChat pelayan untuk pemprosesan. Berikut ialah kod contoh mudah untuk menjana pesanan pembayaran:

function createOrder($body, $out_trade_no, $total_fee, $notify_url) {
    $params = array(
        'appid' => APPID,
        'mch_id' => MCH_ID,
        'nonce_str' => uniqid(),
        'body' => $body,
        'out_trade_no' => $out_trade_no,
        'total_fee' => $total_fee,
        'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
        'notify_url' => $notify_url,
        'trade_type' => 'APP'
    );

    $params['sign'] = generateSign($params);

    $xml = arrayToXml($params);

    $response = sendRequest('https://api.mch.weixin.qq.com/pay/unifiedorder', $xml);

    $result = xmlToArray($response);

    return $result;
}

function generateSign($params) {
    ksort($params);

    $string = '';
    foreach ($params as $key => $value) {
        if ($key != 'sign' && $value != '') {
            $string .= "{$key}={$value}&";
        }
    }

    $string .= "key=" . KEY;

    return strtoupper(md5($string));
}

function arrayToXml($array) {
    $xml = "<xml>";
    foreach ($array as $key => $value) {
        $xml .= "<{$key}><![CDATA[{$value}]]></{$key}>";
    }
    $xml .= "</xml>";

    return $xml;
}

function sendRequest($url, $data) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
    curl_setopt($ch, CURLOPT_SSLCERT, CERT_PATH);
    curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
    curl_setopt($ch, CURLOPT_SSLKEY, CERT_PATH);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}
    Dalam kod di atas, fungsi createOrder digunakan untuk menjana pesanan pembayaran dan memanggil antara muka pembayaran WeChat (https://api. mch.weixin.qq .com/pay/unifiedorder) untuk membuat pesanan transaksi prabayar. Fungsi generateSign digunakan untuk menjana tandatangan, fungsi arrayToXml digunakan untuk menukar tatasusunan parameter ke dalam format XML, dan fungsi sendRequest digunakan untuk menghantar permintaan HTTP.
Memproses keputusan pembayaran

Pelayan pembayaran WeChat akan menghantar hasil pembayaran ke URL panggilan balik pra-tetap kami melalui POST keputusan pembayaran dihuraikan dalam kod URL panggil balik dan operasi yang sepadan dilakukan mengikut keperluan. Berikut ialah contoh kod mudah untuk pemprosesan hasil pembayaran:

$xml = file_get_contents("php://input");
$data = xmlToArray($xml);

if (isset($data['result_code']) && $data['result_code'] == 'SUCCESS') {
    // 支付成功,更新订单状态等操作
    // ...

    $response = array(
        'return_code' => 'SUCCESS',
        'return_msg' => 'OK'
    );
} else {
    // 支付失败,记录错误日志等操作
    // ...

    $response = array(
        'return_code' => 'FAIL',
        'return_msg' => 'ERROR'
    );
}

$responseXml = arrayToXml($response);
echo $responseXml;
    Dalam kod di atas, kami memperoleh XML hasil pembayaran daripada POST melalui fungsi file_get_contents dan menukarnya menjadi tatasusunan bersekutu. Jika result_code dalam keputusan pembayaran adalah SUCCESS, ini bermakna pembayaran telah berjaya dan kami boleh melakukan kemas kini status pesanan yang sepadan dan operasi lain, sebaliknya, ini bermakna pembayaran gagal dan kami boleh merekodkan log ralat dan operasi lain.
  1. Di atas adalah contoh mudah menggunakan PHP untuk melaksanakan fungsi pembayaran WeChat asas boleh direalisasikan melalui kod ini. Sudah tentu, projek sebenar mungkin melibatkan lebih banyak pertimbangan fungsi dan keselamatan, yang memerlukan pembangunan lanjut dan penyahpepijatan berdasarkan keperluan khusus. Saya harap artikel ini akan membantu anda memahami dan melaksanakan fungsi pembayaran WeChat.

Atas ialah kandungan terperinci Pembangunan PHP: Bagaimana untuk melaksanakan 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