PAYATHON 2026

支付宝沙箱环境付款码不可用,提示网络系统异常

支付小周

结论

如果错误发生在沙箱支付宝客户端打开”付款码”时,而且尚未发起 alipay.trade.pay 请求,通常与商户代码、应用私钥或支付宝公钥无关,应重点检查沙箱账号、客户端状态和沙箱服务。

先确认使用的是沙箱支付宝客户端和沙箱买家账号,然后依次尝试重新登录、清除客户端数据、切换网络和重新安装客户端。如果多个沙箱买家账号在不同设备和网络下都出现相同提示,可能需要等待沙箱环境恢复,或通过支付宝开放平台的技术支持渠道反馈。修改签名配置通常无法解决付款码页面本身的开通失败。

排查步骤

1. 确认正式环境和沙箱环境没有混用

沙箱测试中的各项配置必须属于同一套环境:

  • 使用支付宝开放平台沙箱提供的沙箱应用 app_id
  • 网关使用沙箱地址:
https://openapi-sandbox.dl.alipaydev.com/gateway.do
  • 使用沙箱应用对应的应用私钥和支付宝公钥
  • 登录沙箱支付宝客户端时,使用沙箱环境生成的买家账号
  • 不要让正式支付宝客户端、正式账号或正式网关参与沙箱交易

正式账号不能直接作为沙箱买家使用,正式环境的密钥也不能用于沙箱应用。

2. 确认问题发生在哪一层

先检查商户服务端日志,确认打开付款码时是否收到了用户付款码,以及服务端是否调用了 alipay.trade.pay。

如果用户还没有看到付款码,商户服务端就无法取得 auth_code。这说明问题发生在沙箱支付宝客户端或沙箱平台,还没有进入支付接口调用阶段。此时,以下配置不会影响付款码页面能否打开:

  • 应用私钥
  • 支付宝公钥
  • 签名算法
  • 异步通知地址
  • 商户服务端业务参数

如果已经取得 auth_code,但调用接口后失败,则需要根据支付宝接口返回的 code、sub_code 和 sub_msg 排查,不能只看客户端提示。

3. 检查沙箱买家账号

在开放平台沙箱控制台中确认:

  • 当前登录的是买家账号,不是商家账号
  • 账号可以正常登录
  • 账号状态正常
  • 测试账户有可用余额
  • 没有误用其他沙箱应用或其他开发者账号下的测试账户

可以新建或更换一个沙箱买家账号进行交叉验证。如果只有某个账号失败,问题更可能出在账号状态或客户端缓存;如果所有账号都失败,则更可能是客户端或沙箱服务异常。

4. 重置客户端状态

建议按以下顺序处理:

  1. 退出当前沙箱买家账号,然后重新登录。
  2. 强制停止沙箱支付宝客户端。
  3. 清除客户端缓存和应用数据。
  4. 检查手机的日期、时间和时区是否正确。
  5. 在 Wi-Fi 和移动网络之间切换。
  6. 关闭代理、VPN、抓包工具或自定义 DNS。
  7. 卸载并重新安装当前可以获取的沙箱支付宝客户端。

沙箱客户端支持的平台、下载方式和兼容范围可能发生调整,请以开放平台沙箱控制台当前提供的信息为准,不要直接照搬正式支付宝客户端的处理方式。

5. 判断沙箱服务是否异常

出现以下情况时,可以怀疑沙箱服务本身存在异常:

  • 多个沙箱买家账号都无法打开付款码
  • 更换设备和网络后仍然失败
  • 清除数据或重新安装后,错误没有变化
  • 商户服务端没有收到任何支付请求
  • 其他开发者在相近时间遇到了相同问题

如果同时出现这些现象,继续在本地重试或修改接口代码通常没有意义。建议记录问题发生时间、沙箱应用 app_id、账号类型、客户端版本、设备系统版本,并保存错误截图,然后通过支付宝开放平台当前提供的技术支持入口反馈。不要在工单、截图或日志中提交应用私钥。

接口代码示例

商户服务端只有在取得付款码对应的 auth_code 后,才能调用 alipay.trade.pay。下面是典型的调用结构,其中的参数需要替换为自己的沙箱配置:

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

AlipayTradePayRequest request = new AlipayTradePayRequest();
request.setBizContent("""
{
  "out_trade_no": "TEST_202609090001",
  "scene": "bar_code",
  "auth_code": "PAYMENT_AUTH_CODE",
  "subject": "沙箱付款码测试",
  "total_amount": "0.01"
}
""");

AlipayTradePayResponse response = alipayClient.execute(request);

System.out.println("code=" + response.getCode());
System.out.println("msg=" + response.getMsg());
System.out.println("subCode=" + response.getSubCode());
System.out.println("subMsg=" + response.getSubMsg());

if (response.isSuccess()) {
    System.out.println("tradeNo=" + response.getTradeNo());
} else {
    System.out.println("支付请求失败");
}

这段代码只能验证取得付款码后的支付接口调用,无法修复沙箱客户端提示的”付款码开通失败”。如果始终无法取得 PAYMENT_AUTH_CODE,应先检查客户端、沙箱账号和沙箱服务。

注意事项

  • auth_code 是短时有效的敏感支付凭证,不要将其写入长期日志,也不要重复使用。
  • 每次测试都应生成唯一的 out_trade_no,以免将订单号重复问题误判为付款码故障。
  • 完整记录支付宝接口返回的 code、sub_code 和 sub_msg,不要只记录”支付失败”。
  • 沙箱环境主要用于联调,其稳定性和客户端能力可能与正式环境不同。沙箱出现异常,并不能直接证明正式环境存在相同问题。
  • 未经确认,不要为了绕过沙箱故障而直接切换到正式环境。正式环境会产生真实交易,测试前必须完成上线配置,并使用受控金额和账号。
  • 如果业务允许,可以暂时使用沙箱支持的其他支付流程完成部分联调。例如,通过 alipay.trade.precreate 生成商户二维码,再由买家扫码支付,但这种方式不能替代付款码模式的最终验证。

备注:内容仅供参考。