错误处理

API 错误码详解和处理建议

6 分钟阅读
更新于 2025/8/13
错误码API调试

本文档描述了 Payve API 的错误响应格式和所有错误码的详细说明。正确理解和处理这些错误对于构建健壮的集成至关重要。

错误响应格式

所有 API 错误响应都遵循统一的 JSON 格式:

响应字段说明

字段类型说明
codestring错误码,用于程序识别
messagestring人类可读的错误描述
detailsobject额外的错误详情(可选)
requestIdstring请求 ID,用于追踪和调试
timestampstring错误发生时间(ISO 8601)

HTTP 状态码

我们使用标准的 HTTP 状态码来表示请求的结果:

状态码含义场景
200成功请求成功处理
201已创建资源创建成功(如新订单)
400错误请求请求参数错误或格式不正确
401未授权缺少或无效的认证凭据
403禁止访问权限不足
404未找到请求的资源不存在
409冲突资源状态冲突(如重复订单)
429请求过多触发速率限制
500服务器错误服务器内部错误
503服务不可用服务暂时不可用

错误码列表

认证相关错误(1xxx)

1001401

INVALID_API_KEY

API 密钥无效或已过期

解决方案:检查 API 密钥是否正确,确认密钥未被撤销或过期

1002401

MISSING_AUTH_HEADER

缺少认证头部

解决方案:在请求头中添加 Authorization: Bearer <token>

1003401

TOKEN_EXPIRED

JWT 令牌已过期

解决方案:重新获取新的访问令牌

1004403

INSUFFICIENT_PERMISSIONS

权限不足

解决方案:检查 API 密钥的权限设置,确保有执行该操作的权限

支付相关错误(2xxx)

2001400

INVALID_AMOUNT

支付金额无效

解决方案:确保金额为正数且不超过最大限额

2002400

AMOUNT_TOO_SMALL

支付金额低于最小限额

解决方案:查看对应币种和网络的最小金额要求,确保金额满足最小限制

2003400

UNSUPPORTED_CURRENCY

不支持的币种

解决方案:查看支持的币种列表,使用支持的币种代码

2004400

ORDER_EXPIRED

支付订单已过期

解决方案:创建新的支付订单,订单有效期为 30 分钟

2005404

ORDER_NOT_FOUND

订单不存在

解决方案:检查订单 ID 是否正确

2005409

DUPLICATE_ORDER

订单号重复

解决方案:使用唯一的商户订单号,或查询已存在的订单

2006400

PAYMENT_ALREADY_COMPLETED

订单已完成支付

解决方案:查询订单状态,避免重复支付

钱包相关错误(3xxx)

3001400

INSUFFICIENT_BALANCE

余额不足

解决方案:检查账户余额,确保有足够的资金进行提现

3002400

INVALID_ADDRESS

钱包地址无效

解决方案:检查地址格式是否正确,确保地址与币种网络匹配

3003400

WITHDRAWAL_LIMIT_EXCEEDED

超出提现限额

解决方案:降低提现金额或联系客服提高限额

3004403

ADDRESS_NOT_WHITELISTED

地址不在白名单中

解决方案:在商户后台添加提现地址到白名单

系统相关错误(4xxx)

4001429

RATE_LIMIT_EXCEEDED

请求频率超限

解决方案:降低请求频率,查看响应头中的 X-RateLimit-* 了解限制详情

4002503

SERVICE_UNAVAILABLE

服务暂时不可用

解决方案:稍后重试,查看状态页面了解服务状态

4003500

INTERNAL_ERROR

内部服务器错误

解决方案:联系技术支持,提供请求 ID 以便追踪问题

错误处理最佳实践

1. 实现重试机制

对于临时性错误(如网络问题),实现指数退避重试:

2. 记录错误信息

始终记录完整的错误响应,包括请求 ID:

catch (error) {
  console.error('API Error:', {
    code: error.code,
    message: error.message,
    requestId: error.requestId,
    timestamp: error.timestamp
  });
}

3. 用户友好的错误提示

将技术错误转换为用户可理解的提示:

function getUserMessage(errorCode) {
  const messages = {
    '2001': '支付金额格式不正确,请重新输入',
    '2003': '订单已过期,请重新下单',
    '3001': '余额不足,请充值后再试',
    // ...
  };
  return messages[errorCode] || '操作失败,请稍后重试';
}

4. 监控错误趋势

跟踪错误发生频率,及时发现系统问题:

  • 设置错误率告警
  • 分析错误模式
  • 定期审查错误日志

联系支持

如果您遇到未列出的错误码或需要技术协助:

技术支持

在线客服:工作日 9:00-18:00
提交工单:merchant.payve.io/support

请提供请求 ID、错误码和相关日志以加快问题解决。