Khi một khoản thanh toán thất bại, Dodo Payments sẽ cho bạn biết tại sao thông qua một
error_code đã chuẩn hóa và một error_message có thể đọc được. Hướng dẫn này cho thấy cách đọc các trường đó, quyết định xem có đáng thử lại không, và khôi phục thanh toán mà không tiết lộ thông tin nhạy cảm cho khách hàng.Cách Dodo Payments Báo Cáo Một Thất Bại
Mỗi thanh toán thất bại — dù là thanh toán một lần hay gia hạn đăng ký — đều mang cùng các trường thất bại trên đối tượng thanh toán:error_code và error_message là null cho đến khi khoản thanh toán thực sự thất bại. Luôn kiểm tra status trước, sau đó đọc các trường lỗi.Webhook payment.failed
Cách đáng tin cậy nhất để phát hiện lỗi là webhook payment.failed. Event bao bọc toàn bộ payment object trong data:
payment.failed payload
error_code và định tuyến dựa trên giá trị này:
Quyết định có nên Retry hay không: Soft Decline và Hard Decline
error_code cho biết việc retry cùng payment method có đáng thực hiện hay không.
Tài liệu tham khảo Transaction Failures liệt kê loại decline và hành động được đề xuất cho mọi
error_code.
Xử lý lỗi tại Checkout và khi Renewal
Cách khôi phục phụ thuộc vào việc customer có đang hiện diện hay không.- At checkout (customer present)
- On subscription renewal (customer not present)
Customer đang chủ động thực hiện checkout. Hiển thị thông báo rõ ràng và cho phép họ retry ngay lập tức hoặc sử dụng card khác.
requires_payment_method— customer chưa từng cung cấp payment method: họ chưa nhập thông tin card hoặc được nhắc nhập nhưng không thực hiện hành động nào. Đây thường là drop-off trong checkout, không phải decline — hãy tiếp cận lại customer để hoàn tất payment (xem Khôi phục giỏ hàng bị bỏ quên).requires_customer_action— cần xác thực bổ sung (chẳng hạn như 3DS); yêu cầu customer hoàn tất bước này. Xem Xử lý 3D Secure.
Retry Payment Thất bại
- Subscriptions: Bật Subscription Payment Retries để khôi phục soft decline mà không cần thực hiện thêm công việc tích hợp. Bạn cũng có thể kích hoạt khôi phục bằng cách yêu cầu customer cập nhật payment method thông qua Update Payment Method API, API này sẽ charge mọi khoản còn nợ.
- One-time payments: Gửi lại checkout hoặc
payment_linkđể customer có thể thử lại bằng method khác. One-time payments không có cơ chế retry tự động.
Hiển thị Lỗi an toàn cho Customer
Hiển thị cho customer một thông báo thân thiện — không bao giờ hiển thịerror_code thô và cũng không bao giờ hiển thị error_message dành cho merchant.
Trên các giao diện do Dodo Payments kiểm soát — checkout, Customer Portal và email dunning — việc ánh xạ này đã được thực hiện sẵn cho bạn, bao gồm cả phương án dự phòng hiển thị thông báo chung cho các decline liên quan đến fraud. Bạn chỉ cần áp dụng ánh xạ dưới đây khi hiển thị lỗi trong sản phẩm của riêng mình.
Customer-facing messaging
Liên quan
Transaction Failures
Mọi mã decline, loại decline và hành động được đề xuất.
Error Codes
Các lỗi API và logic nghiệp vụ không phải là card decline.
Subscription Payment Retries
Tự động khôi phục soft decline trong các lần renewal của subscription.
Subscription Dunning
Các chuỗi email giúp khôi phục hard decline.
Payment Webhooks
Schema payload đầy đủ cho các event payment.
Testing Failures
Các card kiểm thử mô phỏng decline và lỗi renewal.