回调与错误码
订单是异步履约的:创建订单只代表受理成功,最终结果通过回调或查询获得。本页说明回调格式、重试策略与所有错误码。
订单到达终态(success / failed / refunded)时,平台向 notifyUrl 发送 POST 请求,Content-Type 为 application/json:
{ "orderId": "T2026092912345678", "outOrderNo": "ORD20260929001", "goodsId": "G100001", "quantity": 1, "status": "success", "cards": [], "failReason": "", "finishedAt": "2026-09-29T10:00:08+08:00"}回调请求头同样携带 X-App-Id、X-Timestamp、X-Nonce、X-Sign,签名算法与请求一致(payload 为 body 原文),请务必验签后再处理。
您需要在 5 秒内返回 HTTP 200,且响应体为字符串 success;其他响应均视为未送达。
- 未收到
success时,按 1 分钟、5 分钟、30 分钟、2 小时、6 小时、24 小时共重试 6 次; - 重试期间可主动调用查询订单获取状态;
- 回调可能重复到达,请按
outOrderNo做幂等处理; - 6 次重试后仍失败,可在控制台「订单管理」中手动重发回调。
| code | 含义 | 处理建议 |
|---|---|---|
0 | 成功 | — |
1001 | 签名错误 | 检查 AppSecret 与 stringToSign 的拼接顺序,确认 body 未被二次格式化 |
1002 | 时间戳过期 | 校准服务器时间,误差需在 300 秒内 |
1003 | IP 未在白名单 | 在控制台「应用管理」中添加出口 IP |
1004 | 请求过于频繁 | 降低频率,默认限制 50 次/秒;需要更高额度请提交工单 |
2001 | 商品不存在 | 核对 goodsId |
2002 | 商品已下架 | 重新拉取商品列表 |
2003 | 库存不足 | 稍后重试或更换商品 |
3001 | 余额不足 | 前往控制台充值 |
3002 | 重复订单号 | outOrderNo 已存在,接口返回原订单,请勿视为失败 |
3003 | 充值账号格式错误 | 按商品的 accountRule 校验后重试 |
4001 | 充值失败,已退款 | 查看 failReason,可更换商品重试 |
5000 | 系统繁忙 | 3 秒后重试;连续失败请联系技术支持并提供 requestId |
沙箱环境会真实扣费吗?
Section titled “沙箱环境会真实扣费吗?”不会。沙箱订单在 10 秒内自动流转为成功或失败(账号以 1370000 开头的直充订单固定失败,用于验证失败流程),不产生费用。
卡密如何解密?
Section titled “卡密如何解密?”cardPwd 使用 AES-128-CBC 加密后 Base64 编码;密钥为 AppSecret 的前 16 位,IV 为 AppId 的前 16 位(不足 16 位右侧补 0)。解密后请勿明文落库。
直充多久到账?
Section titled “直充多久到账?”话费、会员类通常 10 秒内到账;运营商维护期间可能延迟至 24 小时,此时订单保持 processing,请以回调为准。
订单一直是 processing 怎么办?
Section titled “订单一直是 processing 怎么办?”超过 30 分钟未到终态,请联系技术支持并提供 orderId,我们会向上游核实并在处理后补发回调。
如何申请提高频率限制?
Section titled “如何申请提高频率限制?”在控制台提交工单,说明业务峰值(每秒请求数)与持续时间,通常 1 个工作日内调整。