当付款失败时,Dodo Payments 会通过标准化的
error_code 和人类可读的 error_message 告诉您失败原因。此指南展示如何读取这些字段、决定是否值得重试,并在不向客户暴露敏感信息的情况下恢复付款。Dodo Payments 如何报告失败
每个失败的支付——无论是一次性结账还是订阅续订——都会在支付对象上携带相同的失败字段:error_code 和 error_message 在付款实际失败之前是 null。始终先检查 status,然后读取错误字段。payment.failed Webhook
检测失败最可靠的方式是 payment.failed webhook。该事件会将完整的支付对象封装在 data 中:
payment.failed payload
error_code 并据此进行路由:
决定是否重试:软拒付与硬拒付
error_code 会告诉你是否值得使用相同的支付方式重试。
Transaction Failures 参考列出了每个
error_code 的拒付类型和建议操作。
处理结账期间与续费期间的失败
恢复方式取决于客户是否在场。- At checkout (customer present)
- On subscription renewal (customer not present)
客户正在主动结账。显示清晰的消息,让客户立即重试或使用其他卡。
requires_payment_method— 客户从未提供支付方式:他们没有输入卡片详细信息,或系统提示他们提供支付方式后却没有采取任何操作。这通常是结账中途放弃,而不是拒付 — 重新吸引客户完成支付(请参阅 Abandoned Cart Recovery)。requires_customer_action— 需要额外身份验证(例如 3DS);请客户完成验证。请参阅 3D Secure handling。
重试失败的支付
- **订阅:**启用 Subscription Payment Retries,无需进行集成开发即可恢复软拒付。你也可以让客户通过 Update Payment Method API 更新支付方式来触发恢复,该操作会收取所有未付费用。
- **一次性支付:**重新发送结账页面或
payment_link,让客户可以使用其他方式再次尝试。一次性支付不会自动重试。
安全地向客户展示错误
向客户显示友好的消息 — 绝不要显示原始的error_code,也绝不要显示面向商户的 error_message。
在由 Dodo Payments 控制的界面中 — 结账页面、Customer Portal 和催款电子邮件 — 该映射已为你完成,其中包括针对欺诈相关拒付回退到通用消息的处理。只有当你在自己的产品中展示失败信息时,才需要使用下面的映射。
Customer-facing messaging
相关内容
Transaction Failures
每个拒付代码、其类型及建议操作。
Error Codes
并非卡片拒付的 API 和业务逻辑错误。
Subscription Payment Retries
自动恢复订阅续费时的软拒付。
Subscription Dunning
用于恢复硬拒付的电子邮件序列。
Payment Webhooks
支付事件的完整 payload schema。
Testing Failures
用于模拟拒付和续费失败的测试卡。