参考
错误码
开放支付 API 返回的所有 error_code 及处理方式。
错误响应带真实 HTTP 状态码和稳定的 error_code:
json
{ "trace_id": "1a2b3c4d5e6f7a8b", "status_code": 422, "message": "The amount exceeds the app's payment limit.", "error_code": "LIMIT_EXCEEDED" }请求与签名
error_code |
HTTP | 含义 | 处理 |
|---|---|---|---|
INVALID_REQUEST |
400 | 字段缺失或不合法,message 会说明;也包括缺少 / 格式错误的 Idempotency-Key、请求体超过 64 KB |
修正请求 |
SIGNATURE_INVALID |
401 | 缺少请求头、Key 不存在 / 已吊销 / 已过期、签名错误、时间戳超出 ±5 分钟或 nonce 重复 | 见常见签名错误 |
REPLAY_PROTECTION_UNAVAILABLE |
503 | 校验 nonce 时出现临时故障 | 换新 nonce 重试 |
IDEMPOTENCY_KEY_REUSED |
409 | 相同 Idempotency-Key,请求体不同 |
不同操作使用新的 Key |
IDEMPOTENCY_IN_PROGRESS |
409 | 同一 Key 的首个请求仍在处理 | 稍后重试 |
TOO_MANY_REQUESTS |
429 | 超过频率限制 | 等待 Retry-After 秒 |
INTERNAL_ERROR |
500 | 服务异常 | 退避重试;带上 trace_id 联系客服 |
App 与账号
error_code |
HTTP | 含义 | 处理 |
|---|---|---|---|
APP_UNAVAILABLE |
403 | App 被停用 / 下线、开发者被停用,或未发布 App 发起生产订单 | 在控制台查看 App 状态 |
PAYMENT_NOT_ENABLED |
403 | 支付未开通或已被停用 | 在控制台申请 / 联系客服 |
PAYOUT_NOT_ALLOWED |
403 | 条款中不包含付款功能 | 重新申请并勾选付款 |
DEVELOPER_WALLET_UNAVAILABLE |
403 | 你的钱包被冻结或不存在 | 联系客服 |
SANDBOX_USER_ONLY |
403 | 沙箱订单的对象不是测试用户 | 添加为测试用户,或使用生产环境 |
订单
error_code |
HTTP | 含义 | 处理 |
|---|---|---|---|
INVALID_AMOUNT |
422 | 非正数、超过 2 位小数,或不大于手续费 | 修正金额 |
CURRENCY_NOT_SUPPORTED |
422 | 币种不是 USDT |
传 USDT |
LIMIT_EXCEEDED |
422 | 超过单笔、日或月限额 | 降低金额、次日再试或申请提高限额 |
ORDER_ALREADY_EXISTS |
409 | out_order_no / out_refund_no 在本环境已使用 |
查询该订单,而不是重新创建 |
ORDER_NOT_FOUND |
404 | 本 App 在本环境下没有该订单 | 检查 ID 以及使用的 Key |
INVALID_STATE |
409 | 如关闭已支付的收款单 | 改为退款 |
USER_NOT_AUTHORIZED |
422 | 该 sub 从未登录你的 App、已取消授权或账号不可用 |
请用户重新用 HTP 登录 |
SELF_PAYMENT_FORBIDDEN |
422 | 向你自己的开发者账号收款或付款 | 使用其他账号 / 测试用户 |
REFUND_NOT_ALLOWED |
409 | 收款单不是 PAID |
只能对已支付订单退款 |
REFUND_AMOUNT_EXCEEDED |
422 | 超过 amount − refunded_amount |
降低退款金额 |
INSUFFICIENT_BALANCE |
422 | 你的钱包余额不足以退款或付款 | 为钱包充值 |
用户在收银台看到的错误
你不会收到这些错误,但用户可能会向你反馈:
| 错误码 | 对用户的含义 |
|---|---|
CHECKOUT_EXPIRED |
订单已过期或已被关闭 —— 请重新下单 |
CHECKOUT_ALREADY_PAID |
已支付 —— 请检查回调 / 订单状态 |
CHECKOUT_PAYER_MISMATCH |
该订单指定了其他付款人(payer_sub) |
INSUFFICIENT_WALLET_BALANCE |
用户余额不足,需要充值 |
WALLET_UNAVAILABLE |
用户钱包被冻结 |
LIMIT_EXCEEDED |
创建到确认期间达到了你的限额 |
INCORRECT_PIN / TOO_MANY_PIN_ATTEMPTS |
PIN 错误;错 4 次锁定 1 分钟 |