如何保持第三方API和我自己的数据库之间的一致性?

mr *_*ose 5 .net c# api rest transactions

我正在使用 REST API,并有以下处理付款请求的场景:

\n\n
    \n
  1. 客户端将请求(付款信息)发送到我自己的 API。
  2. \n
  3. 我的 API 调用第三方 REST API,向其传递付款信息,并从中接收付款 ID。如果第三方API调用因任何原因失败,错误会立即返回给客户端。
  4. \n
  5. 我的 API 将第 2 步中生成的付款 ID 和一些额外信息存储到自己的数据库中。
  6. \n
\n\n

我希望第三方API和我自己的数据库之间的数据保持一致。但是,如果由于某种原因在步骤 3 中无法访问数据库,我最终会得到不一致的数据 \xe2\x80\x94 付款将存在于第三方 API 中,但不存在于我自己的 API 数据库中。

\n\n

处理这个一致性问题的最佳方法是什么?

\n

Pet*_*ill -1

@Gusman 讨论了如果步骤 3 无法完成,如何允许步骤 2。

TransactionScope允许您在同一事务中执行步骤 2 和 3,即如果步骤 3 无法完成,则取消步骤 2。