主题
状态、错误与重试
支付状态
下单字段为 orderState,查询及通知字段为 state。
| 值 | 含义 |
|---|---|
| 0 | 订单生成 |
| 1 | 支付中 |
| 2 | 支付成功 |
| 3 | 支付失败 |
| 4 | 已撤销(枚举状态,不代表提供撤销 API) |
| 5 | 已退款 |
| 6 | 已关闭 |
退款和转账使用各自状态:0 创建、1 处理中、2 成功、3 失败、4 关闭。不要把不同单据的相同数字混为同一业务状态。
业务错误
开放接口通常返回 HTTP 200 和 code=1,msg=错误描述,系统异常统一返回“系统异常,请稍后重试”。当前没有逐种业务错误的独立数值码,不要编造错误码或依赖渠道错误文案作为唯一资金判定。
| 常见提示 | 处理方式 |
|---|---|
| 参数有误! / 验签失败 | 检查商户、应用、密钥及签名原文 |
| 暂不支持该签名类型 | 使用 MD5 |
| 商户订单已存在 | 用原商户订单号查询,不重新扣款 |
| 支付方式不存在 / 未配置可用通道 | 在管理端核对应用支付通道和实际渠道能力 |
| 订单不存在 | 检查订单标识及商户/应用归属 |
| 当前订单不可关闭 | 查询状态;已支付需退款 |
| 支付订单具有在途退款申请 | 查询原退款单,等待终态 |
| 上游支付结果未知,请稍后查询订单状态 | 继续查询原单,不当作明确支付失败 |
渠道错误信息通过 errCode、errMsg 返回,接口 code=0 仍可能携带资金失败状态。支付调起成功同样不代表已扣款。
超时和补单
网关对支付中订单前六次快速查单,之后按持久化任务每五分钟继续查询。请求中断、消息丢失或 worker 中断均通过恢复任务继续处理;订单过期关闭前先查渠道结果。商户查询读取本地状态,短时间内仍可能看到处理中。
商户应设置合理的轮询间隔并保留原业务单号,通过查询和验签通知收敛状态。不要无限高频重试资金创建接口。退款未知时由后台继续查原退款号;调用退款查询获取最终结果。