PAYATHON 2026

支付宝沙箱环境提示“系统太忙”导致无法支付是什么原因?

支付老李

结论

如果同一套代码和配置昨天还能完成支付,今天二维码页面和沙箱账号登录页面却同时提示”系统太忙”,问题通常不在二维码生成代码本身。常见原因包括:

  1. 支付宝沙箱服务暂时异常或访问拥堵。
  2. 沙箱买家账号、测试数据或登录状态失效。
  3. 使用了已经过期、关闭或状态异常的二维码。
  4. 请求已被网关拒绝,但程序只展示二维码,没有检查接口返回的错误信息。
  5. 本地时间、沙箱网关或应用密钥等配置发生了变化。

如果连支付宝提供的沙箱登录页面也无法正常进入,应先排查沙箱平台或测试账号。

先检查接口的真实返回结果

不要只凭收银台页面上的”系统太忙”判断原因。生成二维码时,需要完整记录支付宝网关返回的 code、sub_code、sub_msg 和 out_trade_no。

以 Java SDK 的 alipay.trade.precreate 为例:

AlipayClient alipayClient = new DefaultAlipayClient(
    "https://openapi-sandbox.dl.alipaydev.com/gateway.do",
    APP_ID,
    APP_PRIVATE_KEY,
    "json",
    "UTF-8",
    ALIPAY_PUBLIC_KEY,
    "RSA2"
);

AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();

JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", "TEST_" + System.currentTimeMillis());
bizContent.put("total_amount", "0.01");
bizContent.put("subject", "沙箱支付测试");

request.setBizContent(bizContent.toJSONString());

try {
    AlipayTradePrecreateResponse response = alipayClient.execute(request);

    System.out.println("code=" + response.getCode());
    System.out.println("msg=" + response.getMsg());
    System.out.println("sub_code=" + response.getSubCode());
    System.out.println("sub_msg=" + response.getSubMsg());
    System.out.println("out_trade_no=" + response.getOutTradeNo());
    System.out.println("qr_code=" + response.getQrCode());
    System.out.println("body=" + response.getBody());

    if (!response.isSuccess()) {
        throw new IllegalStateException(
            "支付宝预下单失败:" + response.getSubCode() + " - " + response.getSubMsg()
        );
    }
} catch (AlipayApiException e) {
    e.printStackTrace();
}

只有当 response.isSuccess() 为 true,且接口返回了有效的 qr_code 时,程序才应生成二维码图片。错误响应、空地址或旧地址都不应继续展示给用户。

错误原因应以接口实际返回的 sub_code 和 sub_msg 为准。类似 SYSTEM_ERROR 的结果通常只能说明当前请求处理失败,不能仅凭错误名称判断是业务参数有误还是平台发生故障。

排查步骤

1. 重新生成交易和二维码

不要继续使用昨天生成的二维码。每次测试都要创建新的 out_trade_no,并重新调用预下单接口。

String outTradeNo = "SANDBOX_" + System.currentTimeMillis();

不要让同一个 out_trade_no 对应不同的金额或商品信息,否则可能引发重复交易或参数冲突。

2. 确认使用的是完整沙箱配置

检查以下配置是否全部来自同一个沙箱应用:

网关:https://openapi-sandbox.dl.alipaydev.com/gateway.do
app_id:沙箱应用 APPID
应用私钥:与沙箱应用公钥匹配的私钥
支付宝公钥:沙箱环境提供的支付宝公钥
sign_type:通常为 RSA2
charset:UTF-8

不要混用正式环境和沙箱环境的 APPID、密钥、支付宝公钥或网关地址。混用配置通常会触发验签或权限错误。如果程序没有正确展示接口错误,也可能让人误以为二维码本身有问题。

3. 重置登录状态

Cookie、会话过期或测试账号异常,都可能导致沙箱登录状态失效。可以依次尝试:

  • 退出当前支付宝沙箱账号。
  • 清除相关站点的 Cookie 和缓存。
  • 使用浏览器无痕窗口重新登录。
  • 确认使用的是沙箱买家账号,而不是正式支付宝账号。
  • 在沙箱后台重新查看买家账号、登录密码和支付密码。

如果换成无痕窗口或其他浏览器后仍出现相同提示,浏览器缓存引发问题的可能性较低。

4. 查询交易状态

二维码支付失败后,不要马上反复创建同一笔订单。先调用 alipay.trade.query,确认交易是否已经创建:

AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();

JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", outTradeNo);
request.setBizContent(bizContent.toJSONString());

AlipayTradeQueryResponse response = alipayClient.execute(request);

System.out.println("code=" + response.getCode());
System.out.println("sub_code=" + response.getSubCode());
System.out.println("sub_msg=" + response.getSubMsg());
System.out.println("trade_status=" + response.getTradeStatus());
System.out.println("body=" + response.getBody());

常见交易状态如下:

  • WAIT_BUYER_PAY:订单已创建,正在等待付款。
  • TRADE_SUCCESS:支付成功。
  • TRADE_CLOSED:交易已关闭。
  • 查询不到交易:预下单可能没有成功,或者查询参数不一致。

5. 检查本机时间

签名请求通常包含 timestamp。服务器时间偏差过大时,支付宝可能会拒绝请求。

在 Linux 环境中可以执行:

date
timedatectl status

检查时区和系统时间是否正确,并启用可靠的时间同步服务。

6. 判断是否为沙箱服务异常

可以结合以下现象判断:

  • 代码和密钥近期没有改动。
  • 预下单、登录或支付页面同时出现异常。
  • 新订单、新二维码和无痕浏览器都无法解决问题。
  • 多个沙箱账号或设备出现同样的问题。
  • 过一段时间后,没有修改代码也能恢复。

同时出现这些情况时,更可能是沙箱服务暂时不稳定。沙箱环境主要用于联调,其稳定性通常无法按生产环境的标准衡量。请保存请求时间、接口名称、APPID、out_trade_no、错误码和响应体,稍后重试,或提交给支付宝开放平台支持渠道核查。

建议增加的日志

日志需要保留排障所需的信息,但不要输出应用私钥、支付密码和完整授权令牌等敏感数据。

log.info(
    "alipay precreate: appId={}, outTradeNo={}, code={}, subCode={}, subMsg={}",
    appId,
    outTradeNo,
    response.getCode(),
    response.getSubCode(),
    response.getSubMsg()
);

建议同时记录:

  • 请求发生时间。
  • 当前使用的网关环境。
  • 支付接口名称。
  • 支付宝返回的 trade_no。
  • 经过脱敏处理的完整响应体。
  • 回调通知的接收时间和验签结果。

注意事项

“二维码太忙了”只是页面层面的通用提示,无法直接对应某个确定的接口错误。需要结合预下单响应、交易查询结果和沙箱登录状态判断具体原因。

如果接口明确返回签名失败、参数错误、权限不足或订单重复,应先修复相应的配置或业务参数。如果接口已经成功生成二维码,但沙箱收银台和登录页面仍持续提示”系统太忙”,则应先排查沙箱服务或测试账号状态,保留日志并间隔一段时间后再次测试。

备注:内容仅供参考。