이 블로그 게시물에서는 Laravel 11 애플리케이션에 결제 처리 인터페이스를 추가하고 구현하는 첫 번째 단계를 살펴보겠습니다. PaymentProcessorInterface와 StripePaymentProcessor와 같은 특정 구현 사이에 하드코딩된 바인딩을 만드는 것부터 시작하겠습니다. 이 접근 방식은 기본 설정으로, 동적 바인딩 및 팩토리 사용과 같은 고급 기술을 위한 토대를 마련합니다. 이에 대해서는 향후 게시물에서 다루겠습니다.
Laravel은 깨끗하고 체계적인 코드베이스를 권장합니다. 인터페이스를 구현할 때 일반적으로 AppContracts 디렉터리에 배치합니다.
우리 애플리케이션에 Contracts 디렉터리가 아직 없으면 터미널에서 다음 명령을 실행하여 생성할 수 있습니다.
mkdir app/Contracts
이 디렉토리는 모든 애플리케이션 인터페이스의 위치 역할을 하며 이를 구체적인 구현과 별도로 유지합니다.
이제 Contracts 디렉토리가 있으므로 PaymentProcessorInterface가 위치할 새 파일을 생성해 보겠습니다. 이렇게 하려면 다음 명령을 실행하세요.
touch app/Contracts/PaymentProcessorInterface.php
이렇게 하면 다음 단계에서 채울 빈 파일이 생성됩니다.
새로 생성된 PaymentProcessorInterface.php 파일에서 다음과 같이 인터페이스를 정의합니다.
<?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; }
이 인터페이스는 계약 역할을 하여 이를 구현하는 모든 클래스에 결제 생성, 처리 및 환불에 필요한 메소드가 포함되도록 보장합니다.
PaymentProcessorInterface를 정의한 후 다음 단계는 이 인터페이스를 구현하는 클래스를 만드는 것입니다. 일반적으로 이 구현은 app/Services 디렉토리에 배치됩니다.
예를 들어 이 인터페이스를 구현하는 StripePaymentProcessor 클래스를 만들어 보겠습니다. 다음을 실행하여 파일을 만들 수 있습니다.
touch app/Services/StripePaymentProcessor.php
그런 다음 아래와 같이 클래스를 구현합니다.
<?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 } }
이제 이 클래스에는 Stripe의 API를 통해 결제를 생성, 처리 및 환불하는 데 필요한 메소드가 포함되어 있습니다. 동일한 인터페이스를 구현하는 추가 클래스를 생성하여 필요에 따라 이를 다른 결제 프로세서로 대체하거나 확장할 수 있습니다.
이제 인터페이스와 구현이 준비되었으므로 Laravel에 PaymentProcessorInterface를 해결하는 방법을 알려주어야 합니다. 첫 번째 단계에서는 Laravel 서비스 컨테이너의 특정 구현에 인터페이스를 명시적으로 바인딩하여 하드코딩된 바인딩을 사용합니다.
이를 위해 AppServiceProvider를 수정하거나 새 서비스 공급자를 생성할 수 있습니다.
app/Providers/AppServiceProvider.php에서 등록 메소드 내에 다음 코드를 추가하세요.
public function register() { $this->app->bind( \App\Contracts\PaymentProcessorInterface::class, \App\Services\StripePaymentProcessor::class ); }
이 바인딩은 Laravel에 PaymentProcessorInterface가 필요할 때마다 자동으로 StripePaymentProcessor 클래스를 삽입해야 한다고 알려줍니다. 이 접근 방식은 작동하지만 특정 구현을 인터페이스에 바인딩하므로 제한됩니다.
이 하드코딩된 바인딩은 훌륭한 출발점이지만 대규모 애플리케이션이나 여러 결제 프로세서를 지원할 때 필요한 유연성을 제공하지 않습니다. 이 시리즈의 다음 부분에서는 Laravel의 서비스 컨테이너와 팩토리를 사용하여 동적 바인딩을 달성하여 시스템이 필요한 결제 게이트웨이에 따라 런타임에 다양한 구현을 선택할 수 있도록 하는 방법을 살펴보겠습니다.
위 내용은 Laravel에서 결제 처리 인터페이스를 추가하고 구현하는 방법 하드코딩된 바인딩 부분의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!