微信支付里在统一下单之后,如果用户发现订单金额有误则调用关闭订接口,然后重新调用统一下单。这样就有一个小问题了,试了很多次发现订单一旦关闭就不能再用原订单号再去调用统一下单了,不然就一直提示:商户订单号重复。按照微信的意思是一旦订单关闭就只能重新生成订单号了吗?
你说的订单号指的是 微信预支付的订单号,还是你本地的商户订单号,如果是微信预支付订单号每一次发起支付,你就重新生成签名然后从微信获取一个;本地的商户订单号可以一直是那个,可以继续用它去获取微信预支付订单号然后再进行支付。
你好,还有个问题麻烦你一下,就是调用统一下单后会得到一个预支付交易会话标识:prepay_id,微信说用于后续接口调用,但我看了下API,后续接口中也没有哪里有到这个啊?请问这个是用来干嘛的呢?
@深海云帆: 后续的支付,都需要传这个参数过去啊,不然微信没法知道你要支付的是哪一笔订单呢
@刘发源: 我用的是扫码支付,后面的接口都没有用到这个参数啊。。。要么是传商户订单号,要么是微信订单号,商户订单号是自己生成的,微信订单号是支付结果通知中返回的。
当然,不然出问题了怎么办?
订单号唯一才能保证数据的完整性。不论订单的状态。
用户发现订单金额有误则调用关闭订接口,然后重新调用统一下单
重新下单,那就意外着是新的订单号呀,兄弟。。。
问题是这样的,订单点击支付,但是没有进行支付,修改了订单金额,重新发起支付,用的是同一个订单号,就会导致报错 "商户单号重复 " ,解决办法是什么,很不好解决.
解决方式一 修改订单号,或者说是 "订单号_随机数"作为订单号发起支付,但是会导致后期对账麻烦
解决方式二 如果订单金额发生变化的话,更新订单号,以最新的订单号发起支付,导致的问题是本地订单号发生了变化
解决方式三(行不通) 关闭订单重复之后,发起支付(没试过,但是搜了下,说是行不通,因为关闭之后,就不能再以该订单号发起支付).
不知道大家的解决方式是什么样的,交流下
你这里的没有支付是因为什么?你完整的支付流程中对商户订单号是怎么处理的?我觉得如果不同金额的订单用的是一个商户订单号是不太合理的,尽管第一次并没有支付,但是这应该也是一个用户动作,用未支付的状态来表示再开新单也是合理的