Skip to main content
本文列出了 OpenAPI 可能返回的错误码及处理建议。

通用响应格式

所有接口在出错时返回统一格式:
{
  "code": 1001015,
  "msg": "param.check.failed",
  "data": null
}
字段类型说明
codeInteger错误码,200 表示成功
msgString错误信息(i18n 消息键)
dataObject / null错误时通常为 null

签名与鉴权错误

错误码错误信息说明处理建议
1001015param.check.failed参数校验失败检查请求参数是否符合规范
1001016sign.invalidRSA 签名验证失败检查签名算法和私钥是否正确
1001025auth.merchant.sign.params.missing缺少必填的签名请求头检查 4 个签名头是否全部携带
1001026auth.merchant.id.invalid商户 ID 格式无效检查 X-Merchant-Id 是否正确
1001027auth.merchant.not.found.or.key.missing商户不存在或公钥未配置检查商户 ID 或上传 RSA 公钥
1001028auth.timestamp.format.invalid时间戳格式无效确保 X-Timestamp 为 Unix 毫秒时间戳
1001029auth.timestamp.expired时间戳超出有效窗口(±2 分钟)校准服务器时间
1001038ip.not.in.whitelist客户端 IP 不在白名单内将当前服务器 IP 加入白名单

业务错误

错误码错误信息说明处理建议
1001001merchant.is.disabled商户已被禁用联系平台处理
1001004order.orderAmount.must.be.greater.than.or.equal.to.0.01订单金额必须大于等于 0.01检查金额参数
1001005order.already.exists商户交易号重复使用新的 merchant_transaction_id
1001008order.already.paid.or.canceled订单已支付或已取消检查订单状态,不可重复操作
1001009order.not.exists订单不存在检查交易号是否正确
1001010order.expired订单已过期订单超时未支付,需重新创建
1001014transaction.not.exists交易不存在检查交易 ID 是否正确
1001018order.cannot.be.refunded当前订单状态不允许退款检查订单状态是否可退款
1001019refund.amount.exceeds.order.amount退款金额超出可退金额调整退款金额
1001020order.has.transaction.in.processing订单有交易正在处理中等待当前交易完成后重试
1001024transaction.repeat.submit重复提交交易等待上次交易结果
1001036pay.in.amount.out.of.range入金额度超出范围检查金额限制
1001037pay.in.daily.limit.exceeded入金日限额超限次日重试

系统错误

错误码错误信息说明处理建议
400error.bad.request请求格式错误检查请求体格式
401error.unauthorized未授权检查认证信息
403error.forbidden禁止访问检查权限配置
404error.not.found资源不存在检查请求路径
500error.internal.server.error系统内部错误稍后重试或联系技术支持
900error.repeated.requests重复请求(防重放)更换 Nonce 后重试
999error.unknown未知错误联系技术支持
1000error.busy系统繁忙(Nonce 去重命中)更换 Nonce 后重试

重试策略

对于可重试的错误(如系统错误),建议:
类型建议
幂等接口相同参数重试(平台保证幂等)
非幂等接口先查询状态确认,再决定是否重试
重试间隔1s → 3s → 5s(指数退避)
最大重试次数3 次

错误处理最佳实践

  1. 记录日志:记录每次 API 调用的请求和响应,方便排查问题
  2. 签名错误优先排查:检查时间同步和签名算法实现
  3. 根据错误码分类处理:4xx/9xx 检查请求参数,5xx 等待后重试
  4. 提供降级方案:支付异常时不应阻塞用户体验

相关页面