code 值,以及哪些失败可以安全重试。
请优先依据状态码判断;存在 code 时,再依据它判断,因为消息文本可能会变化。
状态码
错误响应体
错误响应体的结构并不统一,因此请进行防御式解析。具体结构取决于 endpoint 系列:500 可能完全没有 JSON 响应体,因此请处理无法解析的响应体。
API 密钥错误
应用被删除后的几分钟内,API 会返回
application_deleted;之后则会像对待任何错误密钥一样拒绝该密钥。
请不要重试:应用及其密钥均已删除。
有关密钥及其限制的工作原理,请参阅 API 身份验证 和 API 密钥。
额度不足
各 API 系列报告余额不足的方式各不相同:
签订合同的客户在其所属组织的付费服务被暂停期间,创建会话会返回
403,并附带 "code": "contract_billing_suspended"。
沙盒应用 从不计费,因此不进行这些检查。
错误代码
这些code 值是稳定的,因此您可以据此进行分支判断。多数情况下,它与 detail 并列返回;在数字身份钱包验证中,错误代码是 error 的值。
访问与计费
请求与幂等性
银行、电话与风险检查
企业验证(KYB)
数字身份钱包
报告与案件
电子签名
创建会话时,下列证件问题会以出错字段的值返回,状态码为
400,例如 {"sign": "signature_document_changed"}:
Webhook
重试与幂等性
有些失败可以安全地重复,有些则不行:429:等待Retry-After请求头,然后重试。502和503:当端点的参考文档说明未产生计费时(电话、邮箱、银行和风险检查均是如此),使用退避策略重试。POST /v3/database-validation/返回502:先逐条读取每个validation_errors条目,因为仅此状态码并不代表临时故障。- 删除操作返回
503:重复发送相同请求,直到返回200。 - 其他
4xx:先修正请求,因为同一请求会以相同方式再次失败。
POST /v3/aml/ 和数字身份钱包验证接受长度不超过 255 个字符的 Idempotency-Key 请求头。使用相同密钥和相同请求体重复请求时,会重放已存储的响应,因此操作和扣费只执行一次。使用相同密钥但请求体不同,会返回 409;第一个请求仍在处理时,钱包端点会返回带有 Retry-After 的 409。
POST /v3/session/ 没有幂等性密钥,因此如果创建会话时超时,请先按 vendor_data 列出您的会话,再创建新的会话。