错误
HTTP 代码
Access Worldpay API 遵循 Restful
在 4xx 范围内的状态码
这些代码表示请求存在问题,您必须加以解决。在解决问题之后,您可以安全地重试调用。
这类代码的常见示例是身份验证错误(HTTP 状态码 401)或请求正文验证错误(HTTP 状态码 400)。
在 5xx 范围内的状态码
这些代码一般表示连接的服务器侧有问题。这些问题的范围包括配置问题(可能针对具体商户或实体)到内部网络连接问题。这些问题可能是暂时的并且只会影响单个调用,也可能是长期的,会在很长一段时间内影响每个调用。通常,调用者无法自行解决这些问题。
5xx 错误最常见的示例是超时。
错误响应
随着 HTTP 状态码,Access Worldpay API 会在可行时返回一个标准化的响应正文,以便更详细地描述错误。
Access Worldpay API 的错误文档符合标准化 JSON 结构要求,其中包括:
- 顶层命名错误
- 描述性错误消息
- 可选用的更详细错误集合(如适用)
- 有助于识别错误的任何具体附加信息
- 在消息和名称中还包括了字段的 JSON 路径,让您能够将错误与请求正文中的具体值关联起来。这最常见于验证错误
错误名称表示错误的类型或类别。在 Access API 中,相同名称的错误具有相似的原因以及类似的解决方案。随着 API 集的发展,名称会被添加,或者不再使用。我们的目的是在整个 API 中一致地使用名称来表示相同的事物。在需要自动处理错误的情况下,HTTP 状态码和顶层名称是最可靠的决策依据。
注释:特定 API 调用的 API 参考详细描述了一些具体错误名称,如您所见,但列表并非穷尽所有名称。
错误消息旨在供人类而不是机器阅读,并且可能包含有关错误的有价值的上下文信息。它们不遵循特定的格式,也无法依赖其随着时间保持稳定。
通用错误格式
Copied!
{
"errorName": "errorName",
"message": "human readable message"
}
{ "errorName": "errorName", "message": "human readable message" }
字段 | 类型 | 描述 |
---|---|---|
errorName | 字符串 | 机器和人类可读的错误类型,用于对错误的澄清和语义理解。 |
message | 字符串 | 人类可读消息,提供对错误的纠正措施。这不是为了供机器使用。 |
特定错误格式
字段验证错误还必须包含:
附加字段 | 类型 | 描述 |
---|---|---|
jsonPath | 字符串 | 该字段代表与错误关联的请求正文内的元素的 |
示例
示例错误响应:
Copied!
{
"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." }
嵌套错误
包含字段验证的嵌套错误响应示例:
Copied!
{
"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 | 请求中的头文件不包含期望的值。该头文件必须包含其中一个期望的有效值。 | headerName : 字符串 |
bodyIsEmpty | 400 | 请求内的正文为空。正文必须非空。 | |
bodyIsNotJson | 400 | 请求内的正文不是有效 json。该正文必须为有效 json。 | |
bodyDoesNotMatchSchema | 400 | 出现字段验证错误。出现的错误位于 validationErrors 阵列之内。 | validationErrors:字段验证错误阵列 |
urlContainsInvalidValue | 400 | 该 URL 包含无效值。 | validationErrors:URL 路径阵列或查询参数验证错误。 |
entityIsNotConfigured | 400 | 所提供的商户实体(输入时有效)未按使用配置。 | |
paymentInstrumentIsNotSupported | 400 | 支付工具(输入时有效)未按给定商户实体配置 | |
underlyingPaymentInstrumentHasExpired | 400 | 当请求中没有提供相关支付工具的详情时,该基本支付工具已过期 | |
currencyIsNotSupported | 400 | 货币(在其仍然是有效货币时)未按供给定商户实体使用而配置 | |
internalErrorOccurred | 500 | 服务期间出错(可能由于与下游服务的互动)。 | |
serviceUnavailable | 503 | 即使服务功能没有内部错误,服务也不能满足请求 |
字段验证错误
错误名称 | 描述 |
---|---|
fieldIsMissing | 已识别的字段缺失。该字段是请求正文的必需元素。 |
fieldMustBeString | 已识别的字段不是正确类型。该字段必须为字符串。 |
fieldMustBeNumber | 已识别的字段不是正确类型。该字段必须为数字。 |
fieldMustBeInteger | 已识别的字段不是正确类型。该字段必须为整数。 |
fieldMustBeBoolean | 已识别的字段不是正确类型。该字段必须为布尔值。 |
fieldMustBeObject | 已识别的字段不是正确类型。该字段必须为 JSON 对象。 |
fieldMustBeArray | 已识别的字段不是正确类型。该字段必须为阵列。 |
fieldIsNull | 已识别的字段无效。该字段是请求正文的必需元素。 |
fieldIsEmpty | 已识别的字段为空。该字段必须非空。 |
fieldHasInvalidValue | 已识别字段不包含期望值。该字段必须包含其中一个期望的有效值。 |
fieldIsNotAllowed | 当请求中明确不允许出现已识别字段时,该字段却存在。 |
numberIsTooSmall | 已识别字段包含小于最小允许值的数字。 |
numberIsTooLarge | 已识别字段包含大于最大允许值的数字。 |
integerIsTooSmall | 已识别字段包含小于最小允许值的整数。 |
integerIsTooLarge | 已识别字段包含大于最大允许值的整数。 |
stringIsTooShort | 已识别字段包含小于最小允许长度的字符串。 |
stringIsTooLong | 已识别字段包含大于最大允许长度的字符串。 |
stringFailedRegexCheck | 已识别字段包含与该字段的正则表达式不匹配的字符串。 |
panFailedLuhnCheck | 已识别字段包含 Luhn 校验失败的 PAN。 |
dateHasInvalidFormat | 已识别字段包含与期望日期格式不匹配的日期。 |