Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan Laravel untuk melaksanakan antara muka pembayaran Alipay

Cara menggunakan Laravel untuk melaksanakan antara muka pembayaran Alipay

PHPz
PHPzasal
2023-11-04 16:13:471251semak imbas

Cara menggunakan Laravel untuk melaksanakan antara muka pembayaran Alipay

Cara menggunakan Laravel untuk melaksanakan antara muka pembayaran Alipay

Dengan perkembangan e-dagang, kepelbagaian kaedah pembayaran telah menjadi penting kriteria pemilihan. Sebagai platform pembayaran pihak ketiga terbesar di China, Alipay memainkan peranan penting dalam bidang e-dagang. Semasa membangunkan tapak web e-dagang, kami selalunya perlu menyepadukan antara muka pembayaran Alipay untuk menyediakan pengguna kaedah pembayaran yang mudah. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk melaksanakan antara muka pembayaran Alipay dan memberikan contoh kod khusus.

Pertama, kita perlu memasang pakej sambungan laravel-omnipay dalam projek Laravel. Sambungan ini menyediakan sokongan untuk berbilang gerbang pembayaran, termasuk Alipay. Gunakan arahan berikut untuk memasang pakej sambungan:

composer require omnipay/omnipay

Selepas pemasangan selesai, kami perlu mengkonfigurasi maklumat berkaitan Alipay dalam fail config/services.php projek. Contoh khusus adalah seperti berikut:

'alipay' => [
    'driver' => 'Alipay_AopPage',
    'options' => [
        'app_id' => env('ALIPAY_APP_ID'),
        'private_key' => env('ALIPAY_PRIVATE_KEY'),
        'public_key' => env('ALIPAY_PUBLIC_KEY'),
        'return_url' => env('ALIPAY_RETURN_URL'),
        'notify_url' => env('ALIPAY_NOTIFY_URL'),
    ],
],

Dalam konfigurasi di atas, kita perlu menetapkan parameter seperti app_id, private_key, public_key, return_url dan notify_url. Antaranya, app_id ialah ID aplikasi Alipay, private_key dan public_key ialah kunci persendirian dan kunci awam bagi aplikasi tersebut. return_url ialah alamat panggilan balik selepas pembayaran pengguna berjaya, dan notify_url ialah alamat pemberitahuan tak segerak Alipay.

Seterusnya, kita perlu mengkonfigurasi nilai parameter di atas dalam fail .env. Contohnya adalah seperti berikut:

ALIPAY_APP_ID=xxxxxxxxxxxxxx
ALIPAY_PRIVATE_KEY=xxxxxxxxxxxxxx
ALIPAY_PUBLIC_KEY=xxxxxxxxxxxxxx
ALIPAY_RETURN_URL=https://example.com/alipay/return
ALIPAY_NOTIFY_URL=https://example.com/alipay/notify

Dalam konfigurasi di atas, kita perlu menggantikannya dengan ID aplikasi Alipay sebenar, kunci persendirian, kunci awam dan URL panggil balik.

Seterusnya, kita boleh menggunakan antara muka pembayaran Alipay dalam pengawal dalam projek Laravel. Contohnya adalah seperti berikut:

use OmnipayOmnipay;

class PaymentController extends Controller
{
    public function pay(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));

        $order = [
            'out_trade_no' => '2018123456789',
            'total_amount' => '0.01',
            'subject' => 'Test Order',
            'body' => 'This is a test order',
        ];

        $response = $gateway->purchase($order)->send();

        if ($response->isRedirect()) {
            $response->redirect();
        } else {
            dd($response->getMessage());
        }
    }

    public function notify(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));
        
        $response = $gateway->completePurchase()->send();

        if ($response->isPaid()) {
            // 更新订单状态
        }

        return $response->getAcknowledgeResponse();
    }

    public function return(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));
        
        $response = $gateway->completePurchase()->send();

        if ($response->isPaid()) {
            // 更新订单状态
            return redirect()->route('orders.show', $order);
        } else {
            return '支付失败';
        }
    }
}

Dalam kod di atas, kami mula-mula membuat contoh get laluan Alipay dan menetapkan parameter yang berkaitan. Kemudian, kami membuat tatasusunan pesanan dan menggunakan kaedah pembelian untuk menghantar permintaan pembayaran. Jika permintaan pembayaran berjaya dan alamat lompat dikembalikan, kami boleh menggunakan kaedah ubah hala untuk mengubah hala pengguna ke halaman pembayaran Alipay. Jika permintaan pembayaran gagal, anda boleh menggunakan kaedah getMessage untuk mendapatkan mesej ralat. Dalam pemberitahuan tak segerak dan kaedah panggil balik segerak, kami turut mencipta tika get laluan Alipay dan menggunakan kaedah completePurchase untuk mengesahkan hasil pembayaran.

Akhir sekali, kita perlu menentukan laluan pembayaran dalam penghalaan. Contohnya adalah seperti berikut:

Route::get('/payment/pay', 'PaymentController@pay');
Route::post('/payment/notify', 'PaymentController@notify');
Route::get('/payment/return', 'PaymentController@return');

Melalui langkah di atas, kita boleh menggunakan rangka kerja Laravel untuk menyepadukan antara muka pembayaran Alipay dengan mudah. Harap artikel ini membantu anda!

Atas ialah kandungan terperinci Cara menggunakan Laravel untuk melaksanakan antara muka pembayaran Alipay. 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