Translation disclaimer

Documentation is written in English and subsequently translated. This page, therefore, might not have the most up-to-date content. If any questions arise relating to the accuracy of the translated content, please refer to the English version of the page.

Menu

错误

HTTP 代码

Access Worldpay API 遵循 RestfulAPI 原则,使用 HTTP 状态码来以符合标准的方式传递关于错误的信息。

在 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字符串机器和人类可读的错误类型,用于对错误的澄清和语义理解。
message字符串人类可读消息,提供对错误的纠正措施。这不是为了供机器使用

特定错误格式

字段验证错误还必须包含:

附加字段类型描述
jsonPath字符串该字段代表与错误关联的请求正文内的元素的JSONPath

示例

示例错误响应:

Copied!
{
  "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"
    }
  ]
}

标准错误

此列表并不全面,但涵盖了 Access 服务可能返回的主要错误类型。

顶层错误

错误名称HTTP 代码描述附加字段
headerIsMissing400请求中的头文件缺失。该头文件是请求的必需元素。该头文件的名称位于 headerName 字段中。headerName: 字符串
headerHasInvalidValue400、406、415请求中的头文件不包含期望的值。该头文件必须包含其中一个期望的有效值。headerName: 字符串
bodyIsEmpty400请求内的正文为空。正文必须非空。
bodyIsNotJson400请求内的正文不是有效 json。该正文必须为有效 json。
bodyDoesNotMatchSchema400出现字段验证错误。出现的错误位于 validationErrors 阵列之内。validationErrors:字段验证错误阵列
urlContainsInvalidValue400该 URL 包含无效值。validationErrors:URL 路径阵列或查询参数验证错误。
entityIsNotConfigured400所提供的商户实体(输入时有效)未按使用配置。
paymentInstrumentIsNotSupported400支付工具(输入时有效)未按给定商户实体配置
underlyingPaymentInstrumentHasExpired400当请求中没有提供相关支付工具的详情时,该基本支付工具已过期
currencyIsNotSupported400货币(在其仍然是有效货币时)未按供给定商户实体使用而配置
internalErrorOccurred500服务期间出错(可能由于与下游服务的互动)。
serviceUnavailable503即使服务功能没有内部错误,服务也不能满足请求

字段验证错误

错误名称描述
fieldIsMissing已识别的字段缺失。该字段是请求正文的必需元素。
fieldMustBeString已识别的字段不是正确类型。该字段必须为字符串。
fieldMustBeNumber已识别的字段不是正确类型。该字段必须为数字。
fieldMustBeInteger已识别的字段不是正确类型。该字段必须为整数。
fieldMustBeBoolean已识别的字段不是正确类型。该字段必须为布尔值。
fieldMustBeObject已识别的字段不是正确类型。该字段必须为 JSON 对象。
fieldMustBeArray已识别的字段不是正确类型。该字段必须为阵列。
fieldIsNull已识别的字段无效。该字段是请求正文的必需元素。
fieldIsEmpty已识别的字段为空。该字段必须非空。
fieldHasInvalidValue已识别字段不包含期望值。该字段必须包含其中一个期望的有效值。
fieldIsNotAllowed当请求中明确不允许出现已识别字段时,该字段却存在。
numberIsTooSmall已识别字段包含小于最小允许值的数字。
numberIsTooLarge已识别字段包含大于最大允许值的数字。
integerIsTooSmall已识别字段包含小于最小允许值的整数。
integerIsTooLarge已识别字段包含大于最大允许值的整数。
stringIsTooShort已识别字段包含小于最小允许长度的字符串。
stringIsTooLong已识别字段包含大于最大允许长度的字符串。
stringFailedRegexCheck已识别字段包含与该字段的正则表达式不匹配的字符串。
panFailedLuhnCheck已识别字段包含 Luhn 校验失败的 PAN。
dateHasInvalidFormat已识别字段包含与期望日期格式不匹配的日期。