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.
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
Dieses Verzeichnis dient als Speicherort für alle unsere Anwendungsschnittstellen und hält sie von den konkreten Implementierungen getrennt.
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
Dadurch wird eine leere Datei erstellt, die wir im nächsten Schritt füllen.
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; }
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.
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
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 } }
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.
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 ); }
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:
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!