final class FakePaymentGateway implements PaymentGateway (View source)

테스트용 PaymentGateway. PortOne에 요청하지 않고 지정한 응답을 돌려주며 호출을 기록한다.

응답을 지정하지 않은 결제 ID는 PortOne이 모르는 결제로 본다: lookup()은 PAYMENT_NOT_FOUND 예외를 던지고, lookupForExpiry()는 found가 false인 결과를 반환한다(PortOneGateway와 같다). cancel()은 기록만 하며 지정한 응답을 바꾸지 않는다. 취소 뒤의 조회 결과는 payment()로 다시 지정한다.

$gateway = FakePaymentGateway::bind()
    ->payment($paymentId, 'PAID', totalAmount: 10000, cancelledAmount: 0);
// ... 테스트 대상 실행
$gateway->assertLookedUp($paymentId, times: 1);
$gateway->assertCancelled($paymentId, fn (string $reason, ?int $amount): bool => $amount === null);

Methods

bind()

새 가짜 게이트웨이를 애플리케이션 컨테이너의 PaymentGateway로 바인딩하고 반환한다.

payment(string $paymentId, string $status, int|null $totalAmount = null, int|null $cancelledAmount = null)

결제 ID의 조회 응답을 지정한다.

failLookup(string $paymentId, Throwable $exception)

결제 ID의 조회가 이 예외를 던지게 한다(예: PortOne 장애).

failCancel(string $paymentId, Throwable $exception)

결제 ID의 취소 요청이 이 예외를 던지게 한다. 요청은 기록된다.

lookup(string $paymentId)

지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 PAYMENT_NOT_FOUND 예외를 던진다.

lookupForExpiry(string $paymentId)

지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 found가 false인 결과를 반환한다.

void
cancel(string $paymentId, string $reason, int|null $amount)

취소 요청을 기록한다. 지정한 취소 실패가 있으면 기록한 뒤 던진다.

int
lookupCount(string|null $paymentId = null)

기록된 조회 횟수를 반환한다. 결제 ID를 주면 그 결제만 센다.

array
cancellations()

기록된 취소 요청을 반환한다.

void
assertLookedUp(string $paymentId, int|null $times = null)

결제 ID를 조회했는지 확인한다. times를 주면 정확한 횟수를 확인한다.

void
assertNotLookedUp(string $paymentId)

결제 ID를 조회하지 않았는지 확인한다.

void
assertNothingLookedUp()

아무 결제도 조회하지 않았는지 확인한다.

void
assertCancelled(string $paymentId, Closure|null $callback = null)

결제 ID의 취소 요청이 있었는지 확인한다.

void
assertNotCancelled(string $paymentId)

결제 ID의 취소 요청이 없었는지 확인한다.

void
assertNothingCancelled()

아무 취소 요청도 없었는지 확인한다.

Details

static FakePaymentGateway bind()

새 가짜 게이트웨이를 애플리케이션 컨테이너의 PaymentGateway로 바인딩하고 반환한다.

Return Value

FakePaymentGateway

FakePaymentGateway payment(string $paymentId, string $status, int|null $totalAmount = null, int|null $cancelledAmount = null)

결제 ID의 조회 응답을 지정한다.

Parameters

string $paymentId

PortOne 결제 식별자

string $status

PortOne 결제 상태(예: PAID, PARTIAL_CANCELLED, CANCELLED, READY, FAILED)

int|null $totalAmount

실결제 총액(amount.total)

int|null $cancelledAmount

취소 총액(amount.cancelled)

Return Value

FakePaymentGateway

FakePaymentGateway failLookup(string $paymentId, Throwable $exception)

결제 ID의 조회가 이 예외를 던지게 한다(예: PortOne 장애).

Parameters

string $paymentId
Throwable $exception

Return Value

FakePaymentGateway

FakePaymentGateway failCancel(string $paymentId, Throwable $exception)

결제 ID의 취소 요청이 이 예외를 던지게 한다. 요청은 기록된다.

Parameters

string $paymentId
Throwable $exception

Return Value

FakePaymentGateway

GatewayPayment lookup(string $paymentId)

지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 PAYMENT_NOT_FOUND 예외를 던진다.

Parameters

string $paymentId

PortOne 결제 식별자

Return Value

GatewayPayment

PortOne 결제 상태와 실결제액

Exceptions

Throwable

GatewayPayment lookupForExpiry(string $paymentId)

지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 found가 false인 결과를 반환한다.

Parameters

string $paymentId

PortOne 결제 식별자

Return Value

GatewayPayment

PortOne 결제 상태와 실결제액

Exceptions

Throwable

void cancel(string $paymentId, string $reason, int|null $amount)

취소 요청을 기록한다. 지정한 취소 실패가 있으면 기록한 뒤 던진다.

Parameters

string $paymentId

PortOne 결제 식별자

string $reason

PortOne에 전달할 환불 사유

int|null $amount

환불 금액(원, null이면 전액)

Return Value

void

Exceptions

Throwable

int lookupCount(string|null $paymentId = null)

기록된 조회 횟수를 반환한다. 결제 ID를 주면 그 결제만 센다.

Parameters

string|null $paymentId

Return Value

int

array cancellations()

기록된 취소 요청을 반환한다.

Return Value

array

void assertLookedUp(string $paymentId, int|null $times = null)

결제 ID를 조회했는지 확인한다. times를 주면 정확한 횟수를 확인한다.

Parameters

string $paymentId
int|null $times

Return Value

void

void assertNotLookedUp(string $paymentId)

결제 ID를 조회하지 않았는지 확인한다.

Parameters

string $paymentId

Return Value

void

void assertNothingLookedUp()

아무 결제도 조회하지 않았는지 확인한다.

Return Value

void

void assertCancelled(string $paymentId, Closure|null $callback = null)

결제 ID의 취소 요청이 있었는지 확인한다.

Parameters

string $paymentId
Closure|null $callback

사유와 금액(null이면 전액)을 받아 일치하면 true

Return Value

void

void assertNotCancelled(string $paymentId)

결제 ID의 취소 요청이 없었는지 확인한다.

Parameters

string $paymentId

Return Value

void

void assertNothingCancelled()

아무 취소 요청도 없었는지 확인한다.

Return Value

void