概要
Dodo Payments APIは、APIリクエストの成功または失敗を示すために、標準のHTTPステータスコードとカスタムエラーコードを使用します。エラーが発生した場合、APIは適切なHTTPステータスコードとエラーに関する詳細情報を含むJSONレスポンスを返します。 各エラーレスポンスには以下が含まれます:- エラーの一般的なカテゴリを示すHTTPステータスコード
- エラーの正確な性質を特定する特定のエラーコード
- 何が問題だったのかを説明する人間が読めるエラーメッセージ
- 適用可能な場合、エラーに関する追加の詳細
- 統合の問題をデバッグする
- アプリケーションで適切なエラーハンドリングを実装する
- エンドユーザーに意味のあるフィードバックを提供する
- 堅牢な決済処理システムを維持する
標準APIエラーコード
| エラーコード | HTTPステータス | 説明 |
|---|---|---|
| 400 | 不正なリクエスト | リクエストが不正または無効なパラメータを含んでいました |
| 401 | 認証失敗 | 認証に失敗したか、APIキーが無効です |
| 403 | 禁止 | APIキーにリクエストされたリソースへのアクセス権がありません |
| 404 | 未検出 | リクエストされたリソースは存在しません |
| 405 | メソッド不許可 | このエンドポイントではHTTPメソッドがサポートされていません |
| 409 | 競合 | リクエストがリソースの現在の状態と競合しています |
| 422 | 処理できないエンティティ | リクエストは正しく形成されましたが、意味的なエラーが含まれています |
| 429 | リクエストが多すぎます | レート制限を超えました |
| 500 | サーバー内部エラー | サーバーで予期しないエラーが発生しました |
| 502 | 不正なゲートウェイ | サーバーが上流サーバーから無効なレスポンスを受け取りました |
| 503 | サービス利用不可 | サービスは一時的に利用できません |
| 504 | ゲートウェイタイムアウト | サーバーが上流のレスポンスを待っている間にタイムアウトしました |
エラーレスポンスフォーマット
エラーが発生した場合、APIは以下の構造を持つJSONレスポンスを返します:エラーコードリファレンス
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- トリガー: ライセンスキーのアクティベーション:新しい制限 < 既存のインスタンス数
- メッセージ: 新しいアクティベーション制限は現在のインスタンス数より少なくすることはできません
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- トリガー: 使用量ベースの請求サブスクリプションにアドオンを追加しようとした
- メッセージ: サブスクリプションのアドオンは使用量ベースの請求には対応していません
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- トリガー: オンデマンドサブスクリプションにアドオンを追加しようとした
- メッセージ: オンデマンドサブスクリプションにはアドオンは許可されていません
-
BRAND_MISMATCH- トリガー: カート内のアイテムが異なるブランドに属している
- メッセージ: 製品カート内のすべてのアイテムは同じブランドに属する必要があります
-
BRAND_NOT_ENABLED- トリガー: ブランドが無効または非アクティブ
- メッセージ: 提供されたブランドは有効ではありません
-
BRAND_SUBMISSION_NOT_ENABLED- トリガー: ブランド検証再提出機能が有効になっていない
- メッセージ: ブランド検証の再提出は有効になっていません
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- トリガー: キャンセル予定のサブスクリプションに対して請求しようとした
- メッセージ: サブスクリプションはキャンセル予定です
-
CHECKOUT_SESSION_CONSUMED- トリガー: チェックアウトセッションがすでに支払いを生成している
- メッセージ: チェックアウトセッションはすでに消費されています
-
DISCOUNT_CODE_ALREADY_EXISTS- トリガー: 重複した割引コードの作成
- メッセージ: 割引コードはすでに存在します
-
DISCOUNT_CODE_EXPIRED- トリガー: 割引コードが
expires_at日付を過ぎた - メッセージ: 割引コードは期限切れです
- トリガー: 割引コードが
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- トリガー:
usage_limitに達した後に割引を再利用 - メッセージ: 使用制限は使用回数 / 割引コードの使用制限より少なくすることはできません
- トリガー:
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- トリガー: オンデマンドサブスクリプションに適用されたコード
- メッセージ: 割引クーポンはオンデマンドサブスクリプションには利用できません
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- トリガー: 無関係な製品に適用されたコード
- メッセージ: 割引クーポンはこの製品には利用できません
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- トリガー: 同じ
item_idがitems[]に2回出現 - メッセージ: アイテム配列に重複したitem_idsが指定されています
- トリガー: 同じ
-
DUPLICATE_METER_IDS_IN_REQUEST- トリガー: 同じメーターIDがリクエスト内に複数回出現
- メッセージ: 重複したメーターIDは許可されていません
-
EXCHANGE_RATE_NOT_FOUND- トリガー:
from → to通貨ペアのFXレートがない - メッセージ: 通貨から通貨への変換に必要な為替レートが見つかりません
- トリガー:
-
EXISTING_REFUND_REQUEST_PROCESSING- トリガー: 前の返金リクエストがまだ処理中
- メッセージ: ステータスが「保留」の返金リクエストがまだ処理中です
-
INACTIVE_LICENSE_KEY- トリガー: キーのステータス ≠
ACTIVE - メッセージ: ライセンスキーはアクティブではありません
- トリガー: キーのステータス ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- トリガー: 非アクティブなサブスクリプションでのプラン変更
- メッセージ: 非アクティブなサブスクリプションではプランの変更はサポートされていません
-
INSUFFICIENT_WALLET_FUNDS- トリガー: ウォレット残高 < デビット額
- メッセージ: ウォレットに十分な資金がありません
-
INTEGER_CONVERSION_FAILURE- トリガー: 整数 ↔ 文字列/小数の変換がサーバー側で失敗
- メッセージ: 整数変換に失敗しました
-
INTERNAL_SERVER_ERROR- トリガー: 捕捉されていない例外;詳細をサーバー側でログに記録する必要があります
- メッセージ: 公開メッセージなし(一般的な500)
-
INVALID_DISCOUNT_CODE- トリガー: コードが存在しない / 適用できない
- メッセージ: 無効な割引コード / 割引コードはカート内のいかなる製品にも適用できません
-
INVALID_PERCENTAGE- トリガー: 割引額が100%を超える(または10,000ベーシスポイント)
- メッセージ: 割引額は10000を超えることはできません / 割引コードの額は100%を超えることはできません
-
INVALID_QUANTITY- トリガー: 使用量ベースの価格設定に対して無効な数量が指定された
- メッセージ: 使用量ベースの価格製品では1つの数量のみが許可されています
-
INVALID_QUERY_PARAMS- トリガー: 相互排他的 / 不正なクエリパラメータ
- メッセージ: クエリパラメータはtime_frameまたは(start, end)のいずれかのみを含む必要があります
-
INVALID_REQUEST_BODY- トリガー: 不正なJSONまたはスキーマ違反
- メッセージ: リクエストボディが無効です。リクエストヘッダーとオブジェクトを確認してください。
-
INVALID_REQUEST_PARAMETERS- トリガー: 意味論的に誤り(例:過去の日付)
- メッセージ: next_billing_dateを過去の時間に変更することはできません
-
INVALID_SUGGESTED_PRICE- トリガー: PWYW価格 < 最低許可価格
- メッセージ: 提案された価格は最低価格より低くすることはできません。支払いたい金額の場合、価格は最低受け入れ金額と見なされます
-
INVALID_TAX_ID- トリガー: VAT/GST/TINの検証に失敗
- メッセージ: 税IDが無効です
-
LICENSE_KEY_LIMIT_REACHED- トリガー: アクティベーション = 制限
- メッセージ: ライセンスキーのアクティベーション制限に達しました
-
LICENSE_KEY_NOT_FOUND- トリガー: インスタンスIDまたはキーIDが無効
- メッセージ: ライセンスキーインスタンスが見つからないか、このライセンスキーに属していません
-
LINE_ITEM_FULLY_REFUNDED- トリガー: すでに完全に返金されたラインアイテムの返金を試みた
- メッセージ: ラインアイテム はすでに完全に返金されているため、さらに返金することはできません。
-
LINE_ITEM_NOT_FOUND- トリガー: 参照された支払いの一部ではないアイテムID
- メッセージ: ラインアイテム は支払いに見つかりません
-
LINE_ITEM_PRORATED- トリガー: プロレートされたラインに対して返金または更新を試みた
- メッセージ: ラインアイテム はプロレートされているため、返金できません
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- トリガー: 返金額 > 支払額(税含む)
- メッセージ: ラインアイテム の要求された返金額(税含む)は で、支払額 を超えています
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- トリガー: 最低閾値を下回る返金額
- メッセージ: ラインアイテム の要求された返金額は で、低すぎます
-
MAXIMUM_KEYS_REACHED- トリガー: メタデータ / カスタムフィールドが50ペアを超えた
- メッセージ: 50のキー-バリューペアを超えています
-
MERCHANT_NOT_LIVE- トリガー: ビジネスがまだテスト/サンドボックスモード
- メッセージ: マーチャントはライブではありません
-
METER_IS_DELETED- トリガー: 削除されたメーターを使用しようとした
- メッセージ: メーターはすでに削除されています
-
MISSING_ADDON_IDS- トリガー:
addon_idリストが空または不明なID - メッセージ: 1つ以上の製品IDが存在しません:
- トリガー:
-
MISSING_METER_IDS- トリガー: メーターIDリストが空または無効なIDを含む
- メッセージ: 1つ以上のメーターIDが存在しません:
-
MISSING_PRODUCT_INFORMATION- トリガー: 製品は存在するが必須情報が欠けている
- メッセージ: 製品 は存在しますが、他の必須情報が欠けているか無効です
-
NEGATIVE_BALANCE_ADJUSTMENT- トリガー: ウォレット残高を負にしようとした
- メッセージ: ウォレット残高を負にすることはできません
-
NO_ELIGIBLE_PAYMENT_METHODS- トリガー: フィルタリング後、何も残っていない
- メッセージ: 利用可能な支払い方法が見つかりません
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- トリガー: サブスクリプションベースのキーに有効期限を設定しようとした
- メッセージ: サブスクリプションベースのライセンスキーに有効期限を設定することはできません
-
NOT_FOUND- トリガー: すべての欠落リソースに対する一般的な404
- メッセージ: アイテムが見つかりません (またはより具体的なもの)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- トリガー: オンデマンドのプランスワップが許可されていない
- メッセージ: オンデマンドサブスクリプションのプラン変更はサポートされていません
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- トリガー: ビジネスが機能フラグオフ
- メッセージ: このビジネスにはオンデマンドサブスクリプションが有効になっていません
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- トリガー: 使用量ベースの請求でオンデマンドを使用しようとした
- メッセージ: オンデマンドサブスクリプションは使用量ベースの請求には対応していません
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- トリガー: PWYW製品の価格が欠落している
- メッセージ: 支払いたい金額の製品には金額が必須です
-
PAYMENT_ALREADY_REFUNDED- トリガー: 重複した返金
- メッセージ: この支払いはすでに返金されています
-
PAYMENT_HAS_BEEN_REFUNDED- トリガー: 支払いが完全に返金されている
- メッセージ: 支払いIDは完全に返金されています。
-
PAYMENT_NOT_SUCCEEDED- トリガー: 失敗した支払いの返金/処理を試みた
- メッセージ: 提供された支払いは成功していません
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- トリガー: キャンセル予定のサブスクリプションでプラン変更を試みた
- メッセージ: サブスクリプションはキャンセル予定です
-
PREVIOUS_PAYMENT_PENDING- トリガー: 前の支払いが非終端状態の間に請求を作成しようとした
- メッセージ: 前の支払いがまだ成功していないため、新しい請求を作成できません
-
PRODUCT_CART_EMPTY- トリガー: 空の製品カートが送信された
- メッセージ: product_cartが空です
-
PRODUCT_IS_DELETED- トリガー: 製品がソフト削除された
- メッセージ: メッセージなし
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- トリガー: 集計された返金額 > 支払額
- メッセージ: 計算された返金額が支払額より大きい
-
REFUND_WINDOW_EXPIRED- トリガー: 許可された返金ウィンドウの外
- メッセージ: 支払い作成から日後に返金を開始することはできません。[email protected]に連絡してください。
-
REQUEST_AMOUNT_BELOW_MINIMUM- トリガー: 金額 < 製品の最低
- メッセージ: 金額は製品の指定された最低金額より少なくすることはできません
-
SUBSCRIPTION_EXPIRED- トリガー: 請求が
ends_atを過ぎた - メッセージ: サブスクリプションが期限切れのため、新しい請求を作成できません
- トリガー: 請求が
-
SUBSCRIPTION_INACTIVE- トリガー: ステータス ≠
ACTIVE - メッセージ: サブスクリプションはアクティブではありません
- トリガー: ステータス ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- トリガー: 期待されるオンデマンドだが固定間隔を取得した
- メッセージ: サブスクリプションはすでにオンデマンドではありません
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- トリガー: サブスクリプションの支払いリトライが最大試行回数を超えた
- メッセージ: このサブスクリプションの最大リトライ制限である10回を超えました
-
TOO_MANY_REQUESTS- トリガー: 429レート制限
- メッセージ: メッセージなし
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- トリガー: 組み合わせたカート合計 < ゲートウェイの最低
- メッセージ: 支払いを処理するには の最低金額が必要です
-
UNABLE_TO_EDIT_PRIMARY_BRAND- トリガー: 通常のAPI経由でプライマリブランドを更新しようとした
- メッセージ: プライマリブランドはこのAPIエンドポイントを介して更新できません。
-
UNAUTHORIZED- トリガー: APIキーがないか無効なトークン/スコープ
- メッセージ: このアクションを実行する権限がありません
-
UNSUPPORTED_ACTION- トリガー: リソースタイプに対してサポートされていないアクション
- メッセージ: 使用量ベースのサブスクリプションのプラン変更はサポートされていません
-
UNSUPPORTED_BILLING_CURRENCY- トリガー: サブスクリプションはUSDに制限されている
- メッセージ: サブスクリプションには非USDの請求通貨はサポートされていません
-
UNSUPPORTED_COUNTRY- トリガー: 地域がまだサポートされていない
- メッセージ: 国 は現在サポートされていません
-
UNSUPPORTED_CURRENCY- トリガー: 製品またはアドオンの通貨が無効
- メッセージ: 通貨は現在サポートされていません / 現在サポートされているのはUSDとINRの製品のみ / アドオン価格にはUSDとINRのみがサポートされています / 請求通貨にはUSDまたはINRのみを要求できます / 通貨はサポートされていません / インドのカードサブスクリプションに対する予期しない通貨
-
UNSUPPORTED_DISCOUNT_TYPE- トリガー: フラット額の割引などがまだライブではない
- メッセージ: 現在はパーセンテージ割引コードのみがサポートされています
-
UNSUPPORTED_PAYMENT_CURRENCY- トリガー: コネクタに対して支払い通貨がブロックされている
- メッセージ: この取引に対してINRの取引はサポートされていません
-
UNSUPPORTED_TAX_CATEGORY- トリガー: 税カテゴリ文字列が列挙型にない
- メッセージ: カテゴリ は現在サポートされていません
-
UNSUCCESSFUL_PAYMENT_ID- トリガー: 支払いIDが失敗した支払いを参照している
- メッセージ: 支払いIDは失敗したステータスです。
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- トリガー: ゼロ額の支払いを返金しようとした
- メッセージ: ゼロ通貨額の支払いを返金することはできません
ベストプラクティス
- アプリケーション内でエラーを常に優雅に処理する
- 適切なエラーロギングを実装する
- エンドユーザーに適切なエラーメッセージを使用する
- 一時的なエラーに対してリトライロジックを実装する
- 未解決の問題についてはサポートに連絡する