error_code와 사람이 읽을 수 있는 error_message를 제공합니다. 이 가이드에서는 이러한 필드를 확인하고, 재시도 여부를 결정하며, 결제를 안전하게 복구하는 방법을 설명합니다.
Dodo Payments이 실패를 보고하는 방식
실패한 모든 결제에는 결제 객체에 다음 필드가 포함됩니다:error_code 및 error_message는 결제가 실패할 때까지 null입니다. 항상 먼저 status를 확인하세요.payment.failed Webhook
payment.failed webhook은 실패를 감지하는 가장 신뢰할 수 있는 방법입니다. 이벤트는 전체 결제 객체를 data로 감쌉니다:
payment.failed payload
error_code를 확인하고 해당 값에 따라 라우팅합니다:
재시도 여부 결정: Soft Declines와 Hard Declines
error_code는 동일한 payment method로 재시도할 가치가 있는지 알려줍니다.
거절 유형과 권장 조치의 전체 목록은 Transaction Failures를 참조하세요.
Checkout과 Renewal에서의 실패 처리
복구 방법은 고객이 현재 결제 과정에 참여하고 있는지에 따라 달라집니다.- At checkout (customer present)
- On subscription renewal (customer not present)
고객이 현재 checkout을 진행 중입니다. 명확한 메시지를 표시하고 다시 시도하거나 다른 카드를 사용할 수 있도록 하세요.
requires_payment_method— 고객이 결제 수단을 제공하지 않았습니다. 일반적으로 이는 거절이 아니라 checkout 이탈입니다. 결제를 완료할 수 있도록 고객을 다시 유도하세요(Abandoned Cart Recovery 참조).requires_customer_action— 추가 인증(예: 3DS)이 필요합니다. 고객이 인증을 완료하도록 안내하세요. 3D Secure를 참조하세요.
실패한 결제 재시도
구독: Subscription Payment Retries를 활성화하면 Soft decline을 자동으로 복구할 수 있습니다. 일정을 기다리지 않고 즉시 재시도하려면 dashboard 또는 API에서 Manual Payment Retry를 사용하세요. Update Payment Method API를 통해 고객이 결제 수단을 업데이트하도록 하여 복구를 트리거할 수도 있으며, 이 경우 미납 금액이 청구됩니다. 일회성 결제: 고객이 다른 결제 수단으로 다시 시도할 수 있도록 checkout 또는payment_link를 다시 전송하세요. 일회성 결제에는 자동 재시도가 없습니다.
고객에게 오류를 안전하게 표시하기
고객에게 친절한 메시지를 표시하고, 원시error_code 또는 판매자용 error_message는 절대 표시하지 마세요.
Dodo Payments가 관리하는 화면(checkout, Customer Portal, dunning 이메일)에서는 사기와 관련된 거절에 대한 일반 메시지로의 fallback을 포함하여 이 매핑이 이미 처리되어 있습니다. 자체 제품에서 실패를 표시하는 경우에만 아래 매핑을 사용하면 됩니다.
Customer-facing messaging
관련 문서
Transaction Failures
모든 거절 코드, 해당 유형 및 권장 조치입니다.
Error Codes
카드 거절이 아닌 API 및 비즈니스 로직 오류입니다.
Subscription Payment Retries
구독 갱신에서 Soft decline을 자동으로 복구합니다.
Subscription Dunning
Hard decline을 복구하는 이메일 시퀀스입니다.
Payment Webhooks
결제 이벤트의 전체 payload 스키마입니다.
Testing Failures
거절 및 갱신 실패를 시뮬레이션하는 테스트 카드입니다.