不同支付方式(app、native、jsApi、h5)之间切换如何防重?举我这边的例子,我一个业务订单的支付可以在不同客户端进行(小程序和app,是不同的人操作),先通过app支付下了一个单,在微信支付这边生成了一个支付订单,由于其他原因支付操作终止,这时候微信的支付订单还存在。接着另一个用户又在小程序发起支付,就是用jsApi下了一单,最终通过此支付方式支付。我的想法是在切换支付方式时,把之前支付方式的单关了,但是看了文档关单要在生成订单5分钟之后,这时候同一个业务订单不同支付方式的支付订单会同时存在,就可能重复支付。如何避免类似问题?
先做临时链接,如果客户换了其他方式,就先进行关单,在重新请求获取支付链接,注意请求时间间隔和关单时间。
不能吧, 你能支付成功?
小程序下单未支付,相同的商户相同的外部订单号, 切换到app或h5都是不支持继续支付。微信直接报订单号重复.
除非有一种可能,你传递给微信的订单号每次都是不同的
那我建议你在支付记录表里增加一个id和它关联, 用来验证订单是否已经存在, 前置校验放在自己系统里
比如用你系统自己的订单号和发送给微信的订单号来关联. 只要支付记录表里存在了, 就不给付款或者做其他业务
从我们的业务来讲允许切换支付方式,不能不给付款。
1.通过获取页面焦点来触发支付结果查询
2.调用发起支付后前端轮询支付结果接口
这种不管用哪个方式支付,只要你创建订单的业务流水号还是同一个,获取到支付成功的结果后,前端刷新页面就行
对了,你们创建订单这一步应该有的吧,如果只有支付流水号,没有业务流水号,那可难办了
订单单号唯一,每次请求的支付接口时候生成不同单号,自己做多种单号关系映射,每次调起支付都需要做判断的
“每次调起支付的时候做判断”,判断什么呢?