将多个命令作为事务处理

时间:2017-07-25 12:54:58

标签: database payment

我正在开发支付系统,该支付系统执行支付并写入该项目是在云托管数据库Azure中购买的。

目前的工作原理是:

  1. 与第三方支付系统的交易
  2. 如果成功,则为用户添加数据库中的新订阅行
  3. 交易历史记录和其他相关内容写入数据库
  4. 然而,在不太可能的情况下:

    1. 交易成功(对支付网关的http呼叫返回成功)
    2. 由于某种原因,在数据库中插入失败
    3. 我最终会向用户支付物品的费用而没有物品的实际订阅。(因为该行不在我们的数据库中)

      这两个调用与数据库无关(一个是,另一个是简单的异步http请求)所以我不能将它们视为事务(因为我无法真正回滚)。

      所以我的问题是更有经验的如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

要回答,我已经使用补偿交易模式实现了这一点。

按预期工作