PAYATHON 2026

支付宝沙箱今天持续提示“付款失败,请稍后再试”

支付老李

结论

仅凭“付款失败,请稍后再试”这条提示,无法确定支付宝沙箱是否正在维护。它是一个通用的失败提示,可能是沙箱环境暂时异常,也可能与沙箱买家账号、订单参数、密钥配置或订单号重复有关。

如果前几天还能正常支付,今天也没有改过代码,但多个沙箱买家账号都无法完成付款,那么沙箱环境出现波动的可能性较大。不过,是否属于官方维护,仍要以支付宝开放平台公告或技术支持的答复为准。

建议先做的检查

1. 重新登录沙箱买家账号

确认付款时使用的是支付宝开放平台提供的沙箱买家账号,不是真实支付宝账号。同时检查:

  • 沙箱买家账号是否输入正确;
  • 支付密码是否与沙箱后台显示或设置的密码一致;
  • 账号余额是否足够;
  • 是否误用了其他沙箱应用下的测试账号;
  • 手机端沙箱 App 的登录状态是否已经失效。

可以先退出沙箱账号并清理应用缓存,然后重新登录测试。

2. 每次测试使用新的订单号

out_trade_no 在商户系统中必须保持唯一。如果反复使用已经支付、关闭或创建过的订单号,下单或付款可能失败。

例如:

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

不要把订单号固定写成:

String outTradeNo = "202601010001";

如果需要重试原订单,应先调用交易查询接口确认订单状态,不要直接重复创建订单。

3. 检查是否仍在使用沙箱网关

沙箱请求地址应为:

https://openapi-sandbox.dl.alipaydev.com/gateway.do

以下配置也应来自同一个沙箱应用:

  • app_id
  • 应用私钥
  • 支付宝公钥
  • 签名算法,通常为 RSA2
  • 字符集,通常为 UTF-8

不要混用真实环境和沙箱环境的 app_id、密钥或支付宝公钥。还要特别注意,支付宝公钥和应用公钥不是同一个公钥。

示例配置:

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

4. 查询订单的真实状态

付款页面通常不会显示具体原因。可以调用 alipay.trade.query 查询订单,并记录接口返回的 code、sub_code、msg 和 sub_msg。

AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizContent("""
{
  "out_trade_no": "%s"
}
""".formatted(outTradeNo));

AlipayTradeQueryResponse 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("trade_status=" + response.getTradeStatus());

常见的交易状态包括:

  • WAIT_BUYER_PAY:订单已创建,正在等待付款;
  • TRADE_SUCCESS:付款成功;
  • TRADE_CLOSED:订单已关闭;
  • 查询不到订单:下单请求可能没有成功到达支付宝,也可能是查询时使用了错误的应用配置。

排查故障时,sub_code 和 sub_msg 通常比付款页面上的“请稍后再试”更有参考价值。

5. 检查下单参数

重点核对以下字段:

{
  "out_trade_no": "TEST_1720000000000",
  "total_amount": "0.01",
  "subject": "沙箱支付测试",
  "product_code": "FAST_INSTANT_TRADE_PAY"
}

检查时注意:

  • total_amount 应采用合法的金额格式,并以字符串传递;
  • subject 不能为空;
  • product_code 必须与使用的支付产品匹配;
  • 订单号不能包含空格或异常字符;
  • 不要提交已经过期的订单;
  • 客户端时间与标准时间不能相差过大。

如果最近更换过 SDK、序列化组件或请求封装,还要检查最终发送的 biz_content 是否完整,确认金额和订单号没有在中间处理过程中被改写。

如何区分环境故障与代码问题

可以按以下顺序交叉验证:

  1. 使用全新的 out_trade_no 再测试一次;
  2. 换一个沙箱买家账号;
  3. 检查沙箱账号余额;
  4. 查询失败订单的交易状态;
  5. 查看下单接口返回的完整字段;
  6. 确认代码、密钥和应用配置近期没有变化;
  7. 查看支付宝开放平台公告,或向平台技术支持提交 app_id、请求时间和错误码。

如果不同订单和不同沙箱买家账号都在同一时间失败,但请求签名及下单响应正常,那么问题通常更可能出在沙箱环境。可以过一段时间再试,不要通过无限循环频繁发起支付请求。

如果只有某个订单或某个账号失败,应先检查订单状态、账号余额和登录状态。如果所有请求都返回了明确的 sub_code,则应根据该错误码排查对应问题。

注意事项

沙箱环境主要用于接口联调,稳定性通常不能与生产环境相比。沙箱短时间不可用,并不代表正式环境也存在相同故障。

排查问题或向平台反馈时,应保留以下信息:

  • 请求时间;
  • 沙箱 app_id;
  • out_trade_no;
  • 接口返回的 code、sub_code、msg、sub_msg;
  • 支付页面截图;
  • SDK 日志中的支付宝响应内容。

不要公开应用私钥、支付密码、完整签名串或其他敏感信息。如果接口没有返回明确的错误码,并且故障持续时间较长,可以把上述非敏感信息提交给支付宝开放平台技术支持,请平台确认沙箱是否正在维护或存在服务异常。

备注:内容仅供参考。