请教一个电商系统中的业务问题(微信支付、ping++聚合支付)
创建订单,完成订单付款动作,等待支付回调的过程中,如果用户手动取消订单,业务上面应该怎么处理。
目前,我们系统的处理方式是--->因为你取消了订单,但是支付回调还没有成功,所以状态上面的话,其实还是未支付,只能进行订单商品的库存返还操作,修改订单状态为已取消;
又由于你订单状态已取消,当支付成功回调时,你这个已取消的订单面对回调业务上面又该如何正确处理呢?
如果是建议取消之前查询一下订单的支付情况的话,需要支付回调成功才能够拿到查询的chargeNo,所以也不好准确的查询订单的支付情况?
当然这种情况比较少,一般付款动作完成之后,支付回调就会马上成功,但是理论上存在这种可能性,支付成功回调延时了(网络原因等)
欢迎,提供思路,谢谢
方法有很多种,
第一种:强势点的,去掉取消按钮,不让主动取消,等系统30分钟任务自动取消。
第二种:回调的时候,检查订单状态,如果重复支付或者订单取消,在订单状态设置为异常。
可以让用户自己打电话要求退款,最好是不要自动退款。
退款呀,回调回来发现是已经取消的订单。
还有就是如果有同步支付回调,在回调回来的页面,不要自动跳转到订单列表,给个中间界面逗留。
延长用户进入订单列表进行取消操作的时间。
@心雨纷扬: 你的这种做法算是一个折中的方案吧,我们其实目前也是这样操作的,但是如果用户操作足够熟练,你的支付成功回调延时足够久的话,还是会存在上述我所说的那种情况的发生
@Mr_伍先生: 当然有这种情况产生,这种异常就只能退款
当用户微信支付、取消我们前台可以获取到状态的,这个时候根据商户订单号主动查一下
你这个回调 都是 通过什么去请求 然后 回调的呢?ajax? 如果是ajax 可能就会有一系列的问题。推送消息 我感觉还是用websocket去推送 比较好一点
这个回调,如果是微信支付的话就是微信发起的回调;如果是ping++支付的话,就是ping++发起的回调,不需要我们发送请求;
这里也不涉及到推送消息呀;
感觉没有回答到点子上面去