콘텐츠로 이동

체크아웃 확인 (테스트 결제)

POST
/api/v1/billing/checkouts/{checkout_id}/confirm
curl --request POST \
--url https://dev.api.endueos.com/api/v1/billing/checkouts/chk_01J9ZK3Q8M4XW7D2N5R6T0V1BC/confirm \
--header 'Authorization: Bearer <token>'

결제를 끝낸다 (본문 없음). 원장에 topup 이 붙는다 — 체크아웃당 한 번뿐이다 (멱등, 이미 completed 면 그대로 200).

  • mock: 테스트 결제 완료.
  • paddle: 결제창이 끝났다고 알려 오면 부른다. 서버가 Paddle 트랜잭션을 조회해 돈을 받았으면(paid·completed) 충전하고, 아직이면 200 과 pending 을 준다 (잠시 뒤 다시 부른다 — 웹훅이 먼저 완료할 수도 있다). Paddle 에서 취소된 결제면 402 PAYMENT_FAILED, Paddle 이 응답하지 않으면 503. 24시간이 지났어도 돈을 받았으면 완료한다. 취소된 체크아웃이거나 돈을 받지 않은 채 만료됐으면 409 CHECKOUT_STATE_CONFLICT. 공급자를 쓸 수 없으면 501 PAYMENT_PROVIDER_UNAVAILABLE.
checkout_id
필수
string
/^chk_[0-9A-HJKMNP-TV-Z]{26}$/
예시
chk_01J9ZK3Q8M4XW7D2N5R6T0V1BC

성공.

Media typeapplication/json
object
data
필수

충전 한 건. 끝나면(completed) 원장에 topup 이 한 번 붙는다.

object
checkout_id
필수
string
/^chk_[0-9A-HJKMNP-TV-Z]{26}$/
org_id
필수

충전되는 조직 (D-60). 결제가 끝나면 콘솔이 그 조직의 Credit 으로 돌아간다.

string
/^org_[0-9A-HJKMNP-TV-Z]{26}$/
credits
필수
number format: double
price
필수
number format: double
currency
필수
string
provider
필수

결제 공급자 — mock(콘솔의 테스트 결제) · paddle(Paddle, D-59). 체크아웃을 연 때의 설정을 따른다.

string
허용 값: mock paddle
status
필수
string
허용 값: pending completed cancelled expired
checkout_url
필수

결제 화면의 주소 — 콘솔의 결제 화면. paddle 이면 그 화면이 payment_params 로 Paddle 결제창을 띄운다.

string
payment_params
필수
Any of:

Paddle.js 결제창(Paddle.Checkout.open({transactionId}))의 값.

object
client_token
필수

클라이언트 토큰 (공개값 — sandbox 는 test_).

string
environment
필수

sandbox 면 Paddle.Environment.set("sandbox") — 실제 돈이 오가지 않는다.

string
허용 값: sandbox production
transaction_id
필수

Paddle 트랜잭션 (txn_). 체크아웃을 열 때 서버가 만든다.

string
created_at
필수
string format: date-time
completed_at
필수
Any of:
string format: date-time
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration

서버 처리 시간(ms).

integer format: int32
예시
{
"data": {
"checkout_id": "chk_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"org_id": "org_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"provider": "mock",
"status": "pending",
"payment_params": {
"environment": "sandbox"
}
}
}

인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.

크레딧이 없다 — INSUFFICIENT_CREDITS (충전하면 다시 된다). 본문은 오류 봉투.

이 인증 수단으로는 못 하는 일이다 — FORBIDDEN (예: API 키로 클라우드 기기 만들기). 본문은 오류 봉투.

없거나 내 것이 아니다 — *_NOT_FOUND. 본문은 오류 봉투.

지금 상태와 충돌한다 — 코드는 위 설명을 본다. 본문은 오류 봉투.

보관 기간이 지났다 — OUTPUT_EXPIRED. 본문은 오류 봉투.

한도를 넘었다 — Retry-After 초 뒤에 다시. 본문은 오류 봉투.

서버 오류 — INTERNAL_ERROR. 본문은 오류 봉투.

오류. 본문은 오류 봉투.

의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.