error_code 和人类可读的 error_message。本指南将介绍如何读取这些字段、判断是否重试,以及如何安全地恢复 payment。
Dodo Payments 如何报告失败
每个失败的 payment object 都包含以下字段:在 payment 失败之前,
error_code 和 error_message 均为 null。请始终先检查 status。payment.failed Webhook
payment.failed webhook 是检测 failure 最可靠的方式。该 event 会将完整的 payment object 包装在 data 中:
payment.failed payload
error_code,并据此进行路由:
决定是否重试:软拒付与硬拒付
error_code 会告诉你是否值得使用相同的支付方式重试。
完整的 decline type 列表及建议操作请参阅 Transaction Failures。
处理结账期间与续费期间的失败
恢复方式取决于客户是否在场。- At checkout (customer present)
- On subscription renewal (customer not present)
客户正在主动完成 checkout。请展示清晰的消息,并让客户重试或使用其他 card。
requires_payment_method— 客户从未提供 payment method。这通常是 checkout 中途放弃,而不是 decline。请重新吸引客户完成 payment(参阅 Abandoned Cart Recovery)。requires_customer_action— 需要额外的 authentication(例如 3DS)。请客户完成 authentication。参阅 3D Secure。
重试失败的支付
Subscriptions: 启用 Subscription Payment Retries,即可自动恢复 Soft decline。若要立即重试而不是等待计划时间,请通过 dashboard 或 API 使用 Manual Payment Retry。您也可以让客户通过 Update Payment Method API 更新其 payment method,从而触发恢复流程;该操作会收取所有未结清的款项。 一次性 payments: 重新发送 checkout 或payment_link,让客户可以使用其他 payment method 再次尝试。一次性 payments 不支持自动 retry。
安全地向客户展示 Errors
向客户展示友好的消息,绝不要展示原始的error_code 或面向 merchant 的 error_message。
在由 Dodo Payments 控制的界面(checkout、Customer Portal、dunning email)中,系统已经为您完成了此映射,包括对与 fraud 相关的 decline 回退到通用消息。只有在您自己的 product 中渲染 failure 时,才需要使用下面的映射。
Customer-facing messaging
相关内容
Transaction Failures
每个 decline code、其 type 以及建议操作。
Error Codes
不是 card decline 的 API 和 business-logic errors。
Subscription Payment Retries
subscription renewal 中 Soft decline 的自动恢复。
Subscription Dunning
用于恢复 Hard decline 的 email sequence。
Payment Webhooks
payment event 的完整 payload schema。
Testing Failures
用于模拟 decline 和 renewal failure 的 test card。