支付宝订单关闭报Business Failed - ACQ.TRADE_NOT_EXIST

参考文章:http://www.manongjc.com/detail/51-rnxeupidlibvnvm.html

简要说明:

在对接支付宝扫码支付时,会调用alipay.trade.precreate接口预下单生成付款链接,然后由本地后台生成二维码展示给用户进行扫码支付。

现在的需求是每次生成二维码时需要使之前的二维码失效,避免用户重复支付。

实现方式是,每次生成新的二维码时,将之前的二维码调用支付宝关闭订单接口,进行关闭,以此防止用户扫之前的二维码进行支付。

出现的问题:在调用支付宝关闭订单接口时,报如下错误

image.png

明明生成了订单却又说订单不存在,在上面的链接文章中找到了答案:

下面是阿里工程师对此种情况对应的说明:

如果你调用的是当面付预下单接口(alipay.trade.precreate),调用成功后订单实际上是没有生成,因为创建一笔订单要买家、卖家、金额三要素。预下单并没有创建订单,所以根据商户订单号操作订单,比如查询或者关闭,会报错订单不存在。当用户扫码后订单才会创建,用户扫码之前二维码有效期2小时,扫码之后有效期根据timeout_express时间指定。

捡重点的说: 1)生成二维码其实是没有生成订单的。 2)用户扫码之前二维码有效期2小时(没找到地方配置),过期二维码失效。 3)扫码之后有效期根据timeout_express时间指定,如果用户扫码了,但是没有支付,这时候timeout_express决定二维码失效时间。