Dalam catatan blog ini, kami akan meneroka cara mengambil langkah pertama dalam menambah dan melaksanakan antara muka pemprosesan pembayaran dalam aplikasi Laravel 11. Kami akan bermula dengan membuat pengikatan berkod keras antara PaymentProcessorInterface dan pelaksanaan tertentu, seperti StripePaymentProcessor. Pendekatan ini ialah persediaan asas, meletakkan asas untuk teknik yang lebih maju seperti pengikatan dinamik dan penggunaan kilang, yang akan kami bincangkan dalam siaran akan datang.
Laravel menggalakkan pangkalan kod yang bersih dan teratur. Apabila melaksanakan antara muka, kami biasanya akan meletakkannya di dalam direktori AppContracts.
Jika direktori Kontrak belum wujud lagi dalam aplikasi kami, kami boleh menciptanya dengan menjalankan arahan berikut dalam terminal:
mkdir app/Contracts
Direktori ini akan berfungsi sebagai lokasi untuk semua antara muka aplikasi kami, memastikan ia berasingan daripada pelaksanaan konkrit.
Sekarang kita mempunyai direktori Kontrak, mari buat fail baharu di mana PaymentProcessorInterface akan hidup. Untuk berbuat demikian, jalankan arahan berikut:
touch app/Contracts/PaymentProcessorInterface.php
Ini akan mencipta fail kosong yang akan kami isi dalam langkah seterusnya.
Dalam fail PaymentProcessorInterface.php kami yang baru dibuat, tentukan antara muka seperti berikut:
<?php namespace App\Contracts; interface PaymentProcessorInterface { public function createPayment(float $amount, string $currency, array $paymentDetails): array; public function processPayment(array $paymentData): array; public function refundPayment(string $transactionId, float $amount): bool; }
Antara muka ini akan bertindak sebagai kontrak, memastikan mana-mana kelas yang melaksanakannya akan mengandungi kaedah yang diperlukan untuk membuat, memproses dan membayar balik pembayaran.
Dengan PaymentProcessorInterface ditakrifkan, langkah seterusnya ialah mencipta kelas yang melaksanakan antara muka ini. Biasanya, kami akan meletakkan pelaksanaan ini dalam direktori apl/Perkhidmatan.
Sebagai contoh, mari buat kelas StripePaymentProcessor yang melaksanakan antara muka ini. Kita boleh mencipta fail dengan menjalankan:
touch app/Services/StripePaymentProcessor.php
Kemudian, laksanakan kelas seperti yang ditunjukkan di bawah:
<?php namespace App\Services; use App\Contracts\PaymentProcessorInterface; class StripePaymentProcessor implements PaymentProcessorInterface { public function createPayment(float $amount, string $currency, array $paymentDetails): array { // Stripe-specific payment creation logic } public function processPayment(array $paymentData): array { // Stripe-specific payment processing logic } public function refundPayment(string $transactionId, float $amount): bool { // Stripe-specific payment refund logic } }
Kelas ini kini mengandungi kaedah yang diperlukan untuk membuat, memproses dan membayar balik pembayaran melalui API Stripe. Kami boleh menggantikan atau melanjutkan ini dengan pemproses pembayaran lain seperti yang diperlukan dengan membuat kelas tambahan yang melaksanakan antara muka yang sama.
Sekarang antara muka dan pelaksanaannya sudah sedia, kami perlu memberitahu Laravel cara menyelesaikan PaymentProcessorInterface. Dalam langkah pertama ini, kami akan menggunakan pengikatan berkod keras dengan mengikat antara muka secara eksplisit kepada pelaksanaan khusus dalam bekas perkhidmatan Laravel.
Untuk melakukan ini, kami boleh mengubah suai AppServiceProvider atau mencipta pembekal perkhidmatan baharu.
Dalam app/Providers/AppServiceProvider.php, tambahkan kod berikut di dalam kaedah daftar:
public function register() { $this->app->bind( \App\Contracts\PaymentProcessorInterface::class, \App\Services\StripePaymentProcessor::class ); }
Pengikatan ini memberitahu Laravel bahawa setiap kali PaymentProcessorInterface diperlukan, ia harus menyuntik kelas StripePaymentProcessor secara automatik. Walaupun pendekatan ini berfungsi, pendekatan ini terhad kerana ia mengikat pelaksanaan khusus pada antara muka.
Pengikatan berkod keras ini merupakan titik permulaan yang sangat baik, tetapi ia tidak memberikan fleksibiliti yang diperlukan untuk aplikasi yang lebih besar atau apabila menyokong berbilang pemproses pembayaran. Dalam bahagian seterusnya siri ini, kami akan meneroka cara untuk mencapai pengikatan dinamik menggunakan bekas dan kilang perkhidmatan Laravel, membenarkan sistem memilih pelaksanaan yang berbeza pada masa jalan berdasarkan gerbang pembayaran yang diperlukan:
Atas ialah kandungan terperinci Cara Menambah dan Melaksanakan Antara Muka Pemprosesan Pembayaran dalam Laravel The Part ith Hardcoded Binding. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!