trait Billable (View source)

결제 기능을 부여하는 Eloquent 모델용 트레이트.

Cashier 스타일 API의 진입점으로, 금액 단위는 원(KRW) 정수이다. 모든 연산은 호출한 모델의 Billable 범위 안에서만 동작한다.

Methods

bool
hasPortOneId()

이 모델에 연결된 PortOne 고객 ID가 있는지 확인한다.

string|null
portOneId()

이 모델에 연결된 PortOne 고객 ID를 조회한다.

string
createOrGetPortOneCustomerId()

이 모델의 PortOne 고객 ID를 만들거나 기존 값을 반환한다.

preparePayment(int $amount, string $orderName)

결제 레코드를 미리 만든다. PortOne을 호출하지 않으며 상태는 PENDING이다.

completePayment(string $paymentId)

구매자가 브라우저에서 결제한 뒤 서버에서 검증하고 확정한다.

refund(string $paymentId, string $reason, int|null $amount = null)

결제를 환불한다. 금액을 생략하면 전액 환불이다.

MorphMany
payments()

이 모델의 결제 목록 관계(최신순)를 반환한다.

Payment|null
findPayment(string $paymentId)

내 범위에서 결제 1건을 찾는다. 다른 모델의 결제는 조회되지 않는다.

Details

bool hasPortOneId()

이 모델에 연결된 PortOne 고객 ID가 있는지 확인한다.

Return Value

bool

고객 레코드가 있으면 true

string|null portOneId()

이 모델에 연결된 PortOne 고객 ID를 조회한다.

Return Value

string|null

고객 ID, 없으면 null

string createOrGetPortOneCustomerId()

이 모델의 PortOne 고객 ID를 만들거나 기존 값을 반환한다.

Return Value

string

고객 ID (UUID 문자열)

Payment preparePayment(int $amount, string $orderName)

결제 레코드를 미리 만든다. PortOne을 호출하지 않으며 상태는 PENDING이다.

Parameters

int $amount

결제 금액(원, 0보다 커야 함)

string $orderName

주문명(빈 문자열 불가)

Return Value

Payment

생성된 PENDING 결제 레코드

Exceptions

InvalidArgumentException

Payment completePayment(string $paymentId)

구매자가 브라우저에서 결제한 뒤 서버에서 검증하고 확정한다.

PortOne 조회 결과가 결제 완료이고 금액이 일치하면 PAID가 된다. 이미 PENDING이 아닌 레코드는 그대로 반환한다.

Parameters

string $paymentId

확정할 결제의 PortOne 결제 식별자

Return Value

Payment

확정된(또는 기존 상태 그대로인) 결제 레코드

Exceptions

PaymentNotFoundException
PaymentNotPaidException
AmountMismatchException
ConfigurationException
PortOneException

Payment refund(string $paymentId, string $reason, int|null $amount = null)

결제를 환불한다. 금액을 생략하면 전액 환불이다.

전액 환불 시 CANCELLED, 일부 환불 시 PARTIALLY_CANCELLED가 된다.

Parameters

string $paymentId

환불할 결제의 PortOne 결제 식별자

string $reason

PortOne에 전달할 환불 사유(빈 문자열 불가)

int|null $amount

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

Return Value

Payment

환불이 반영된 결제 레코드

Exceptions

PaymentNotFoundException
InvalidPaymentStatusException
InvalidRefundAmountException
ConfigurationException
PortOneException
InvalidArgumentException

MorphMany payments()

이 모델의 결제 목록 관계(최신순)를 반환한다.

Return Value

MorphMany

생성일 내림차순 결제 관계

Payment|null findPayment(string $paymentId)

내 범위에서 결제 1건을 찾는다. 다른 모델의 결제는 조회되지 않는다.

Parameters

string $paymentId

PortOne 결제 식별자

Return Value

Payment|null

결제 레코드, 없으면 null