PAYATHON 2026

如何设置支付宝电脑网站支付二维码刷新时间?

支付老李

结论

支付宝电脑网站支付(alipay.trade.page.pay)收银台中的二维码由支付宝控制刷新时间,商户无法通过接口参数直接设置。

如果需要限制二维码对应订单的可支付时长,可以设置 timeout_express。这个参数设置的是订单最晚付款时间,与二维码页面的刷新频率无关。

设置订单支付时限

调用 alipay.trade.page.pay 时,在业务参数中传入 timeout_express:

{
  "out_trade_no": "ORDER_202609130001",
  "total_amount": "99.00",
  "subject": "测试商品",
  "product_code": "FAST_INSTANT_TRADE_PAY",
  "timeout_express": "30m"
}

例如,30m 表示订单创建后可在 30 分钟内付款。订单超时后的最终交易状态需要通过支付宝查询接口确认,不能仅凭浏览器中的倒计时判断。

Java SDK 示例:

AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("https://www.example.com/alipay/return");
request.setNotifyUrl("https://www.example.com/alipay/notify");

request.setBizContent("""
{
  "out_trade_no": "ORDER_202609130001",
  "total_amount": "99.00",
  "subject": "测试商品",
  "product_code": "FAST_INSTANT_TRADE_PAY",
  "timeout_express": "30m"
}
""");

AlipayTradePagePayResponse response = alipayClient.pageExecute(request);

if (response.isSuccess()) {
    String paymentForm = response.getBody();
    // 将支付宝返回的表单内容输出到浏览器
}

可用的时间单位以及最小值、最大值可能随接口规则调整,请以支付宝开放平台当前发布的 alipay.trade.page.pay 接口文档中对 timeout_express 的说明为准。

如果需要自定义“刷新”效果

商户可以在自己的订单页面显示倒计时,并在倒计时结束后查询订单状态:

const expireAt = Date.now() + 30 * 60 * 1000;

const timer = setInterval(async () => {
  const remaining = expireAt - Date.now();

  if (remaining <= 0) {
    clearInterval(timer);

    // 向商户服务端查询订单状态,
    // 服务端再调用 alipay.trade.query 或读取异步通知处理结果。
    await queryOrderStatus();
  }
}, 1000);

如果需要重新发起支付,应由服务端先根据订单状态判断是否创建新的支付请求。不要定时刷新支付宝收银台页面,也不要在原订单状态尚未明确时反复生成支付页面,以免出现重复订单或支付状态判断错误。

注意事项

  • timeout_express 设置的是订单支付期限,不是支付宝二维码的刷新间隔。
  • 支付结果应以支付宝异步通知和 alipay.trade.query 的查询结果为准。
  • 前端倒计时仅用于界面提示,不能据此判定订单已经关闭或支付失败。
  • return_url 是用户付款后的页面跳转地址,不能用于可靠地确认支付结果。
  • 处理异步通知时,应校验签名、商户订单号、金额和商户身份等重要字段。
  • 如果使用的不是 alipay.trade.page.pay,而是由商户自行展示二维码的其他支付产品,应按对应接口规定的二维码有效期和订单超时规则处理。

备注:内容仅供参考。