Rumah >pembangunan bahagian belakang >tutorial php >Memahami Ciri Teras Juruwang Laravel: Penyelaman Dalam

Memahami Ciri Teras Juruwang Laravel: Penyelaman Dalam

DDD
DDDasal
2024-11-30 00:24:15530semak imbas

Understanding Laravel Cashier

Laravel Cashier menyediakan beberapa ciri berkuasa yang mengendalikan integrasi Stripe. Hari ini, kami akan meneroka tiga ciri teras dan kaedah awamnya: ManagesSubscriptions, ManagesCustomer dan ManagesInvois. Memahami ciri ini adalah penting untuk melaksanakan pengebilan berasaskan langganan dalam aplikasi Laravel anda.

Mengurus Sifat Langganan

Penciptaan dan Pengurusan Langganan

newSubscription($type, $prices = [])

Mencipta contoh pembina langganan baharu. Jenis mentakrifkan nama langganan (cth., 'lalai'), dan harga boleh menjadi ID tunggal atau tatasusunan.

Pengurusan Percubaan

newSubscription($type, $prices = [])
  • Tiada parameter: Semak HANYA percubaan generik (peringkat model)
  • Dengan $type: Menyemak percubaan khusus langganan
  • Dengan kedua-duanya: Menyemak sama ada harga tertentu sedang dalam percubaan
  • Mengembalikan boolean
onTrial($type = 'default', $price = null)
  • Tiada parameter: Menyemak tamat tempoh percubaan generik
  • Dengan $type: Menyemak tamat tempoh percubaan langganan khusus
  • Dengan kedua-duanya: Mengesahkan tamat tempoh percubaan harga khusus
  • Mengembalikan boolean
hasExpiredTrial($type = 'default', $price = null)
  • Menyemak status percubaan peringkat model
  • Kembalikan benar jika percubaan_berakhir_di wujud dan akan datang
  • Tiada parameter diperlukan
onGenericTrial()
  • Skop untuk menapis pelanggan pada percubaan generik
  • Digunakan dalam pembina pertanyaan
  • Memerlukan contoh pembina pertanyaan
scopeOnGenericTrial($query)
  • Menyemak sama ada percubaan peringkat model telah tamat tempoh
  • Kembalikan benar jika percubaan_berakhir_at wujud dan telah berlalu
  • Tiada parameter diperlukan
hasExpiredGenericTrial()
  • Skop untuk menapis pelanggan dengan percubaan generik yang telah tamat tempoh
  • Digunakan dalam pembina pertanyaan
  • Memerlukan contoh pembina pertanyaan
scopeHasExpiredGenericTrial($query)
  • Tiada parameter: Mengembalikan tarikh tamat percubaan generik jika dalam percubaan generik
  • Dengan $type: Mengembalikan tarikh tamat percubaan khusus langganan
  • Mengembalikan instance Carbon atau null

Semakan Status Langganan

trialEndsAt($type = 'default')
  • Hanya $type: Menyemak kewujudan langganan yang sah
  • Dengan $price: Menyemak langganan harga khusus
  • Mengembalikan boolean
subscribed($type = 'default', $price = null)
  • Mendapat langganan mengikut jenis
  • Mengembalikan model Langganan atau batal
subscription($type = 'default')
  • Mendapat semua langganan
  • Mengembalikan hubungan HasMany
  • Tiada parameter diperlukan
subscriptions()
  • Menyemak pembayaran yang tidak lengkap pada langganan
  • Mengembalikan boolean
hasIncompletePayment($type = 'default')
  • $products: ID produk tunggal atau tatasusunan
  • $type: Jenis langganan untuk diperiksa
  • Mengembalikan boolean
  • Menyemak sama ada melanggan MANA-MANA ​​produk yang diberikan
subscribedToProduct($products, $type = 'default')
  • $harga: ID atau tatasusunan harga tunggal
  • $type: Jenis langganan untuk diperiksa
  • Mengembalikan boolean
  • Menyemak jika melanggan MANA-MANA ​​harga yang diberikan
subscribedToPrice($prices, $type = 'default')
  • Menyemak langganan yang sah dengan produk tertentu
  • Mengembalikan boolean
  • Lebih khusus daripada subscribedToProduct
onProduct($product)
  • Menyemak langganan yang sah dengan harga tertentu
  • Mengembalikan boolean
  • Lebih khusus daripada subscribedToPrice
onPrice($price)
  • Dapatkan kadar cukai untuk langganan
  • Mengembalikan tatasusunan
  • Kosong secara lalai, bertujuan untuk ditindih
taxRates()
  • Dapatkan kadar cukai untuk item langganan individu
  • Mengembalikan tatasusunan
  • Kosong secara lalai, bertujuan untuk ditindih

Mengurus Sifat Pelanggan

Pengenalan Pelanggan

newSubscription($type, $prices = [])
  • Mengembalikan ID pelanggan Stripe atau batal
  • Tiada parameter diperlukan
  • Mengembalikan rentetan|null
onTrial($type = 'default', $price = null)
  • Menyemak sama ada pelanggan mempunyai ID Stripe
  • Mengembalikan boolean
  • Tiada parameter diperlukan

Penciptaan dan Pengurusan Pelanggan

hasExpiredTrial($type = 'default', $price = null)
  • Mencipta pelanggan Stripe baharu
  • Pilihan mempengaruhi metadata pelanggan, e-mel, nama, dll.
  • Melemparkan pengecualian jika pelanggan sudah wujud
  • Mengembalikan objek Pelanggan Stripe
onGenericTrial()
  • Mengemas kini pelanggan Stripe sedia ada
  • Pilihan menentukan perkara yang dikemas kini
  • Mengembalikan objek Pelanggan Stripe yang dikemas kini
  • Memerlukan pelanggan sedia ada
scopeOnGenericTrial($query)
  • Dapatkan pelanggan sedia ada atau buat pelanggan baharu
  • Pilihan mempengaruhi penciptaan jika perlu
  • Mengembalikan objek Pelanggan Stripe
  • Lebih pemaaf daripada createAsStripeCustomer
hasExpiredGenericTrial()
  • Mengemas kini sedia ada atau mencipta pelanggan baharu
  • Pilihan mempengaruhi kemas kini dan penciptaan
  • Mengembalikan objek Pelanggan Stripe
  • Menggabungkan kemas kini dan mencipta fungsi
scopeHasExpiredGenericTrial($query)
  • Menyegerakkan butiran setempat ke Stripe
  • Mengembalikan objek Pelanggan Stripe
  • Menggunakan atribut model untuk penyegerakan
trialEndsAt($type = 'default')
  • Menyegerakkan jika wujud atau mencipta pelanggan baharu
  • Pilihan mempengaruhi penciptaan jika perlu
  • Mengembalikan objek Pelanggan Stripe
subscribed($type = 'default', $price = null)
  • Dapatkan objek pelanggan Stripe
  • Parameter kembangkan menentukan data berkaitan
  • Mengembalikan objek Pelanggan Stripe
  • Memerlukan pelanggan sedia ada

Atribut Pelanggan

subscription($type = 'default')
  • Dapatkan nama untuk penyegerakan Stripe
  • Mengembalikan rentetan|null
  • Lalai mengembalikan $this->name
subscriptions()
  • Mendapat e-mel untuk penyegerakan Stripe
  • Mengembalikan rentetan|null
  • Lalai mengembalikan $this->e-mel
hasIncompletePayment($type = 'default')
  • Dapatkan telefon untuk penyegerakan Stripe
  • Mengembalikan rentetan|null
  • Lalai mengembalikan $ini->telefon
subscribedToProduct($products, $type = 'default')
  • Dapatkan alamat untuk penyegerakan Stripe
  • Mengembalikan tatasusunan|null
  • Kosongkan secara lalai
subscribedToPrice($prices, $type = 'default')
  • Mendapatkan tempat pilihan untuk Stripe
  • Mengembalikan tatasusunan
  • Kosongkan secara lalai
onProduct($product)
  • Mendapat metadata untuk Stripe
  • Mengembalikan tatasusunan
  • Kosongkan secara lalai

Pengurusan Diskaun

onPrice($price)
  • Mendapat diskaun pelanggan aktif
  • Mengembalikan objek Diskaun atau batal
  • Tiada parameter diperlukan
taxRates()
  • Menggunakan kupon kepada pelanggan
  • Batal pemulangan
  • Memerlukan ID kupon
priceTaxRates()
  • Menggunakan kod promosi kepada pelanggan
  • Batal pemulangan
  • Memerlukan ID kod promosi
newSubscription($type, $prices = [])
  • Mencari kod promosi
  • Mengembalikan objek PromotionCode atau null
  • Pilihan mempengaruhi carian
onTrial($type = 'default', $price = null)
  • Mencari kod promosi aktif
  • Mengembalikan objek PromotionCode atau null
  • Pilihan mempengaruhi carian

Pengurusan Imbangan

hasExpiredTrial($type = 'default', $price = null)
  • Mendapat baki pelanggan yang diformatkan
  • Mengembalikan rentetan
  • Tiada parameter diperlukan
onGenericTrial()
  • Mendapat baki pelanggan mentah
  • Mengembalikan integer
  • Tiada parameter diperlukan
scopeOnGenericTrial($query)
  • Dapatkan transaksi baki pelanggan
  • Koleksi Pulangan
  • Had mempengaruhi kiraan yang dikembalikan
hasExpiredGenericTrial()
  • Kreditkan baki pelanggan
  • Mengembalikan Transaksi Baki Pelanggan
  • Jumlah diperlukan
scopeHasExpiredGenericTrial($query)
  • Debit baki pelanggan
  • Mengembalikan Transaksi Baki Pelanggan
  • Jumlah diperlukan
trialEndsAt($type = 'default')
  • Menggunakan pelarasan baki
  • Mengembalikan Transaksi Baki Pelanggan
  • Jumlah diperlukan

Pengurusan Cukai

subscribed($type = 'default', $price = null)
  • Dapatkan ID cukai pelanggan
  • Koleksi Pulangan
  • Pilihan mempengaruhi pengambilan semula
subscription($type = 'default')
  • Mencipta ID cukai baharu
  • Mengembalikan Stripe TaxId
  • Kedua-dua parameter diperlukan
subscriptions()
  • Memadamkan ID cukai
  • Batal pemulangan
  • Memerlukan ID cukai
hasIncompletePayment($type = 'default')
  • Mencari ID cukai khusus
  • Mengembalikan Stripe TaxId atau batal
  • Memerlukan ID cukai

Semakan Status Cukai

subscribedToProduct($products, $type = 'default')
  • Menyemak sama ada pelanggan tidak dikecualikan cukai
  • Mengembalikan boolean
  • Tiada parameter diperlukan
subscribedToPrice($prices, $type = 'default')
  • Menyemak sama ada pelanggan dikecualikan cukai
  • Mengembalikan boolean
  • Tiada parameter diperlukan
onProduct($product)
  • Menyemak sama ada caj terbalik dikenakan
  • Mengembalikan boolean
  • Tiada parameter diperlukan

Portal Pengebilan

onPrice($price)
  • Mendapat URL portal pengebilan Stripe
  • Mengembalikan rentetan
  • ReturnUrl pilihan
taxRates()
  • Ubah hala ke portal pengebilan Stripe
  • Mengembalikan RedirectResponse
  • ReturnUrl pilihan

Mengurus Sifat Invois

Item Invois

priceTaxRates()
  • Menambah item invois
  • Mengembalikan Item Invois Jalur
  • Penerangan dan jumlah yang diperlukan
stripeId()
  • Menambahkan item berdasarkan harga
  • Mengembalikan Item Invois Jalur
  • ID harga diperlukan

Penciptaan Invois

hasStripeId()
  • Mencipta invois segera
  • Mengembalikan objek Invois
  • Penerangan dan jumlah yang diperlukan
createAsStripeCustomer(array $options = [])
  • Mencipta invois berasaskan harga
  • Mengembalikan objek Invois
  • ID harga diperlukan
newSubscription($type, $prices = [])
  • Menjana invois
  • Mengembalikan objek Invois
  • Pilihan mempengaruhi penciptaan
onTrial($type = 'default', $price = null)
  • Mencipta invois Stripe
  • Mengembalikan objek Invois
  • Pilihan mempengaruhi penciptaan

Pengambilan Invois

hasExpiredTrial($type = 'default', $price = null)
  • Mendapat invois akan datang
  • Mengembalikan objek Invois atau batal
  • Pilihan mempengaruhi pratonton
onGenericTrial()
  • Mencari invois khusus
  • Mengembalikan objek Invois atau batal
  • Memerlukan ID invois
scopeOnGenericTrial($query)
  • Mencari invois atau membuang pengecualian
  • Mengembalikan objek Invois
  • Memerlukan ID invois
  • Melempar NotFoundHttpException atau AccessDeniedHttpException
hasExpiredGenericTrial()
  • Dapatkan PDF invois
  • Mengembalikan Respons
  • ID diperlukan, nama fail pilihan
scopeHasExpiredGenericTrial($query)
  • Mendapat semua invois
  • Koleksi Pulangan
  • Parameter mempengaruhi penapisan
trialEndsAt($type = 'default')
  • Mendapat semua invois termasuk belum selesai
  • Koleksi Pulangan
  • Pendek kata untuk invois(benar)
subscribed($type = 'default', $price = null)
  • Mendapat invois dinomborkan
  • Mengembalikan CursorPaginator
  • Berbilang parameter mempengaruhi penomboran

Pemerhatian Utama

  1. Sensitiviti Parameter: Kaedah selalunya mempunyai gelagat berbeza berdasarkan kehadiran parameter.
  2. Jenis Pulangan: Kaedah secara konsisten mengembalikan jenis tertentu (boolean, objek, koleksi).
  3. Nilai Lalai: Banyak parameter mempunyai lalai yang munasabah tetapi boleh ditindih.
  4. Saling Bergantung Trait: Kaedah selalunya bergantung pada kaedah sifat lain.
  5. Penyatuan Jalur: Kebanyakan kaedah berinteraksi dengan API Stripe sama ada secara langsung atau tidak langsung.

Amalan Terbaik

  1. Sentiasa semak keperluan parameter untuk tingkah laku yang diingini.
  2. Kendalikan kemungkinan pengecualian, terutamanya untuk kaedah *OrFail.
  3. Gunakan pembayang jenis yang betul apabila memanjangkan ciri ini.
  4. Uji kombinasi parameter yang berbeza dengan teliti.
  5. Pertimbangkan caching panggilan kerap untuk mengurangkan permintaan API.

Kesimpulan

Sifat-sifat ini membentuk tulang belakang fungsi Laravel Cashier. Memahami skop penuh kaedah yang tersedia dan gelagat parameternya adalah penting untuk pelaksanaan yang betul. Sentiasa rujuk dokumentasi rasmi bersama rujukan ini untuk mendapatkan maklumat terkini.

Atas ialah kandungan terperinci Memahami Ciri Teras Juruwang Laravel: Penyelaman Dalam. 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