订单状态与错误码
代收订单状态
| 状态 | 含义 | 终态 |
|---|---|---|
CREATED | 已创建 | |
PROCESSING | 支付中 | |
SUCCESS | 成功 | ✓ |
CLOSED | 关闭 | ✓ |
EXPIRED | 过期 | ✓ |
FAILED | 失败 | ✓ |
代付订单状态
| 状态 | 含义 | 终态 |
|---|---|---|
CREATED | 已创建 | |
FROZEN | 已冻结,待审批/处理 | |
APPROVED | 审批通过 | |
SUBMITTING | 提交中 | |
SUBMITTED | 已提交通道 | |
SUCCESS | 成功 | ✓ |
FAILED | 失败 | ✓ |
REJECTED | 审批/风控拒绝 | ✓ |
怎么判断"成功"
终态里只有 SUCCESS 是成功:代收 CLOSED/EXPIRED/FAILED 都没收到钱;代付成功还需 reversed_at 为空(SUCCESS 但 reversed_at 非空 = 已被冲正,按退款处理)。终态不再变化(代付冲正不改 status,以 reversed_at 体现)。
错误码
响应顶层 code 为字符串,"0" 成功,其余为错误:
| code | 含义 | 适用 |
|---|---|---|
0 | 成功 | 全部 |
1001 | 参数缺失/格式错误(含币种不支持、产品不可用、通道不可用;代付金额超限/低于下限也归 1001) | 全部 |
1002 | 验签失败 | 全部 |
1003 | 时间窗超出(与服务器相差 > 5 分钟) | 全部 |
1004 | nonce 重复(疑似重放) | 全部 |
1005 | IP 不在白名单 | 全部 |
1006 | 商户 / App / 公钥状态异常 | 全部 |
1007 | 请求过于频繁(HTTP 429) | 全部 |
2001 | 订单号已存在且关键参数不一致(参数一致则返回原订单) | 下单 |
2002 | 订单不存在 | 查询 |
2003 | 代收:金额超限/低于下限;代付:订单状态不允许该操作 | 代收下单 / 代付 |
2006 | bank_code 无效或不支持(不在平台启用码表内) | 代付下单 |
3001 | 余额不足 | 代付下单 |
3002 | 命中风控 / 收款人黑名单 | 代付下单 |
5000 | 系统内部错误(可重试) | 全部 |
判断口径
请以响应体 code 判断业务结果,不要只看 HTTP 状态(鉴权类多为 401、限流 429、冲突 409、5000 为 500)。 任何未识别的 code 一律按系统错误处理(可重试或联系平台),不要据此做业务分支。