订单码支付与手机网站支付的有效期如何计算?
支付阿杰
结论
订单码支付
订单码支付生成的二维码默认通常在 2 小时内有效。
以下参数都可以用来设置期限,但用途不同:
qr_code_timeout_express:设置二维码的相对有效期。timeout_express:设置交易允许付款的相对时长。time_expire:设置交易允许付款的绝对截止时间。
这三个参数不能简单地理解为都在修改“二维码有效期”。即使二维码仍可识别,只要关联交易超过付款期限,就无法继续支付。实际可支付时间同时受二维码有效期和交易有效期限制。
有效期也不是从扫码、打开收银台或输入支付密码时开始计算:
qr_code_timeout_express、timeout_express等相对时间,一般从支付宝成功受理alipay.trade.precreate请求、创建预下单交易并生成二维码时起算。time_expire是绝对时间,没有单独的起算点,到达指定时间后即失效。
手机网站支付
手机网站支付的未付款交易默认通常在 15 天内有效。如果当前接口支持 time_expire,商户可以指定一个更早的绝对截止时间,缩短订单有效期。
有效期并不是从“用户输入正确支付密码”时开始计算。输入正确密码属于支付确认过程,此时交易通常已经创建。
手机网站支付采用页面跳转模式。商户服务器通过 SDK 生成表单或支付 URL 时,支付宝不一定已经创建交易。默认有效期一般从用户浏览器提交支付请求、支付宝接收请求并创建交易时起算。
设置 time_expire 后,则直接以该绝对时间为准,与用户何时进入收银台或输入密码无关。
参数应如何使用
订单码支付
如果需要控制二维码的展示时长,可以设置 qr_code_timeout_express:
{
"out_trade_no": "ORDER_202609090001",
"total_amount": "100.00",
"subject": "测试订单",
"qr_code_timeout_express": "30m"
}
这段配置将二维码的相对有效期设置为 30 分钟。
如果需要限制交易必须在多长时间内完成付款,可以设置 timeout_express:
{
"out_trade_no": "ORDER_202609090002",
"total_amount": "100.00",
"subject": "测试订单",
"timeout_express": "90m"
}
如果业务系统已经计算出明确的截止时间,建议使用 time_expire:
{
"out_trade_no": "ORDER_202609090003",
"total_amount": "100.00",
"subject": "测试订单",
"time_expire": "2026-09-09 18:30:00"
}
这里的日期仅用于展示格式。实际请求中的时间必须晚于支付宝受理请求的时间,并符合接口允许的范围。
手机网站支付
手机网站支付可以通过 time_expire 指定绝对截止时间:
{
"out_trade_no": "WAP_202609090001",
"total_amount": "100.00",
"subject": "手机网站订单",
"product_code": "QUICK_WAP_WAY",
"quit_url": "https://merchant.example.com/order",
"time_expire": "2026-09-09 18:30:00"
}
仅生成这些请求参数或支付表单,并不代表支付宝已经收到请求。通常要等用户浏览器提交表单并进入支付宝支付流程后,支付宝才会实际受理请求。
建议的处理步骤
- 业务系统创建商户订单时,先记录统一的业务截止时间。
- 订单码支付应根据业务需求设置二维码期限,同时设置交易付款期限。
- 手机网站支付优先通过
time_expire传递明确的绝对截止时间。 - 到达业务截止时间后,商户端应停止展示二维码或支付入口。
- 不要只依靠前端倒计时判断订单状态。最终交易状态应通过支付宝查询接口或异步通知确认。
- 如果订单仍处于待支付状态,可以根据业务需要调用交易关闭接口,避免商户订单与支付宝交易状态不一致。
注意事项
qr_code_timeout_express控制二维码期限,timeout_express和time_expire主要控制交易付款期限,三者不能完全混为一谈。- 相对时间参数通常使用
m、h、d等单位,具体格式和取值范围以当前接口的参数说明为准。 time_expire必须采用接口规定的时间格式,同时注意商户服务器与支付宝使用的时区及系统时间偏差。- 同时传入多个有效期参数时,不要自行判断优先级,应以当前版本的接口文档为准。如果文档没有明确说明,建议只选用一种交易期限参数,以免产生歧义。
- 默认 2 小时和默认 15 天是未明确设置有效期时的平台规则,不能代替商户自己的超时管理。
- 自定义期限仍受支付宝接口允许范围和平台上限约束,不能通过传入任意值无限延长。
- 用户输入支付密码的时间既不是订单码支付的起算点,也不是手机网站支付的起算点。密码校验完成时,订单可能已经接近或超过截止时间,最终应以支付宝返回的交易结果为准。
备注:内容仅供参考。
