使用场景

最近在公司做一个支付平台,通过支付平台来做一个中转处理,达到多个对接平台使用同一个公众号支付和支付统一管理的功能。
其中就对接了微信支付功能中的公众号支付(jsApi支付)和 扫码支付,其实这两种支付方式都是采用的统一下单接口,对应的trade_type不同,参数稍微也有些不同。

遇到问题

遇到的问题是这样的,用户在PC端下单通过扫码支付来支付订单,这时用户取消支付,接下来在公众号中打开微信端,点击订单发起支付,这个时候发起的公众号支付就会提示“商户订单号支付”
其实,在微信下单时,只要订单号一致,一旦修改过支付类型(trade_type) 或 订单总价 等信息都会出现这个错误!

解决方案

其实解决也很简单!只要在每次发起支付时,在发起微信支付时传送的商户订单号参数out_trade_no使用随机字符串;

可以是平台订单号+固定长度的随机串,微信回调时截取固定长度就可以得到原平台订单号;也可以是生成唯一性的随机串,将这个随机串与平台对应的订单号关联存储起来,便于微信回调时处理。

也就是说你的订单信息变化了,传给微信的商户订单号参数out_trade_no也是要跟着改变才对的!

后话

最终,在这里还是发现了一点问题,如果扫码支付每次都生成不一样的订单号,那假如用户同时打开两个扫码支付页面,这时候两个二维码都是有效可以支付,倘若用户两个二维码都扫码支付了,怎么办?
对于这种情况,我们肯定是对应的订单只记录第一次支付成功的流水号。要是真出现这种情况,真能说几率真的很小,用户很傻逼,等他要求退款的时候,我们可以查看微信商户平台的流水记录,若情况属实可以给他线下退款!

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!