Cara Menambah dan Melaksanakan Antara Muka Pemprosesan Pembayaran dalam Laravel The Part ith Hardcoded Binding

WBOY
Lepaskan: 2024-09-05 18:31:26
asal
1074 orang telah melayarinya

How to Add and Implement Payment Processing Interfaces in Laravel  The Part ith Hardcoded Binding

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.

Langkah 1: Buat Direktori Kontrak (jika ia tidak wujud)

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
Salin selepas log masuk

Direktori ini akan berfungsi sebagai lokasi untuk semua antara muka aplikasi kami, memastikan ia berasingan daripada pelaksanaan konkrit.

Langkah 2: Simpan Antara Muka Pemproses Pembayaran dalam Direktori Kontrak

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
Salin selepas log masuk

Ini akan mencipta fail kosong yang akan kami isi dalam langkah seterusnya.

Langkah 3: Tentukan Antara Muka PaymentProcessor

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;
}
Salin selepas log masuk

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.

Langkah 4: Melaksanakan Antara Muka dalam Kelas Perkhidmatan

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
Salin selepas log masuk

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
    }
}
Salin selepas log masuk

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.

Langkah 5: Mengikat Antara Muka dalam Bekas Perkhidmatan (Berkod Keras)

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
    );
}
Salin selepas log masuk

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:

  • Pengikatan Dinamik: Membenarkan berbilang pelaksanaan untuk pemproses pembayaran yang berbeza.
  • Corak Kilang: Menggunakan kilang untuk memilih pemproses pembayaran yang betul berdasarkan keadaan masa jalan.

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan