So fügen Sie Zahlungsverarbeitungsschnittstellen in Laravel hinzu und implementieren sie. Der Teil mit fest codierter Bindung

WBOY
Freigeben: 2024-09-05 18:31:26
Original
1073 Leute haben es durchsucht

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

In diesem Blogbeitrag erfahren Sie, wie Sie den ersten Schritt beim Hinzufügen und Implementieren einer Zahlungsverarbeitungsschnittstelle in einer Laravel 11-Anwendung unternehmen. Wir beginnen mit der Erstellung einer fest codierten Bindung zwischen PaymentProcessorInterface und einer bestimmten Implementierung, beispielsweise StripePaymentProcessor. Dieser Ansatz ist ein grundlegender Aufbau, der den Grundstein für fortgeschrittenere Techniken wie dynamische Bindung und die Verwendung von Fabriken legt, die wir in zukünftigen Beiträgen behandeln werden.

Schritt 1: Erstellen Sie das Vertragsverzeichnis (falls noch nicht vorhanden).

Laravel fördert eine saubere und organisierte Codebasis. Bei der Implementierung von Schnittstellen platzieren wir diese normalerweise im AppContracts-Verzeichnis.

Wenn das Vertragsverzeichnis in unserer Anwendung noch nicht vorhanden ist, können wir es erstellen, indem wir den folgenden Befehl im Terminal ausführen:

mkdir app/Contracts
Nach dem Login kopieren

Dieses Verzeichnis dient als Speicherort für alle unsere Anwendungsschnittstellen und hält sie von den konkreten Implementierungen getrennt.

Schritt 2: Speichern Sie die PaymentProcessor-Schnittstelle im Vertragsverzeichnis

Da wir nun das Vertragsverzeichnis haben, erstellen wir eine neue Datei, in der sich das PaymentProcessorInterface befindet. Führen Sie dazu den folgenden Befehl aus:

touch app/Contracts/PaymentProcessorInterface.php
Nach dem Login kopieren

Dadurch wird eine leere Datei erstellt, die wir im nächsten Schritt füllen.

Schritt 3: Definieren Sie die PaymentProcessor-Schnittstelle

In unserer neu erstellten Datei PaymentProcessorInterface.php definieren Sie die Schnittstelle wie folgt:

<?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;
}
Nach dem Login kopieren

Diese Schnittstelle fungiert als Vertrag und stellt sicher, dass jede Klasse, die sie implementiert, die erforderlichen Methoden zum Erstellen, Verarbeiten und Erstatten von Zahlungen enthält.

Schritt 4: Implementieren der Schnittstelle in einer Serviceklasse

Nachdem die PaymentProcessorInterface definiert ist, besteht der nächste Schritt darin, eine Klasse zu erstellen, die diese Schnittstelle implementiert. Normalerweise platzieren wir diese Implementierung im Verzeichnis app/Services.

Lassen Sie uns zum Beispiel eine StripePaymentProcessor-Klasse erstellen, die diese Schnittstelle implementiert. Wir können die Datei erstellen, indem wir Folgendes ausführen:

touch app/Services/StripePaymentProcessor.php
Nach dem Login kopieren

Dann implementieren Sie die Klasse wie unten gezeigt:

<?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
    }
}
Nach dem Login kopieren

Diese Klasse enthält jetzt die notwendigen Methoden zum Erstellen, Verarbeiten und Erstatten von Zahlungen über die API von Stripe. Wir können dies bei Bedarf durch andere Zahlungsabwickler ersetzen oder erweitern, indem wir zusätzliche Klassen erstellen, die dieselbe Schnittstelle implementieren.

Schritt 5: Bindung der Schnittstelle im Service-Container (fest codiert)

Da nun die Schnittstelle und ihre Implementierung fertig sind, müssen wir Laravel mitteilen, wie das PaymentProcessorInterface aufgelöst werden soll. In diesem ersten Schritt verwenden wir eine fest codierte Bindung, indem wir die Schnittstelle explizit an eine bestimmte Implementierung im Service-Container von Laravel binden.

Dazu können wir den AppServiceProvider ändern oder einen neuen Dienstanbieter erstellen.

Fügen Sie in app/Providers/AppServiceProvider.php den folgenden Code innerhalb der Register-Methode hinzu:

public function register()
{
    $this->app->bind(
        \App\Contracts\PaymentProcessorInterface::class,
        \App\Services\StripePaymentProcessor::class
    );
}
Nach dem Login kopieren

Diese Bindung teilt Laravel mit, dass die StripePaymentProcessor-Klasse automatisch eingefügt werden soll, wenn PaymentProcessorInterface erforderlich ist. Obwohl dieser Ansatz funktioniert, ist er begrenzt, da er eine bestimmte Implementierung an die Schnittstelle bindet.

Diese fest codierte Bindung ist ein ausgezeichneter Ausgangspunkt, bietet jedoch nicht die Flexibilität, die für größere Anwendungen oder die Unterstützung mehrerer Zahlungsabwickler erforderlich ist. Im nächsten Teil dieser Serie werden wir untersuchen, wie man mithilfe des Service-Containers und der Factorys von Laravel eine dynamische Bindung erreicht, die es dem System ermöglicht, zur Laufzeit verschiedene Implementierungen basierend auf dem benötigten Zahlungsgateway auszuwählen:

  • Dynamische Bindung: Ermöglicht mehrere Implementierungen für verschiedene Zahlungsabwickler.
  • Fabrikmuster: Verwendung von Fabriken zur Auswahl des richtigen Zahlungsabwicklers basierend auf Laufzeitbedingungen.

Das obige ist der detaillierte Inhalt vonSo fügen Sie Zahlungsverarbeitungsschnittstellen in Laravel hinzu und implementieren sie. Der Teil mit fest codierter Bindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage