Takeaways Key
- Laravel Cashier memudahkan penciptaan laman web keahlian yang dibayar asas dengan menguruskan pengebilan langganan, pengendalian kupon, langganan swap, tempoh tangguh pembatalan, dan menjana PDF invois.
- Untuk mengintegrasikan juruwang Laravel ke dalam projek Laravel yang sedia ada, pasang pakej melalui komposer, jalankan penghijrahan untuk menambah lajur yang diperlukan ke meja pengguna, sediakan kunci API, dan tambahkan sifat yang boleh ditagih ke model.
- Laravel Cashier boleh mengendalikan pembayaran yang gagal dengan mencuba semula pembayaran secara automatik. Sekiranya pembayaran terus gagal, langganan akan dibatalkan.
- Laravel Cashier kini menyokong hanya Stripe dan Braintree tetapi boleh diperluaskan untuk bekerja dengan gerbang pembayaran lain dengan pemahaman yang baik tentang Laravel dan API Gateway Pembayaran.
kita perlu membuat projek boilreplate untuk memulakan, dan kita boleh melakukannya dengan dua cara yang berbeza:
- kita boleh mengklonkan repo github ke folder projek kami.
- Dengan mengandaikan bahawa anda mempunyai komposer yang dipasang, (periksa panduan pemasangan untuk maklumat lanjut).
-
Kami menjalankan komposer membuat projek laravel/laravel laravel_membership-prefer-dist, ini akan membuat projek boilerplate laravel dalam folder laravel_membership kami.
selepas itu kita perlu memberitahu aplikasi kami untuk memuatkan kelas penyedia perkhidmatan juruwang. Kami boleh melakukannya dengan menambahkan "LaravelcashiercashierserviceProvider" kepada array penyedia pada fail config/app.php.
nota: anda mesti menjalankan komposer dump-autoload untuk mengemas kini pakej kelas.
Membuat pangkalan data menggunakan Migrasi
Jika anda baru untuk migrasi Larave pastikan anda menyemak dokumentasi.
Kami akan menggunakan dua jadual:
- int id
- Tajuk String
- Kandungan Long_text
- bool is_premium
- int id
- Varchar (60) E -mel
- VARCHAR (60) Kata Laluan
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>dan kemudian kami mengisi skema :: membuat hujah fungsi panggil balik dengan kod yang diperlukan yang kelihatan seperti ini
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>Untuk membiarkan juruwang Laravel tahu tentang jadual yang boleh dibilkan kami, kami perlu membuat penghijrahan khusus untuk itu. Juruwang Laravel mempunyai perintah yang dibina untuk tujuan itu.
<span>php artisan cashier:table users</span>sekarang kami sudah bersedia untuk memindahkan pangkalan data kami
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
Jika anda membuka jadual pengguna anda, anda akan melihat sekumpulan medan yang ditambahkan apabila penghijrahan pakej dilaksanakan.
- Stripe_active jika anda mempunyai langganan aktif.
- ID Pengguna Stripe_id pada pelayan Stripe.
- Pelan langganan Stripe_Plan Stripe.
- Kad kredit last_four empat digit terakhir.
- trial_ends_at Tarikh akhir disimpan jika anda menentukan tempoh percubaan.
- Tarikh Akhir Langganan Langganan_ends_at.
Sekarang kita akan membiakkan pangkalan data dengan beberapa data dummy untuk memulakan; Semak hasil akhir pada GitHub.
Proses Pengebilan Stripe
berurusan dengan pembayaran boleh menjadi sakit di leher, dan jalur dapat membantu anda dengan itu, mereka menggunakan token dan bukannya nombor kad dan lain -lain., Dan itulah cara anda dapat memastikan pelanggan anda tetap selamat sambil membayar untuk perkhidmatan anda .
NOTA: Semak jika Stripe disokong di negara anda, tetapi anda masih boleh menggunakannya untuk ujian jika tidak.
Untuk bermula, kita perlu mendapatkan akaun terlebih dahulu. Stripe tidak mempunyai yuran bulanan untuk langganan, anda hanya membayar apabila anda dibayar.
Sekarang, setelah mendapat akaun, anda perlu membuat rancangan untuk permohonan anda (bulanan, tahunan, perak, emas ...).
Kami telah menambah lajur yang diperlukan untuk jadual pengguna kami, sekarang kami perlu membiarkan juruwang Laravel tahu bahawa kami akan menggunakan kelas pengguna sebagai kelas pengebilan kami.
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>Nota: Kami menggunakan BillableTrait dan ciri -ciri memerlukan Php 5.4 atau lebih besar.
Sekarang kita perlu menetapkan kunci Akses API Stripe kami, yang boleh anda dapatkan dari Akaun Anda> Tetapan Akaun> Kekunci API dan menyalin Kunci Rahsia Ujian anda.
dengan menggunakan BillableTrait, kami mendapat akses kepada pengguna :: SetStripeKey (Key) Kaedah yang boleh dipanggil di mana sahaja dalam kod kami, tetapi cara yang disukai adalah untuk membuat fail perkhidmatan.php di bawah direktori config anda dan mengembalikan array seperti Ini:
Apabila GetStripeKey cuba memuatkan kunci anda, ia akan mencari harta yang dipanggil Stripey. Sekiranya tidak dijumpai, ia akan memuatkan fail perkhidmatan anda secara automatik.
<span>php artisan cashier:table users</span>Membuat halaman kami
untuk menjaga perkara yang mudah kita akan membuat hanya beberapa halaman:
- Pendaftaran: di mana pengguna boleh mendaftar dengan pelan keahlian (asas, emas).
- Log masuk: Halaman Log masuk Ahli.
- Menaik taraf: Menaik taraf dari Keahlian Asas ke Emas.
- Pos: Paparkan satu halaman pos.
Untuk mempercepatkan proses kami akan menggunakan Bootsnipp. Anda boleh mendapatkan kod akhir dari repo github.
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
Page pendaftaran:
Kami juga mempunyai nombor kad kredit, tarikh tamat tempoh, Cvc.
Nilai pulangan adalah token dalam hal kejayaan jika tidak, kita mendapat mesej ralat yang dapat kita tunjukkan kepada pengguna.
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>Pertama kita memasukkan fail API JavaScript, maka kami menetapkan kunci awam kami yang kami ambil dari tetapan papan pemuka jalur kami.
Seterusnya kami melampirkan fungsi panggil balik ke borang penyerahan kami (pastikan ID borang anda sepadan dengan yang digunakan pada pengendali acara), untuk mengelakkan penyerahan ganda kami melumpuhkan butang hantar kami.
The Stripe.Card.CreateToken menerima dua hujah, yang pertama adalah objek JSON yang mempunyai beberapa nilai yang diperlukan dan pilihan.
- Nombor: Nombor kad sebagai rentetan tanpa pemisah.
- exp_month: Dua nombor digit yang mewakili bulan tamat kad.
- exp_year: Dua atau empat nombor angka yang mewakili tahun tamat kad.
cvc: kod keselamatan kad sebagai rentetan, nombor CVC adalah pilihan tetapi disyorkan untuk membantu mencegah penipuan.
- Nama: Nama Pemegang Kad.
- alamat_line1: Baris alamat pengebilan 1.
- alamat_line2: Line Alamat Pengebilan 2.
- alamat_city: alamat pengebilan bandar.
- alamat_state: keadaan alamat pengebilan.
- alamat_ZIP: Bil zip sebagai rentetan.
- alamat_country: Alamat pengebilan negara. Anda dapat melihat bahawa kami melewati objek borang dan bukannya objek JSON, anda boleh memilih untuk merebut nilai secara manual atau menggunakan atribut HTML5 strip data pada input dan jalur anda akan menggunakan beberapa kaedah penolong untuk merebut nilai tersebut secara automatik untuk anda . Ex:
-
<span>php artisan cashier:table users</span>
Dalam kes kegagalan StriperSesponseHandler akan cuba mencari elemen dengan kelas Payment_errors untuk memaparkan beberapa kesilapan deskriptif kepada pengguna.
Sekiranya berjaya, input tersembunyi stripetoken akan dilampirkan kepada borang dan ia akan tersedia pada hantar.
Opsyen Tambahan
Tempoh Percubaan: Seperti yang telah kami nyatakan sebelum ini, apabila anda membuat pelan baru, anda mempunyai pilihan untuk menentukan tempoh percubaan untuk pengguna menguji produk anda, dan mereka tidak akan dikenakan bayaran sehingga tempoh yang ditentukan telah berlalu.
- Kupon: Anda membuat kupon melalui menu papan pemuka anda di mana anda boleh menentukan jumlah tetap atau mengikut peratusan, dengan beberapa pilihan berguna lain.
- Sekarang mari kita pindah ke pendaftaran kami untuk melihat bagaimana kami akan mengendalikan ini.
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
kami akan melangkau proses pengesahan untuk memastikan perkara mudah. ??
Selepas membuat pengguna baru dan menyimpannya, kami kini mempunyai pilihan untuk melanggan pengguna ke pelan keahlian baru. Kaedah langganan menerima pelan yang telah didaftarkan sebagai hujah, yang boleh menjadi planinterface atau rentetan dan mengembalikan jalur.
Kaedah membuat menerima token sebagai parameter; Kami lulus nilai input tersembunyi baru dengan nama stripetoken.
Menaik taraf halaman:
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>kami periksa sama ada pengguna dilog masuk terlebih dahulu, maka kami membuat langganan baru dengan pelan baru dan kami memanggil kaedah swap, jelas dalam projek sebenar anda akan mempunyai beberapa pelarasan yuran dan pilihan penurunan, tetapi ia harus berfungsi cara yang sama.
Halaman pos:
pemeriksaan postcontroller jika post is_premium, dan jika ya, kami menguji jika pengguna adalah ahli emas yang dapat melihat jawatan itu, jika tidak, kami mengembalikan mesej ralat mudah. ??
Sudah tentu dalam fail routes.php kami, kami perlu menambah penapis auth untuk mengelakkan pengguna yang tidak disahkan daripada mengakses halaman.
<span>php artisan cashier:table users</span>Fail laluan kami akan kelihatan seperti ini:
<span>php artisan migrate</span>
denganCoupon: Kami berkata sebelum ini bahawa kami mempunyai kemungkinan untuk membuat kupon diskaun, dalam contoh kami, kami boleh melakukannya seperti itu:
<span>use Laravel\Cashier\BillableInterface; </span><span>use Laravel\Cashier\BillableTrait; </span><span> </span><span>class User extends Eloquent implements BillableInterface { </span><span> </span><span> use BillableTrait; </span><span> protected $dates = ['trial_ends_at', 'subscription_ends_at'];</span>Batal: Anda boleh membatalkan langganan dengan mudah menggunakan kaedah ini, tetapi anda perlu menyemak sama ada pengguna adalah ongraceperiod untuk memastikan anda tidak menyekatnya dengan segera:
<span>return [ </span><span> 'stripe' => [ </span><span> 'secret' => 'Your key' </span><span> ] </span><span>];</span>onplan: Lihat jika pengguna berada dalam pelan tertentu.
- ontrial: Lihat jika pengguna masih dalam tempoh percubaan.
- dibatalkan: Jika pengguna telah membatalkan langganan mereka.
- getlastfourcarddigits: Dapatkan kad pengguna empat digit terakhir.
- getSubscriptionEndDate: Dapatkan tarikh langganan.
- gettrialenddate: Dapatkan tarikh akhir percubaan.
- Invois: Dapatkan senarai invois pengguna.
- findinvoice: Cari invois oleh id.
- muat turunInvoice: menghasilkan invois yang boleh dimuat turun dengan id.
- Kesimpulan
Dalam tutorial ini, kami meneroka bagaimana juruwang Laravel dapat meringankan proses pengebilan dan membantu menguruskan pelanggan anda dengan lebih mudah. ??
kami pastinya tidak merangkumi segala -galanya di sini, tetapi ia adalah permulaan untuk anda menggali kod sumber untuk meneroka apa lagi yang boleh anda lakukan. Jika anda ingin melihat demo hosted nitrous aplikasi ini, lihat di sini.
Soalan Lazim (Soalan Lazim) Mengenai Keahlian Juruwang Laravel
Bagaimanakah Laravel Cashier mengendalikan bil langganan? Ia menyediakan antara muka ekspresif, fasih untuk perkhidmatan pengebilan langganan Stripe dan Braintree. Ia mengendalikan hampir semua kod pengebilan langganan boilerplate yang anda penulisan. Juruwang Laravel boleh mengendalikan kupon, langganan swap, langganan "kuantiti", tempoh tangguh pembatalan, dan juga menjana pdf invois. 'LL perlu membuat akaun jalur dan memasang pakej juruwang melalui komposer. Anda juga perlu menambah sifat yang boleh dibilkan kepada definisi model anda - sifat ini menyediakan pelbagai kaedah untuk membolehkan anda melaksanakan tugas pengebilan yang sama, seperti membuat langganan, memohon kupon, dan mengemas kini maklumat kad. Saya mengintegrasikan juruwang Laravel ke dalam projek Laravel saya yang sedia ada? Pertama, anda perlu memasang pakej melalui komposer. Kemudian, anda perlu menyediakan pangkalan data dengan menjalankan penghijrahan yang menambah beberapa lajur ke jadual pengguna anda. Selepas itu, anda perlu menyediakan kunci API dan menambah sifat yang boleh dibilkan kepada model anda. Akhirnya, anda boleh menggunakan pelbagai kaedah yang disediakan oleh sifat yang boleh dibilkan untuk menguruskan langganan anda. Sekiranya pembayaran gagal, juruwang akan mencuba semula pembayaran secara automatik. Sekiranya pembayaran terus gagal, langganan akan dibatalkan. Walau bagaimanapun, anda juga boleh mengendalikan peristiwa -peristiwa ini secara manual dengan mendengar peristiwa yang berkaitan dan mengambil tindakan yang sesuai. Braintree. Walau bagaimanapun, anda boleh memperluaskan juruwang untuk bekerja dengan gerbang pembayaran lain jika anda mahu. Ini memerlukan pemahaman yang baik tentang kedua -dua Laravel dan API Gateway Pembayaran. . Apabila langganan dibatalkan, juruwang secara automatik akan menetapkan tarikh akhir langganan hingga akhir kitaran pengebilan semasa. menyokong tempoh percubaan. Anda boleh menetapkan tempoh percubaan ketika membuat langganan. Pengguna tidak akan dibilkan sehingga tempoh percubaan berakhir.
Bagaimana saya boleh menjana invois menggunakan juruwang Laravel? Anda boleh mengakses versi PDF yang boleh dimuat turun dari invois dengan memanggil kaedah muat turun pada contoh invois, yang akan menulis PDF ke cakera atau mengalirkannya ke penyemak imbas.
Ya, Laravel Cashier menyokong penggunaan kupon untuk langganan. Anda boleh melakukan ini dengan menggunakan kaedah WithCoupon semasa membuat langganan baru. Untuk langganan jenis "setiap tempat duduk". Anda boleh mengemas kini kuantiti langganan menggunakan kaedah kemas kini pada contoh langganan.
Atas ialah kandungan terperinci Keahlian dengan Laravel Cashier. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
