エラー
HTTPコード
Restful
4xx範囲のステータスコード
解決しなければならないリクエストの問題を示しています。問題の解決後、安全に通話を再試行できます。
この種のコードの一般例は、認証エラー(HTTPステータスコード401)またはリクエスト本文検証エラー(HTTPステータスコード400)です。
5xx範囲のステータスコード
通常、接続のサーバー側に問題があることを示しています。構成の問題(加盟店または事業体に固有である可能性あり)から内部ネットワーク接続の問題にまで及びます。問題は一時的なものであり、単一の呼び出しにのみ影響を与える場合もあれば、長期間にわたってすべての単一の呼び出しに影響を与える場合もあります。通常、呼び出し人はこれらの問題を解決することはできません。
5xxエラーの最も一般的な例は、タイムアウトです。
エラー応答
Access Worldpay APIは、HTTPステータスコードとともに、可能な限りエラーをより詳細に説明する標準化された応答本文を返します。
Access Worldpay APIのエラードキュメントは、標準化されたJSON構造に従います。エラードキュメント例:
- トップレベルの名前付きエラー
- 説明的なエラーメッセージ
- 該当する場合、より詳細なエラーのオプションのコレクション
- エラーの特定に役立つ可能性のある特定のその他の情報
- フィールドへのJSONパスもメッセージと名前に含まれているため、エラーをリクエスト本文の特定値に関連付けることができます。検証エラーの最も一般的な例です
エラー名は、エラーのタイプまたはクラスを示します。同盟のAccess API全体のエラーには、同様の原因と同様の解決策があります。APIセットが大きくなると、名前が追加されるか、使用されなくなる可能性があります。同じことを表すために、API全体で一貫して名前を使用することを目指しています。エラーの自動処理が必要な場合、判断の基礎となる最も信頼できる要素はHTTPステータスコードとトップレベル名なのです。
注記:特定のAPI呼び出しのAPI参考文献には、一覧にすべてが含まれているわけではありませんが、表示される特定のエラー名の詳細が記載されています。
エラーメッセージは、機械可読ではなく人間が判読可能な形式であり、エラーに関する貴重なコンテキスト情報が含まれている場合があります。尚、特定の形式に従わず、長期にわたって安定した状態を維持するとは思わないでください。
一般的なエラー形式
{
"errorName": "errorName",
"message": "human readable message"
}
{ "errorName": "errorName", "message": "human readable message" }
フィールド | タイプ | 説明 |
---|---|---|
errorName | 文字列 | エラーを明確にし、意味を理解するための、機械と人間が判読可能な形式のエラータイプ。 |
message | 文字列 | エラーの修正アクションを提供する人間が判読可能なメッセージ。機械が判読する訳ではありません。 |
特定のエラー形式
フィールド検証エラーには、次のものも含まれていなければなりません。
追加のフィールド | タイプ | 説明 |
---|---|---|
jsonPath | 文字列 | このフィールドは、エラーに関連付けられたリクエスト本文内の要素の |
例
エラー応答例:
{
"errorName": "bodyIsNotJson",
"message": "You must provide valid json in the body of the request."
}
{ "errorName": "bodyIsNotJson", "message": "You must provide valid json in the body of the request." }
ネストされたエラー
フィールド検証を含むネストされたエラー応答例:
{
"errorName": "bodyDoesNotMatchSchema",
"message": "The json body provided does not match the expected schema",
"validationErrors": [
{
"errorName": "fieldMustBeNumber",
"message": "Field at path must be a number",
"jsonPath": "$.amount"
},
{
"errorName": "fieldIsMissing",
"message": "Field at path must be present",
"jsonPath": "$.description"
},
{
"errorName": "fieldHasInvalidValue",
"message": "Payment Instrument type must be card/wallet",
"jsonPath": "$.paymentInstrument.type"
}
]
}
{ "errorName": "bodyDoesNotMatchSchema", "message": "The json body provided does not match the expected schema", "validationErrors": [ { "errorName": "fieldMustBeNumber", "message": "Field at path must be a number", "jsonPath": "$.amount" }, { "errorName": "fieldIsMissing", "message": "Field at path must be present", "jsonPath": "$.description" }, { "errorName": "fieldHasInvalidValue", "message": "Payment Instrument type must be card/wallet", "jsonPath": "$.paymentInstrument.type" } ] }
標準エラー
この一覧は包括的ではありませんが、Accessサービスが返す可能性のある主なタイプのエラーをカバーしています。
トップレベルのエラー
エラー名 | HTTPコード | 説明 | 追加フィールド |
---|---|---|---|
headerIsMissing | 400 | リクエストのヘッダーがありません。このヘッダーはリクエストの必須要素です。尚、ヘッダーの名前はheaderName フィールドにあります。 | headerName : 文字列 |
headerHasInvalidValue | 400, 406, 415 | リクエストのヘッダーに期待値が含まれていません。このヘッダーには、予想される有効な値の1つが含まれていなければなりません。 | headerName : 文字列 |
bodyIsEmpty | 400 | リクエスト内の本文は空です。本文は空であってはなりません。 | |
bodyIsNotJson | 400 | リクエスト内の本文は有効なjsonではありません。この本文は有効なjsonでなければなりません。 | |
bodyDoesNotMatchSchema | 400 | フィールド検証エラーがありました。発生したエラーはvalidationErrors配列内にあります。 | validationErrors: フィールド検証エラーの配列 |
urlContainsInvalidValue | 400 | URLに、無効な1つまたは複数の値が含まれています。 | validationErrors: URLパスまたは照会パラメーター検証エラーの配列。 |
entityIsNotConfigured | 400 | 提供された加盟店事業体(入力として有効)は、使用するように構成されていません。 | |
paymentInstrumentIsNotSupported | 400 | 支払方法(入力として有効)が特定の加盟店事業体に対して構成されていません | |
underlyingPaymentInstrumentHasExpired | 400 | 基礎となる支払方法は、その詳細がリクエストで提供されていない場合、期限切れとなりました | |
currencyIsNotSupported | 400 | 通貨(有効な通貨ですが)は、特定の加盟店事業体で使用するように構成されていません | |
internalErrorOccurred | 500 | サービス内でエラーが発生しました(ダウンストリームサービスとの相互作用が原因である可能性があります)。 | |
serviceUnavailable | 503 | サービスは内部エラーなしで機能しますが、サービスはリクエストを実行できません |
フィールド検証エラー
エラー名 | 説明 |
---|---|
fieldIsMissing | 識別されたフィールドがありません。このフィールドは、リクエスト本文の必須要素です。 |
fieldMustBeString | 識別されたフィールドのタイプが正しくありません。このフィールドは文字列でなければなりません。 |
fieldMustBeNumber | 識別されたフィールドのタイプが正しくありません。このフィールドは数値でなければなりません。 |
fieldMustBeInteger | 識別されたフィールドのタイプが正しくありません。このフィールドは整数でなければなりません。 |
fieldMustBeBoolean | 識別されたフィールドのタイプが正しくありません。このフィールドはブール値でなければなりません。 |
fieldMustBeObject | 識別されたフィールドのタイプが正しくありません。このフィールドはJSONオブジェクトでなければなりません。 |
fieldMustBeArray | 識別されたフィールドのタイプが正しくありません。このフィールドは配列でなければなりません。 |
fieldIsNull | 識別されたフィールドがnullです。このフィールドは、リクエスト本文の必須要素です。 |
fieldIsEmpty | 識別されたフィールドが空です。このフィールドは、空であってはなりません。 |
fieldHasInvalidValue | 識別されたフィールドに期待値が含まれていません。このフィールドには、期待される有効な値の1つが含まれていなければなりません。 |
fieldIsNotAllowed | 識別されたフィールドは、リクエストで明示的に許可されていない場合に存在します。 |
numberIsTooSmall | 識別されたフィールドには、最小許容値を下回る数値が含まれています。 |
numberIsTooLarge | 識別されたフィールドには、最大許容値を超える数値が含まれています。 |
integerIsTooSmall | 識別されたフィールドには、最小許容値を下回る整数が含まれています。 |
integerIsTooLarge | 識別されたフィールドには、最大許容値を超える整数が含まれています。 |
stringIsTooShort | 識別されたフィールドに、許容される最小の長さを下回る文字列が含まれています。 |
stringIsTooLong | 識別されたフィールドに、最大許容長を超える文字列が含まれています。 |
stringFailedRegexCheck | 識別されたフィールドに、このフィールドの正規表現と一致しない文字列が含まれています。 |
panFailedLuhnCheck | 識別されたフィールドには、Luhnチェックに失敗したPANが含まれています。 |
dateHasInvalidFormat | 識別されたフィールドに、予想される日付形式と一致しない日付が含まれています。 |