Rumah > Artikel > rangka kerja php > Pembangunan Laravel: Bagaimana untuk mengendalikan pembayaran langganan menggunakan Laravel Cashier dan Authorize.net?
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.
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.
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:
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
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.
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. getUserPlan
Kaedah 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.
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!