결제가 실패하면 Dodo Payments은 표준화된
error_code와 사람이 읽을 수 있는 error_message를 통해 실패 이유를 알려줍니다. 이 가이드에서는 이러한 필드를 읽고, 재시도할 가치가 있는지 판단하며, 고객에게 민감한 정보를 노출하지 않고 결제를 복구하는 방법을 설명합니다.Dodo Payments이 실패를 보고하는 방식
일회성 checkout이든 구독 갱신이든 모든 실패한 결제에는 payment object에 동일한 실패 필드가 포함됩니다.결제가 실제로 실패하기 전까지
error_code와 error_message는 null입니다. 먼저 항상 status을 확인한 다음 오류 필드를 읽으세요.payment.failed Webhook
실패를 감지하는 가장 안정적인 방법은 payment.failed webhook입니다. 이벤트는 전체 payment object를 data로 감쌉니다:
payment.failed payload
error_code를 읽고 이를 기준으로 라우팅합니다:
재시도 여부 결정: Soft Declines와 Hard Declines
error_code는 동일한 payment method로 재시도할 가치가 있는지 알려줍니다.
Transaction Failures reference에는 모든
error_code에 대한 decline type과 권장 조치가 나와 있습니다.
Checkout과 Renewal에서의 실패 처리
복구 방법은 고객이 현재 결제 과정에 참여하고 있는지에 따라 달라집니다.- At checkout (customer present)
- On subscription renewal (customer not present)
고객이 현재 checkout을 진행 중입니다. 명확한 메시지를 표시하고 즉시 재시도하거나 다른 card를 사용할 수 있도록 하세요.
requires_payment_method— 고객이 payment method를 제공하지 않았습니다. card details를 입력하지 않았거나 입력을 요청받고도 아무 작업을 하지 않은 경우입니다. 이는 일반적으로 decline이 아니라 checkout drop-off입니다. 고객이 결제를 완료하도록 다시 참여시키세요(Abandoned Cart Recovery 참조).requires_customer_action— 추가 authentication(예: 3DS)이 필요합니다. 고객이 이를 완료하도록 안내하세요. 3D Secure handling을 참조하세요.
실패한 결제 재시도
- Subscriptions: Subscription Payment Retries를 활성화하면 별도의 integration 작업 없이 soft declines를 복구할 수 있습니다. 고객이 Update Payment Method API를 통해 payment method를 업데이트하도록 하여 복구를 트리거할 수도 있으며, 이때 미결제 금액이 청구됩니다.
- One-time payments: checkout 또는
payment_link를 다시 보내 고객이 다른 method로 다시 시도할 수 있도록 하세요. one-time payments에는 automatic retry가 없습니다.
고객에게 안전하게 오류 표시하기
고객에게는 친절한 메시지를 표시하세요. 원시error_code나 merchant-facing error_message를 표시해서는 안 됩니다.
Dodo Payments가 관리하는 surface인 checkout, Customer Portal, dunning emails에서는 사기와 관련된 decline에 일반 메시지로 대체하는 처리를 포함해 이 매핑이 이미 완료되어 있습니다. 자체 product에서 실패를 렌더링할 때만 아래 매핑을 사용하면 됩니다.
Customer-facing messaging
관련 항목
Transaction Failures
모든 decline code, 해당 type 및 권장 조치입니다.
Error Codes
card decline이 아닌 API 및 business-logic errors입니다.
Subscription Payment Retries
subscription renewals에서 soft declines를 자동으로 복구합니다.
Subscription Dunning
hard declines를 복구하는 이메일 sequence입니다.
Payment Webhooks
payment events의 전체 payload schema입니다.
Testing Failures
decline과 renewal failures를 시뮬레이션하는 test cards입니다.