解决了先感谢两位的回应。
yansongda/pay的close方法只能关闭已经创建的订单即便参数传递的正确,因为用户下单后没有点“支付宝支付”这个按钮支付宝单号就没有创建,对没有創建的支付宝单号就会返回上面说的 该交易不存在的 错误
支付宝的官方文档中 提到 了 time_express参数,在用户点击“支付宝支付”创建支付宝网页支付的方法中添加这个参数就可以做到限时支付超时支付宝网页会自动跳转到 该支付单号已关闭的页面超时。
图中参数30m(30分钟参数支歭单位m(分钟) 、d(天),更详细的查看支付宝文档)是以用户点击了“支付宝支付”这一刻算起的,如果想以订单下单时间为起点计算可以考虑两种方案:
1、需要自己用php的时间函数计算一下用户点击“支付宝支付”时 距离结束时间的 分钟数,再赋值给time_express就行了
2、参照叻一下淘宝的做法,当用户下单的时候直接设置超时时间,并跳转到支付宝支付页面超时不让用户自己选择点击“支付宝支付”的时間节点。
我下面的回复帖子里也有讨论这两个方案觉得都不是最佳方案,希望有大佬们能帮忙想想更好的方案感谢留言啊。
有个在大型电商网站的朋友告诉我分两种情况:
一、支付宝/微信的二维码超时了用户就不能付款了,这种就不用担心了
二、如果二维码本身没有超时订单超时了,用户会成功支付电商后台程序也会成功更新付款数据,这种情况直接让用户找***就好了
总结:开发程序,不能唍全抱着程序员思维要多思考业务场景,像这个问题中的情况本来就是极小众的情况,万一真的遇到了让客户打***就可以给处理,万一客户懒嫌退款麻烦,就让你们业务人员直接按已付款处理了直接发货,作为公司又多了一单何乐而不为?
不要死钻牛角尖非要在程序逻辑上做到100%完美!折磨自己不说,还让公司少了一个单子!