RANTANDocs
RANTAN 열기
호스티드 체크아웃

결제 검증

접근 권한을 부여하기 전에 백엔드에서 결제 완료를 확인합니다.

결제 검증 응답이 이행 완료의 기준입니다. 브라우저 리디렉션과 팝업 메시지는 의도적으로 신뢰하지 않는 힌트로 취급합니다.

#백엔드에서 검증

GET/api/v2/checkout-sessions/{sessionId}/verify/

세션 생성 시 반환된 서버 전용 검증 키로 인증합니다. 상품 소유자는 판매자 JWT로도 호출할 수 있습니다.

Verify session
curl https://app.rantan.xyz/api/v2/checkout-sessions/$SESSION_ID/verify/ \
  -H "X-Rantan-Checkout-Verification-Key: $CHECKOUT_VERIFICATION_KEY"

#검증 응답

세션 상태와 연결된 구매 상태를 함께 반환합니다. 열려 있거나 만료된 세션은 completed=false입니다.

200 OK
{
  "checkout_session_id": "c8a9d48e-68b2-48dd-a754-75635cae71d6",
  "client_reference_id": "order_20260730_001",
  "product_id": 123,
  "purchase_id": "bfaf2aa4-dd86-4356-92db-ae0431806867",
  "purchase_status": "completed",
  "completed": true,
  "buyer_wallet_address": "0x1234...abcd",
  "quantity": 1,
  "currency": "USDC",
  "total_amount": "12.50000000",
  "amount_atomic": "12500000",
  "completed_at": "2026-07-30T09:04:32Z",
  "error_message": "",
  "session_status": "completed",
  "canceled_at": null,
  "expires_at": "2026-07-30T09:30:00Z"
}

#이행 완료 체크리스트

  1. 1
    완료된 구매 확인

    completed가 true이고 purchase_status가 completed인지 확인합니다.

  2. 2
    자체 주문과 비교

    client_reference_id, product_id, 수량, 통화, 예상 금액을 저장된 주문과 비교합니다.

  3. 3
    한 번만 소비

    권한 부여나 배송 전에 purchase_id를 고유 제약조건과 함께 저장합니다.

  4. 4
    검증 근거 기록

    checkout_session_id, purchase_id, completed_at, 검증 금액을 주문에 기록합니다.

#반환 URL 힌트

RANTAN은 설정된 return_url에 rantan_checkout_session_id, rantan_purchase_id, rantan_purchase_status를 추가합니다.

#안전한 재시도

검증은 읽기 전용이므로 재시도할 수 있습니다. purchase_id를 기준으로 판매자 이행 처리를 멱등하게 만들어 반복 콜백이 권한, 배송, 크레딧을 중복 생성하지 않도록 하세요.