Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk mengendalikan pembayaran langganan menggunakan Laravel Cashier dan Authorize.net?

Pembangunan Laravel: Bagaimana untuk mengendalikan pembayaran langganan menggunakan Laravel Cashier dan Authorize.net?

王林
王林asal
2023-06-13 19:15:411224semak imbas

Dengan perkembangan berterusan e-dagang, model pembayaran langganan menjadi semakin popular. Laravel Cashier ialah alat pembayaran berdasarkan rangka kerja Laravel yang menjadikan pengurusan langganan dan pengumpulan pembayaran sangat mudah. Artikel ini akan menerangkan cara menggunakan Laravel Cashier bersama Authorize.net dalam aplikasi Laravel untuk memproses pembayaran langganan.

  1. Pasang Laravel Cashier

Sebelum anda bermula, pastikan anda telah memasang rangka kerja Laravel dan pengurus pakej Komposer. Masukkan arahan berikut dalam terminal untuk memasang Laravel Cashier:

composer require laravel/cashier

Setelah ia berjaya dipasang, anda perlu menjana jadual migrasi untuk Cashier. Anda boleh menjalankan arahan berikut dalam terminal:

php artisan migrate

Ini akan menjana fail pemindahan pangkalan data yang diperlukan untuk jadual Juruwang berkaitan pembayaran.

  1. Mengkonfigurasi API Authorize.net

Sebelum menggunakan Authorize.net untuk memproses pembayaran, anda perlu memasang perkhidmatan dan mendapatkan bukti kelayakan API (ID Log Masuk dan Transaksi API kunci).

Anda boleh melakukan operasi ini melalui langkah berikut:

  • Pergi ke https://www.authorize.net/ untuk mendaftar akaun
  • Selepas log masuk , klik pada menu di sebelah kiri Pilih "Akaun" dalam "Security Settings", kemudian pilih "Settings"
  • Dalam "Security Settings", pilih "API Credentials & Keys"
  • Klik " Kunci Transaksi Baharu", masukkan maklumat yang diperlukan, dan kemudian Klik "Serah"
  • dan ID Log Masuk API dan Kunci Transaksi akan dipaparkan dalam tetingkap timbul. Sila buat salinan dan simpan di tempat yang selamat.
  1. Mengkonfigurasi Laravel Cashier

Sebelum anda bermula, anda perlu mengkonfigurasi parameter dalam fail cashier.php. Fail boleh dibuat dalam folder konfigurasi dengan arahan berikut:

php artisan vendor:publish --tag="cashier-config"

Seterusnya, anda perlu menetapkan parameter berkaitan API Authorize.net dalam fail .env:

CASHIER_ENV=production
CASHIER_CURRENCY=usd
AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID
AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
  1. Cipta pelan langganan

Sebelum menggunakan Laravel Cashier dan Authorize.net untuk memproses pembayaran langganan, anda perlu membuat pelan langganan. Anda boleh membuat pelan langganan melalui arahan berikut:

php artisan make:model Plan -m

Perintah ini akan mencipta model Plan dalam folder apl dan menjana jadual migrasi untuknya. Fail migrasi kini boleh dibuka untuk diedit dan medan yang diperlukan ditambah. Berikut ialah contoh untuk rujukan:

Schema::create('plans', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('stripe_id');
    $table->string('authorizenet_id');
    $table->integer('price');
    $table->string('interval');
    $table->integer('interval_count');
    $table->integer('trial_period_days')->nullable();
    $table->timestamps();
});

Selepas melaksanakan fail migrasi, jadual perlu dibuat dalam pangkalan data. Jalankan arahan berikut dalam terminal:

php artisan migrate

Seterusnya, anda perlu menentukan sifat dan kaedah yang diperlukan dalam model Plan. Berikut ialah contoh: Kaedah

use LaravelCashierSubscription;

class Plan extends Model
{
    public function subscriptions()
    {
        return $this->hasMany(Subscription::class);
    }

    public function getPrice()
    {
        return $this->price / 100;
    }

    public function getFormattedPrice()
    {
        return number_format($this->getPrice(), 2);
    }

    public function authorizeNetPlan()
    {
        return AuthorizeNet_Subscription::create([
            'name'                   => $this->name,
            'intervalLength'         => $this->interval_count,
            'intervalUnit'           => $this->interval,
            'startDate'              => date('Y-m-d'),
            'totalOccurrences'       => '9999',
            'trialOccurrences'       => '0',
            'amount'                 => $this->price,
            'trialAmount'            => '0.00',
            'creditCardCardNumber'   => '',
            'creditCardExpirationDate' => '',
            'creditCardCardCode' => ''
        ]);
    }
}

authorizeNetPlan akan membuat pelan langganan Authorize.net dan mengembalikan maklumat yang berkaitan.

  1. Memproses Pembayaran Langganan

Setelah pelan langganan dibuat, kini tiba masanya untuk menghantar pautan langganan kepada pelanggan. Seterusnya, pelanggan boleh menggunakan Pautan untuk mengklik pautan untuk membayar langganan mereka.

Apabila membuat langganan, anda perlu menetapkan pelan langganan dan maklumat berkaitan pengguna.

Berikut ialah kaedah pengawal contoh:

public function subscribe(Request $request, Plan $plan)
{
    $user = $request->user();
    
    $subscription = $user->newSubscription('default', $plan->stripe_id)->create($request->stripeToken);

    $authorizeSubscription = $plan->authorizeNetPlan();

    $subscription->authorize_net_id = $authorizeSubscription->getSubscriptionId();
    $subscription->save();

    return redirect()->route('home')->with('success', 'Subscription successful');
}

Dalam contoh ini, kami menggunakan kaedah newSubscription untuk membuat langganan baharu untuk pengguna. Ambil perhatian bahawa $request->stripeToken ialah token yang dijana menggunakan Stripe Checkout. getUserPlanKaedah ini ditakrifkan dalam model Pelan dan digunakan untuk mendapatkan pelan langganan pengguna semasa.

Selepas membuat langganan, kami menyimpan ID pelan langganan Authorize.net yang dibuat ke dalam model Langganan.

  1. Mengendalikan Nyahlanggan

Apabila pengguna ingin berhenti melanggan, mereka perlu melakukan perkara berikut:

public function cancel(Request $request)
{
    $user = $request->user();

    $subscription = $user->subscription('default');

    $authorizeSubscription = AuthorizeNet_Subscription::cancel($subscription->authorize_net_id);
    
    $subscription->cancel();
    
    return redirect()->route('home')->with('success', 'Subscription cancelled.');
}

Dalam contoh ini, kami menggunakan cancel Kaedah untuk membatalkan pelan langganan Laravel Cashier pengguna dan membatalkan pelan langganan menggunakan kaedah yang disediakan dalam Authorize.net.

Ringkasan

Memproses pembayaran langganan adalah mudah dengan Laravel Cashier dan Authorize.net. Cuma ikut langkah di atas untuk menyediakan dan melaksanakan dengan cepat. Laravel Cashier menyediakan alat pembayaran yang mudah, mengapa tidak melaksanakan model baharu sedemikian untuk memenuhi keperluan pasaran yang berubah?

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk mengendalikan pembayaran langganan menggunakan Laravel Cashier dan Authorize.net?. 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