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

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

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

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

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

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

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

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

  • 写回答

5条回答

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

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用