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

前言

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

问题原因

  1. 我们系统是微服务架构
  2. 交易系统开启开启事务后,调用支付系统,然后自身超时,导致事务回滚。
    详细流程:
    这里写图片描述

正确的业务流程

交易系统注意事项

  1. 操作需要有迹可寻。多写中间状态,多记录日志。
  2. 事务要拆分到最小粒度,步步为营,在产生问题的过程中更容易定位问题出在哪一个阶段。
  3. 对于设计到调用其他服务的时候,一定要先写自己的库,产生中间状态,提交事务后,再发起后续流程。
  4. 交易系统中,通常有一个最终状态的概念,每一笔交易都只有两个状态,交易成功或交易失败。如果是处理中的状态。那么需要调用查询结果。直到查询到最终状态为止,否则不可以擅自操作。
  5. 对于任何事物的操作,一点要把事务时间压缩到最短,时间越长,你越容易出现问题。
  6. 可以相信自己,一定要提防他人(其他业务系统),做好自保措施。
  7. 因为你操作的是钱,所以要极度小心,否则就变成背锅侠了。
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您提出了两个问题,我将分别回答: 1. 支付流程是什么? 支付流程通常包括以下步骤: 1)用户在网站或移动应用选择商品或服务,并添加到购物车。 2)用户进入结算页面,选择支付方式并填写相关信息。 3)用户提交订单后,系统生成订单号,并将订单信息传递给支付网关。 4)支付网关将订单信息发送给用户选择的支付机构。 5)用户在支付机构的支付页面上完成支付。 6)支付机构将支付结果通知支付网关。 7)支付网关将支付结果通知商户网站或移动应用。 8)商户网站或移动应用根据支付结果更新订单状态,完成交易。 2. Vuex的模块化是如何的? Vuex是一个专为Vue.js应用程序开发的状态管理模式。Vuex的模块化是通过将Vuex的state、mutations、actions和getters拆分成多个小模块来实现的。 具体来说,可以将Vuex的代码拆分成多个模块,每个模块可以有自己的state、mutations、actions和getters。这些模块可以通过Vuex的模块化注册方式注册到Vuex的store。 例如,一个简单的Vuex应用程序可以拆分成两个模块:一个是用户模块,用于处理用户信息;另一个是商品模块,用于处理商品信息。每个模块都有自己的state、mutations、actions和getters,它们可以通过模块化注册的方式注册到Vuex的store。这样,开发人员可以更好地组织和管理Vuex的代码,提高代码的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值