Tổng Quan
Dodo Payments API sử dụng mã trạng thái HTTP tiêu chuẩn và mã lỗi tùy chỉnh để chỉ ra sự thành công hoặc thất bại của các yêu cầu API. Khi xảy ra lỗi, API sẽ trả về mã trạng thái HTTP phù hợp và một phản hồi JSON chứa thông tin chi tiết về lỗi. Mỗi phản hồi lỗi bao gồm:- Mã trạng thái HTTP chỉ ra danh mục chung của lỗi
- Mã lỗi cụ thể xác định chính xác bản chất của lỗi
- Thông điệp lỗi dễ hiểu giải thích điều gì đã sai
- Thông tin chi tiết bổ sung về lỗi khi có thể
- Gỡ lỗi các vấn đề tích hợp
- Triển khai xử lý lỗi đúng cách trong ứng dụng của bạn
- Cung cấp phản hồi có ý nghĩa cho người dùng cuối
- Duy trì một hệ thống xử lý thanh toán vững chắc
Mã Lỗi API Tiêu Chuẩn
| Mã lỗi | Trạng thái HTTP | Mô tả |
|---|---|---|
| 400 | Yêu cầu không hợp lệ | Yêu cầu bị sai định dạng hoặc chứa các tham số không hợp lệ |
| 401 | Không được phép | Xác thực thất bại hoặc khóa API không hợp lệ |
| 403 | Bị cấm | Khóa API không có quyền truy cập vào tài nguyên yêu cầu |
| 404 | Không tìm thấy | Tài nguyên yêu cầu không tồn tại |
| 405 | Phương thức không được phép | Phương thức HTTP không được hỗ trợ cho điểm cuối này |
| 409 | Xung đột | Yêu cầu xung đột với trạng thái hiện tại của tài nguyên |
| 422 | Thực thể không thể xử lý | Yêu cầu được định dạng đúng nhưng chứa lỗi ngữ nghĩa |
| 429 | Quá nhiều yêu cầu | Vượt quá giới hạn tần suất |
| 500 | Lỗi máy chủ nội bộ | Một lỗi không mong đợi đã xảy ra trên máy chủ của chúng tôi |
| 502 | Gateway không hợp lệ | Máy chủ nhận được phản hồi không hợp lệ từ một máy chủ upstream |
| 503 | Dịch vụ không khả dụng | Dịch vụ tạm thời không khả dụng |
| 504 | Thời gian chờ Gateway | Máy chủ đã hết thời gian chờ khi chờ phản hồi từ upstream |
Định Dạng Phản Hồi Lỗi
Khi xảy ra lỗi, API trả về một phản hồi JSON với cấu trúc sau:Tham Khảo Mã Lỗi
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Kích hoạt: Kích hoạt khóa bản quyền: giới hạn mới < số lượng phiên bản hiện có
- Thông điệp: Giới hạn kích hoạt mới không thể nhỏ hơn số lượng phiên bản hiện tại
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Kích hoạt: Cố gắng thêm addons vào các đăng ký thanh toán dựa trên mức sử dụng
- Thông điệp: Addons trong Đăng ký không được hỗ trợ cho Thanh toán Dựa trên Mức sử dụng
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Kích hoạt: Cố gắng thêm addons vào các đăng ký theo yêu cầu
- Thông điệp: Addons không được phép cho các đăng ký theo yêu cầu
-
BRAND_MISMATCH- Kích hoạt: Các mặt hàng trong giỏ hàng thuộc về các thương hiệu khác nhau
- Thông điệp: Tất cả các mặt hàng trong giỏ sản phẩm nên thuộc về cùng một thương hiệu
-
BRAND_NOT_ENABLED- Kích hoạt: Thương hiệu bị vô hiệu hóa hoặc không hoạt động
- Thông điệp: Thương hiệu được cung cấp không được kích hoạt
-
BRAND_SUBMISSION_NOT_ENABLED- Kích hoạt: Tính năng nộp lại xác minh thương hiệu không được kích hoạt
- Thông điệp: Nộp lại xác minh thương hiệu không được kích hoạt
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Kích hoạt: Cố gắng tính phí cho đăng ký đã lên lịch hủy
- Thông điệp: Đăng ký đã lên lịch hủy
-
CHECKOUT_SESSION_CONSUMED- Kích hoạt: Phiên thanh toán đã tạo một khoản thanh toán
- Thông điệp: Phiên thanh toán đã được tiêu thụ
-
DISCOUNT_CODE_ALREADY_EXISTS- Kích hoạt: Tạo mã giảm giá trùng lặp
- Thông điệp: Mã giảm giá đã tồn tại
-
DISCOUNT_CODE_EXPIRED- Kích hoạt: Mã giảm giá đã qua
expires_atngày - Thông điệp: Mã giảm giá đã hết hạn
- Kích hoạt: Mã giảm giá đã qua
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Kích hoạt: Mã giảm giá được sử dụng lại sau khi
usage_limitđạt được - Thông điệp: Giới hạn sử dụng không thể nhỏ hơn times_used / Mã giảm giá đã đạt giới hạn sử dụng
- Kích hoạt: Mã giảm giá được sử dụng lại sau khi
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Kích hoạt: Mã được áp dụng cho đăng ký theo yêu cầu
- Thông điệp: Mã giảm giá không có sẵn cho các đăng ký theo yêu cầu
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Kích hoạt: Mã được áp dụng cho sản phẩm không liên quan
- Thông điệp: Mã giảm giá không có sẵn cho sản phẩm này
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Kích hoạt: Cùng một
item_idxuất hiện hai lần trongitems[] - Thông điệp: Các item_ids trùng lặp được chỉ định trong mảng items
- Kích hoạt: Cùng một
-
DUPLICATE_METER_IDS_IN_REQUEST- Kích hoạt: Cùng một ID đồng hồ xuất hiện nhiều lần trong yêu cầu
- Thông điệp: Các ID đồng hồ trùng lặp không được phép
-
EXCHANGE_RATE_NOT_FOUND- Kích hoạt: Không có tỷ giá FX cho cặp tiền tệ
from → to - Thông điệp: Không tìm thấy tỷ giá hối đoái để chuyển đổi từ Tiền tệ sang Tiền tệ
- Kích hoạt: Không có tỷ giá FX cho cặp tiền tệ
-
EXISTING_REFUND_REQUEST_PROCESSING- Kích hoạt: Yêu cầu hoàn tiền trước đó vẫn đang được xử lý
- Thông điệp: Một yêu cầu hoàn tiền với trạng thái “Đang chờ” vẫn đang được xử lý
-
INACTIVE_LICENSE_KEY- Kích hoạt: Trạng thái khóa ≠
ACTIVE - Thông điệp: Khóa bản quyền không hoạt động
- Kích hoạt: Trạng thái khóa ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Kích hoạt: Thay đổi gói trên đăng ký không hoạt động
- Thông điệp: Thay đổi gói không được hỗ trợ cho các đăng ký không hoạt động
-
INSUFFICIENT_WALLET_FUNDS- Kích hoạt: Số dư ví < số tiền ghi nợ
- Thông điệp: Không đủ tiền trong ví
-
INTEGER_CONVERSION_FAILURE- Kích hoạt: Bất kỳ chuyển đổi số nguyên ↔ chuỗi/số thập phân nào thất bại phía máy chủ
- Thông điệp: Lỗi chuyển đổi số nguyên
-
INTERNAL_SERVER_ERROR- Kích hoạt: Các ngoại lệ không bắt được; bạn nên ghi lại chi tiết phía máy chủ
- Thông điệp: Không có thông điệp công khai (500 chung)
-
INVALID_DISCOUNT_CODE- Kích hoạt: Mã không tồn tại / không áp dụng
- Thông điệp: Mã giảm giá không hợp lệ / Mã giảm giá không thể được áp dụng cho bất kỳ sản phẩm nào trong giỏ hàng
-
INVALID_PERCENTAGE- Kích hoạt: Số phần trăm > 100% (hoặc 10.000 điểm cơ bản)
- Thông điệp: Số tiền phần trăm không thể lớn hơn 10000 / Số tiền mã giảm giá không thể lớn hơn 100%
-
INVALID_QUANTITY- Kích hoạt: Số lượng không hợp lệ được chỉ định cho giá dựa trên mức sử dụng
- Thông điệp: Chỉ cho phép 1 số lượng trong các sản phẩm giá dựa trên mức sử dụng
-
INVALID_QUERY_PARAMS- Kích hoạt: Các tham số truy vấn loại trừ lẫn nhau / sai định dạng
- Thông điệp: Các tham số truy vấn chỉ nên chứa hoặc time_frame hoặc (start, end)
-
INVALID_REQUEST_BODY- Kích hoạt: JSON sai định dạng hoặc vi phạm sơ đồ
- Thông điệp: Nội dung yêu cầu của bạn không hợp lệ. Vui lòng kiểm tra tiêu đề yêu cầu và đối tượng của bạn.
-
INVALID_REQUEST_PARAMETERS- Kích hoạt: Ngữ nghĩa sai (ví dụ: ngày trong quá khứ)
- Thông điệp: Không thể thay đổi next_billing_date thành thời gian trong quá khứ
-
INVALID_SUGGESTED_PRICE- Kích hoạt: Giá PWYW < giá tối thiểu cho phép
- Thông điệp: Giá đề xuất không thể thấp hơn giá tối thiểu. Trong trường hợp trả theo ý muốn, giá được coi là số tiền tối thiểu được chấp nhận
-
INVALID_TAX_ID- Kích hoạt: VAT/GST/TIN không hợp lệ
- Thông điệp: Mã số thuế không hợp lệ
-
LICENSE_KEY_LIMIT_REACHED- Kích hoạt: Kích hoạt = giới hạn
- Thông điệp: Giới hạn kích hoạt khóa bản quyền đã đạt
-
LICENSE_KEY_NOT_FOUND- Kích hoạt: ID phiên bản hoặc ID khóa không hợp lệ
- Thông điệp: Phiên bản khóa bản quyền không được tìm thấy hoặc không thuộc về khóa bản quyền này
-
LINE_ITEM_FULLY_REFUNDED- Kích hoạt: Cố gắng hoàn tiền cho mặt hàng đã hoàn tiền đầy đủ
- Thông điệp: Mặt hàng đã được hoàn tiền đầy đủ không thể hoàn tiền thêm.
-
LINE_ITEM_NOT_FOUND- Kích hoạt: ID mặt hàng không phải là một phần của thanh toán được tham chiếu
- Thông điệp: Mặt hàng không được tìm thấy trong thanh toán
-
LINE_ITEM_PRORATED- Kích hoạt: Cố gắng hoàn tiền hoặc cập nhật một dòng đã được tính theo tỷ lệ
- Thông điệp: Mặt hàng không thể được hoàn tiền vì nó đã được tính theo tỷ lệ
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Kích hoạt: Số tiền hoàn tiền > số tiền đã thanh toán (bao gồm thuế)
- Thông điệp: Số tiền hoàn tiền yêu cầu cho mặt hàng bao gồm thuế là vượt quá số tiền đã thanh toán
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Kích hoạt: Số tiền hoàn tiền dưới ngưỡng tối thiểu
- Thông điệp: Số tiền hoàn tiền yêu cầu cho mặt hàng là quá thấp
-
MAXIMUM_KEYS_REACHED- Kích hoạt: Metadata / trường tùy chỉnh vượt quá 50 cặp
- Thông điệp: Vượt quá 50 cặp khóa-giá trị
-
MERCHANT_NOT_LIVE- Kích hoạt: Doanh nghiệp vẫn ở chế độ thử nghiệm/sandbox
- Thông điệp: Người bán không hoạt động
-
METER_IS_DELETED- Kích hoạt: Cố gắng sử dụng đồng hồ đã bị xóa
- Thông điệp: Đồng hồ đã bị xóa
-
MISSING_ADDON_IDS- Kích hoạt:
addon_iddanh sách trống hoặc ID không xác định - Thông điệp: Một hoặc nhiều ID sản phẩm không tồn tại:
- Kích hoạt:
-
MISSING_METER_IDS- Kích hoạt: Danh sách ID đồng hồ trống hoặc chứa ID không hợp lệ
- Thông điệp: Một hoặc nhiều ID đồng hồ không tồn tại:
-
MISSING_PRODUCT_INFORMATION- Kích hoạt: Sản phẩm tồn tại nhưng thông tin bắt buộc thiếu
- Thông điệp: Sản phẩm tồn tại nhưng thông tin bắt buộc khác bị thiếu hoặc không hợp lệ
-
NEGATIVE_BALANCE_ADJUSTMENT- Kích hoạt: Cố gắng làm cho số dư ví âm
- Thông điệp: Số dư ví không được phép âm
-
NO_ELIGIBLE_PAYMENT_METHODS- Kích hoạt: Sau khi lọc, không còn gì
- Thông điệp: Không tìm thấy phương thức thanh toán đủ điều kiện
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Kích hoạt: Cố gắng đặt thời hạn cho khóa dựa trên đăng ký
- Thông điệp: Không thể đặt ngày hết hạn cho khóa bản quyền dựa trên đăng ký
-
NOT_FOUND- Kích hoạt: 404 chung cho bất kỳ tài nguyên nào bị thiếu
- Thông điệp: Mặt hàng không được tìm thấy (hoặc cụ thể hơn)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Kích hoạt: Thay đổi gói không được phép cho theo yêu cầu
- Thông điệp: Thay đổi gói không được hỗ trợ cho các đăng ký theo yêu cầu
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Kích hoạt: Doanh nghiệp đã tắt cờ tính năng
- Thông điệp: Các đăng ký theo yêu cầu không được kích hoạt cho doanh nghiệp này
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Kích hoạt: Cố gắng sử dụng theo yêu cầu với thanh toán dựa trên mức sử dụng
- Thông điệp: Các Đăng ký Theo yêu cầu không được hỗ trợ cho Thanh toán Dựa trên Mức sử dụng
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Kích hoạt: Giá thiếu cho sản phẩm PWYW
- Thông điệp: Số tiền là bắt buộc cho sản phẩm trả theo ý muốn
-
PAYMENT_ALREADY_REFUNDED- Kích hoạt: Hoàn tiền trùng lặp
- Thông điệp: Thanh toán này đã được hoàn tiền
-
PAYMENT_HAS_BEEN_REFUNDED- Kích hoạt: Thanh toán đã được hoàn tiền đầy đủ
- Thông điệp: ID Thanh toán đã được hoàn tiền đầy đủ.
-
PAYMENT_NOT_SUCCEEDED- Kích hoạt: Cố gắng hoàn tiền/xử lý thanh toán không thành công
- Thông điệp: Thanh toán được cung cấp không thành công
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Kích hoạt: Cố gắng thay đổi gói trên đăng ký đã lên lịch hủy
- Thông điệp: Đăng ký đã lên lịch hủy
-
PREVIOUS_PAYMENT_PENDING- Kích hoạt: Cố gắng tạo khoản phí trong khi khoản phí trước đó đang ở trạng thái không kết thúc
- Thông điệp: Không thể tạo khoản phí mới vì khoản thanh toán trước đó chưa thành công
-
PRODUCT_CART_EMPTY- Kích hoạt: Giỏ sản phẩm trống được gửi
- Thông điệp: giỏ sản phẩm trống
-
PRODUCT_IS_DELETED- Kích hoạt: Sản phẩm đã bị xóa mềm
- Thông điệp: Không có thông điệp
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Kích hoạt: Tổng hoàn tiền tích lũy > số tiền đã thanh toán
- Thông điệp: Số tiền hoàn tiền được tính toán lớn hơn số tiền đã thanh toán
-
REFUND_WINDOW_EXPIRED- Kích hoạt: Ngoài khoảng thời gian hoàn tiền cho phép
- Thông điệp: Không thể khởi tạo hoàn tiền ngày sau khi tạo thanh toán. Liên hệ với [email protected].
-
REQUEST_AMOUNT_BELOW_MINIMUM- Kích hoạt: Số tiền < số tiền tối thiểu của sản phẩm
- Thông điệp: Số tiền không thể nhỏ hơn số tiền tối thiểu được chỉ định cho sản phẩm
-
SUBSCRIPTION_EXPIRED- Kích hoạt: Thanh toán quá
ends_at - Thông điệp: Đăng ký đã hết hạn không thể tạo các khoản phí mới
- Kích hoạt: Thanh toán quá
-
SUBSCRIPTION_INACTIVE- Kích hoạt: Trạng thái ≠
ACTIVE - Thông điệp: Đăng ký không hoạt động
- Kích hoạt: Trạng thái ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Kích hoạt: Dự kiến theo yêu cầu nhưng nhận được khoảng thời gian cố định
- Thông điệp: Đăng ký hiện không phải theo yêu cầu
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Kích hoạt: Số lần thử thanh toán đăng ký vượt quá số lần tối đa
- Thông điệp: Giới hạn thử tối đa 10 lần đã vượt quá cho đăng ký này
-
TOO_MANY_REQUESTS- Kích hoạt: Giới hạn tần suất 429
- Thông điệp: Không có thông điệp
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Kích hoạt: Tổng giỏ hàng < số tiền tối thiểu của gateway
- Thông điệp: Số tiền tối thiểu là cần thiết để xử lý thanh toán
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Kích hoạt: Cố gắng cập nhật thương hiệu chính qua API thông thường
- Thông điệp: Thương hiệu chính không thể được cập nhật qua điểm cuối API này.
-
UNAUTHORIZED- Kích hoạt: Không có khóa API hoặc mã thông báo không hợp lệ / phạm vi
- Thông điệp: Bạn không được phép thực hiện hành động này
-
UNSUPPORTED_ACTION- Kích hoạt: Hành động không được hỗ trợ cho loại tài nguyên
- Thông điệp: Thay đổi gói cho các đăng ký dựa trên mức sử dụng không được hỗ trợ
-
UNSUPPORTED_BILLING_CURRENCY- Kích hoạt: Các đăng ký bị hạn chế ở USD
- Thông điệp: Tiền tệ thanh toán không phải USD không được hỗ trợ cho các đăng ký
-
UNSUPPORTED_COUNTRY- Kích hoạt: Khu vực chưa được hỗ trợ
- Thông điệp: Quốc gia hiện không được hỗ trợ
-
UNSUPPORTED_CURRENCY- Kích hoạt: Tiền tệ sản phẩm hoặc addon không hợp lệ
- Thông điệp: Tiền tệ hiện không được hỗ trợ / Chỉ hỗ trợ sản phẩm USD và INR hiện tại / Chỉ hỗ trợ USD và INR cho giá addon / Chỉ có thể yêu cầu USD hoặc INR cho billing_currency / Tiền tệ không được hỗ trợ / Tiền tệ không mong đợi cho các đăng ký thẻ Ấn Độ
-
UNSUPPORTED_DISCOUNT_TYPE- Kích hoạt: Giảm giá theo số tiền cố định, v.v., chưa hoạt động
- Thông điệp: Chỉ hỗ trợ mã giảm giá theo phần trăm cho đến nay
-
UNSUPPORTED_PAYMENT_CURRENCY- Kích hoạt: Tiền tệ thanh toán bị chặn cho kết nối
- Thông điệp: Giao dịch INR không được hỗ trợ cho giao dịch này
-
UNSUPPORTED_TAX_CATEGORY- Kích hoạt: Chuỗi danh mục thuế không có trong enum
- Thông điệp: Danh mục hiện không được hỗ trợ
-
UNSUCCESSFUL_PAYMENT_ID- Kích hoạt: ID thanh toán tham chiếu thanh toán không thành công
- Thông điệp: ID Thanh toán có trạng thái không thành công.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Kích hoạt: Cố gắng hoàn tiền cho thanh toán có số tiền bằng không
- Thông điệp: Không thể hoàn tiền cho một thanh toán có số tiền bằng không
Thực Hành Tốt Nhất
- Luôn xử lý lỗi một cách khéo léo trong ứng dụng của bạn
- Triển khai ghi nhật ký lỗi đúng cách
- Sử dụng thông điệp lỗi phù hợp cho người dùng cuối
- Triển khai logic thử lại cho các lỗi tạm thời
- Liên hệ với hỗ trợ cho các vấn đề chưa được giải quyết