交易系统中支付流程该如何做?

前言

我以前在企业中做过交易系统,踩了很多坑。前几天在现在的公司中,做付款的同学犯错了。付款给客户的时候产生了双重扣费。多付出了上百万的钱出去。然后……

问题原因

  1. 我们系统是微服务架构
  2. 交易系统开启开启事务后,调用支付系统,然后自身超时,导致事务回滚。
    详细流程:
    交易系统中支付流程该如何做?

正确的业务流程

交易系统中支付流程该如何做?

交易系统注意事项

  1. 操作需要有迹可寻。多写中间状态,多记录日志。
  2. 事务要拆分到最小粒度,步步为营,在产生问题的过程中更容易定位问题出在哪一个阶段。
  3. 对于设计到调用其他服务的时候,一定要先写自己的库,产生中间状态,提交事务后,再发起后续流程。
  4. 交易系统中,通常有一个最终状态的概念,每一笔交易都只有两个状态,交易成功或交易失败。如果是处理中的状态。那么需要调用查询结果。直到查询到最终状态为止,否则不可以擅自操作。
  5. 对于任何事物的操作,一点要把事务时间压缩到最短,时间越长,你越容易出现问题。
  6. 可以相信自己,一定要提防他人(其他业务系统),做好自保措施。
  7. 因为你操作的是钱,所以要极度小心,否则就变成背锅侠了。