更新时间:2021-07-07 14:13:54收藏我的文档设置返回文档背景因为支付宝返回的结果都是同步返回,为避免出现单边账等情况,所以开发者需要调用查询接口轮询订单状态。轮询一般为支付请求发起后进行,每一笔交易一定要闭环,即要么支付成功,要么撤销交易,一定不能有交易一直停留在等待用户付款的状态。通过轮询 撤销的流程中,如轮询的结果一直为未付款,撤销一定要紧接着最后一次查询,当中不能有时间间隔。轮询机制当请求支付返回 wait_buyer_pay 时,收银系统需要做轮询处理,建议:●收银终端界面阻塞并提示“等待用户确认支付”。●轮询间隔设为 3~6 秒,轮询总时长 60 秒左右。●轮询时,收银终端界面提供手动停止功能,停止时必须调用撤销 api 撤销支付宝交易。设置轮询可以使用定时器进行轮询,参考下面代码:plain text复制代码91timer = setinterval(function() { endtime--; if (endtime === 59) { clearinterval(timer); } }, 1000);轮询流程1当交易创建后(交易状态为wait_buyer_pay),即可调用交易查询接口查询判断交易是否成功。交易如果未创建,交易查询接口会返回报错。2可设置定时器进行轮询,轮询间隔设为 3~6 秒,轮询总时长 60 秒左右。3在轮询过程中,只有调用返回 trade_status(交易状态)为 trade_success(交易支付成功)或者 trade_finished(交易结束,不可退款),才可判断用户付款成功。4如果轮询超过 60 秒,查询接口一直未返回 trade_status(交易状态)为 trade_success(交易支付成功)或者 trade_finished(交易结束,不可退款)状态,(提示如报错系统异常、交易状态为wait_buyer_pay等),可调用 撤销该笔交易。5如果后续仍然需要继续交易,请修改支付接口中的out_trade_no(商户订单号),重新发起请求扣款并轮询。注意:撤销接口使用有效性为订单创建后的 24 小时内。