验证码 API 的 402、429、503 错误处理
区分余额不足、请求限额与服务故障,结合 Retry-After 和固定幂等键进行有上限的重试。
适用于授权自动化测试、风控 QA 与浏览器集成。请仅在有权测试的站点和业务流程中使用。
同时读取 HTTP 状态和错误码
平台错误体使用 {"error":"CODE"},X-Request-ID 响应头用于定位请求。可在本地与 taskId 一起保存,不要在公开日志中分享凭据或完整任务载荷。
| 响应 | 含义与下一步 |
|---|---|
| 400 INVALID_TASK | 修正字段与类型;重试不能修好错误 JSON。 |
| 401 / 403 | 检查 Key 有效期、权限、IP 限制与账户状态。 |
| 402 INSUFFICIENT_BALANCE | 可用余额不足,充值前也要考虑已有预占。 |
| 409 IDEMPOTENCY_CONFLICT | 对比原始键与完整请求体。 |
| 429 | 降低请求频率或并发,遵守 Retry-After。 |
| 503 TYPE_UNAVAILABLE | 查询实时可用性,不持续冲击停用类型。 |
| 503 DATABASE_BUSY | 使用原键与请求体重试,提交结果可能需要核对。 |
不同限额需要不同处理
KEY_CONCURRENCY_LIMIT 表示要等待已有任务结束。KEY_SPEND_LIMIT 是滚动消费限制,密集重试不会恢复容量。KEY_QUOTA_EXHAUSTED 是 403 总额度限制,与临时 429 不同。完整信息见 API 错误表。
有上限地重试
只重试网络故障、适合等待的限流与可重试服务端故障。遵守 Retry-After(秒数或 HTTP 日期),限制次数;所需等待超过客户端预算就停止。POST 保持原始请求体与幂等键;GET 继续查同一个 ID。
任务失败属于另一个层面
查询任务可能返回 HTTP 200,但 status=failed 或 status=uncertain。检查状态及公开错误,不只看 HTTP 码。failed/cancelled 结束流程;uncertain 需要核对且可能仍预占资金。添加自动重试前先阅读安全轮询。
相关文档
最近更新: