【转载】系统怎么处理重复缴费问题?

现在有两个个系统:app,web。这两个个系统都可以生成订单并缴费,且互相之间可以缴费。现在问题就是,我在app上生成一个订单,跳到支付页面(但不做缴费操作,就停在这里),然后我登录web上进行这笔订单的缴费,缴费成功后再继续完成app的缴费,(因为在支付界面不由我系统控制了,还是能继续缴费的)。这样的重复缴费怎么解决?

重复支付的问题,第三方支付公司都有成熟的解决方案。

在线支付对重复支付一般解决方案如下:

1、支付接口判重

第三方支付在接收到支付请求后,根据与商家约定的判定重复支付的参数组合对支付请求进行校验及判重,如果为重复订单,则不继续后续流程。

由于涉及每一次支付请求都需要查询交易数据,影响系统性能;且由于不同商家的判重标准不尽相同,一般都需要要对接口做定制,因此除非是大商户,一般都不提供此功能。

而且此种方案,并不能杜绝重复支付的问题,例如:用户开了两个窗口,都已经跳转到银行网银页面上,此时侯第三方支付已经无法控制用户支付行为了。

2、重复支付+退款接口

如果重复支付的订单尚未与第三方支付平台结算,则:

在用户支付成功后,商户系统是可以判断是否为重复支付,商户系统可以自动调用退款接口,对判定为重复支付的订单发起退款请求(商户平台订单号+支付平台支付流水号)。

也可以由商户运营人员在运营后台发起退款请求(本质上也是调用退款接口)。

3、批量代付退款

如果重复支付的订单已经与第三方支付平台已经结算(第三方支付与银行也完成对账、结算),则:

对在线支付,一般采用批量代付的方案,将重复支付订单退款与提现、转账等业务以批量文件方式提交给代付渠道代付出去。

如果是POS收单,可以采用冲正、消费撤销、退货等命令,对重复支付的订单进行反向交易。在线支付一般较少采用冲正方式。

另外在商户端,为避免对于重复支付,在业务逻辑上也可以做一些处理,包括:

1、保证交易订单号的唯一性。很多商户系统开发能力有限,经常出现交易订单号不唯一的情况。

2、在发起支付请求后,更改订单状态,避免用户再次发起支付请求。(慎用,只不过在一些业务场合会也会采用此种方案)。

3、对因掉单等原因引起的订单状态未知的情况,先调用第三方支付接口的查询接口确认订单的支付状态。

作者:梁川

链接:https://www.zhihu.com/question/36459849/answer/67597515

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(【转载】系统怎么处理重复缴费问题?)