从储值卡(会员卡)充值业务看分布式事务的设计

公司有一项储值卡充值业务:客户在微信公众号开通储值卡服务,通过微信支付往卡里面充值,充值成功后客户可收到消息通知,并进行消费。

看起来是一项很简单的业务,最初我们储值卡团队的实现也确实很简单。我们看看最初的实现:
储值卡充值最初版本实现

相信聪明的你一眼就能看出问题:

  1. 压根没有考虑分布式事务一致性,比如第 12 步根本没有考虑卡系统充值失败的情况该如何处理,而是默认其一定能成功;
  2. 大部分的处理都是放在前端业务系统(除了这里的公众号系统,还有 POS 机系统,而 POS 机是通过调公众号系统接口来实现的);
  3. 第 4 步直接下单,第 5 步直接调微信支付,压根没有跟卡系统有任何通信:这里默认用户的充值行为一定是合法的;
  4. 在微信的支付回调中(第 10 步往后),是先处理一系列业务逻辑,最后才调充值接口,这里也是默认卡充值一定能成功;

看到这里你可能会大呼开发人员是不是没长脑子?

实际情况是,这个版本的开发是几年前的事情了,那时候公司还是创业早期,第一目标是尽快上线能用,而且客户量没有那么大,虽然中间也出现过一些数据不一致的情况,也都通过人工处理了事了。

随着公司业务的发展,用户量越来越大,而且还要和第三方合作(储值卡作为一种支付方式提供给第三方使用),问题出现得也越来越频繁,不得不

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林子er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值