0

我一直在开发一个需要记录信用卡交易的应用程序,该交易依赖于使用外部 API。在我的应用程序中,我有一个包含总金额的发票的概念,以及在信用卡成功付款后从总金额中扣除的交易。

这更像是一个独立于平台的问题,但我正在使用 Django、Python 和 MySQL。

我的问题主要围绕在处理外部 API 时使用事务以及如何设计软件来处理潜在故障。Django 和 MySQL 都支持事务,所以这本身不是问题,但假设以下场景:

  • 通过支付 API 提交的信用卡
  • 信用卡已成功处理
  • 然后,此响应将作为该发票上的付款记录到数据库中
  • 出于某种原因将付款保存到数据库时出错

你现在做什么?

如果不涉及 API 调用,答案将很明确,回滚数据库事务并引发错误。但是调用外部 API 会使事情变得复杂,因为这并不是真正回滚外部 API 调用的方法。

我很感兴趣是否有人遇到过这个问题(对于信用卡或类似类型的交易)以及他们如何解决这个问题,或者在这种情况下通常采用一些软件设计方法。

4

1 回答 1

1

在软件中很难管理这个。但是,如果您的支付网关正在调用回调以表示交易成功,那么如果该回调未能完成,它可能会记录一个错误,并且您应该能够将其配置为在这种情况下提醒您,也许是通过电子邮件。然后由您手动纠正这种情况。

于 2011-07-17T19:04:35.480 回答