Hobart-Ljw 2019-08-19 22:16 采纳率: 25%
浏览 485
已结题

余额修改和交易流水表添加流水数据事务不一致

我们的余额表放在余额数据库里,订单表放在订单数据库里,交易流水表放在交易流水系统里。所有服务是通过dubbo这个中间件来进行调用的。

现在有个问题就是:
用户支付宝支付了充值订单后,支付回调我们的后台系统,后台会修改订单支付状态为已支付,然后从余额 表里增加余额,但是就是在增加余额的时候成功了,当接下来调用交易流水服务的时候,后台在那一瞬间宕机了。
因为是都是不同的库,事务属于分布式事务,造成余额表修改成功了,但是交易流水表记录流水数据失败了。然后支付宝又再次回调我们后台,导致余额表又修改了一次余额。

现在我的解决办法是加多一张余额费用记录表到余额数据库里头,主要字段就是orderNo(订单号),fee(增加费用) ,如果某订单支付成功了,这个表就会增加一条数据,把余额增加和余额费用记录表做成同一个事务,支付宝每次回调都会先查余额费用记表录里有没有数据
1)没数据就先修改余额,然后插入余额费用记录表

2)有数据,就直接跳过余额加款这个操作

这样目前暂时就是没造成余额修改成功,交易流水表扣款失败,导致支付宝重复回调,重复扣款的问题了。

但是这样我觉得还是不大妥,不知还有什么方案好使。

  • 写回答

5条回答 默认 最新

  • dabocaiqq 2019-08-20 09:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧