支付系统如何在来源请求订单号不同的情况下,尽可能的防止重复放款和扣款?

2020-03-23 15:56:31 +08:00
 mikulch

现在在负责公司的一个支付系统,当然这个系统比较老了,我也是接手的。最近出现了一个故障:即上游系统错误发送了两笔放款请求,两笔请求的订单号都不同。造成了用户银行卡重复性放款。

现在希望在尽可能防止重复扣款和放款的基础上,尽可能的不要降低太多的并发性能的基础上,防止重复扣款放款为重点。

目前我想到的方案是:

放款:

  1. 首先业务出具业务规则,针对相同的人和卡之类的只能制定业务规则,比如 1 个人 1 天只能放多少钱之类的。
  2. 针对相同的人或卡,串行执行请求。

扣款:

  1. 和放款相同,制定重复规则。
  2. 针对相同的人或卡,穿串行执行请求。(但是似乎扣款有人提到不能这么做,不太明白为什么)

除了上面的以外,大家有什么方案或者说最佳实践吗?谢谢大家的帮忙~

792 次点击
所在节点    问与答
2 条回复
delectate
2020-03-23 18:23:04 +08:00
订单号不同,明显是上游的问题。

加个规则吧:短时间内,不同订单号,相同用户(姓名 /卡号等),额度相同,则认为是相同的扣款 /放款,进行拦截并上报,等待人工处理。
mikulch
2020-03-23 20:24:35 +08:00
@delectate 好的,我也觉得只有这个方案了。应该也只能这么做吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/655396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX