概述
Dodo Payments API 提供详细的交易失败原因,帮助您理解为什么支付尝试未成功。这些失败原因在不同的支付方式和提供商之间是标准化的,使您能够在应用程序中实现一致的错误处理。 每个交易失败响应包括:- 一个特定的失败原因代码
- 一个可读的错误信息
- 可用时关于失败的额外上下文
- 错误是否可以由用户纠正或需要系统干预
- 向客户提供清晰的反馈
- 实施适当的重试逻辑
- 优雅地处理不同的失败场景
- 维护可靠的支付处理系统
交易失败原因
下表列出了所有可能的交易失败原因、它们的含义以及它们是否是用户可纠正的错误。用户错误 表示付款拒绝是否可由客户自行解决。 当
true 时,客户可以采取措施解决问题(例如输入正确的卡信息)。 当 false 时,拒付是由于系统级问题或银行限制,客户无法解决。支持
如需有关交易失败或集成问题的更多帮助,请通过 support@dodopayments.com 联系我们的支持团队.Handle Payment Failures
绝不要向客户透露
STOLEN_CARD, LOST_CARD, PICKUP_CARD, 或 FRAUDULENT 的真实原因。 公开这些信息可能会警告欺诈行为者。始终向客户展示通用的拒绝消息(例如,“您的卡已被拒绝。请联系您的银行或使用其他卡。”),具体代码仅供内部记录。交易失败原因
下表列出了每个失败代码、拒绝类型、客户是否可以解决、描述以及推荐的操作。用户错误 表示支付拒绝是否可以通过客户解决。当
Yes 时,客户可以采取行动解决问题(例如,输入正确的卡详细信息)。当 No 时,拒绝是由于系统级别问题或银行限制,客户无法直接解决。当发卡行的风险引擎将持卡人标记为高风险客户时,卡也可能被拒绝 — 独立于商家或交易细节。此类拒绝通常显示为通用代码,如
DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED, 或 FRAUDULENT。在这些情况下,银行不会共享具体原因,Dodo Payments或商家无法覆盖该决定。请客户联系他们的银行解决该标记,或使用不同的卡或支付方式。程序化处理失败
从payment.failed webhook 或支付对象中读取 error_code,将其映射到上述推荐操作,并决定是否重试。对于订阅续期,系统会自动重试软拒绝 — 请参阅 订阅支付重试。
对于API层和业务逻辑错误(如 PAYMENT_NOT_SUCCEEDED 或 REFUND_WINDOW_EXPIRED)而非卡拒绝,请参阅 错误代码 参考。
相关
Handle Payment Failures
检测、展示和重试支付失败的端到端指南。
Error Codes
非拒绝失败的API和业务逻辑错误代码。
Subscription Payment Retries
通过自动重试恢复订阅续期中的软拒绝。
Subscription Dunning
通过提示更新支付方式来恢复硬拒绝的电子邮件序列。