V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mikulch
V2EX  ›  问与答

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

  •  
  •   mikulch · 2020-03-23 15:56:31 +08:00 · 792 次点击
    这是一个创建于 1564 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    目前我想到的方案是:

    放款:

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

    扣款:

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

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

    delectate
        1
    delectate  
       2020-03-23 18:23:04 +08:00
    订单号不同,明显是上游的问题。

    加个规则吧:短时间内,不同订单号,相同用户(姓名 /卡号等),额度相同,则认为是相同的扣款 /放款,进行拦截并上报,等待人工处理。
    mikulch
        2
    mikulch  
    OP
       2020-03-23 20:24:35 +08:00
    @delectate 好的,我也觉得只有这个方案了。应该也只能这么做吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4302 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.