0

私は、外部 API の使用に依存するクレジット カード トランザクションをログに記録する必要があるアプリケーションに取り組んできました。私のアプリケーションには、合計を含む請求書と、クレジット カードによる支払いが成功したときにこの合計から差し引かれるトランザクションの概念があります。

これはプラットフォームに依存しない質問ですが、私は Django、Python、および MySQL を使用しています。

私の質問は主に、外部 API を処理する際のトランザクションの使用と、潜在的な障害を処理するためのソフトウェアの設計方法に関するものです。Django と MySQL の両方がトランザクションをサポートしているため、それ自体は問題ではありませんが、次のシナリオを想定します。

  • 支払い API を介して送信されたクレジット カード
  • クレジットカードは正常に処理されました
  • この応答は、その請求書の支払いとしてデータベースに記録されます
  • 何らかの理由で支払いをデータベースに保存する際にエラーが発生しました

これでどうしますか?

API 呼び出しが含まれていない場合、答えは明らかで、データベース トランザクションをロールバックしてエラーを発生させます。しかし、外部 API を呼び出すと、問題が複雑になります。これは、実際には外部 API 呼び出しをロールバックする方法ではないためです。

誰かがこの問題 (クレジット カード、または同様の種類のトランザクション) に遭遇したか、問題にどのように対処したか、またはこの場合のソフトウェア設計の一般的なアプローチに興味があります。

4

1 に答える 1

1

これをソフトウェアで管理するのは困難です。ただし、支払いゲートウェイがトランザクションが成功したことを示すためにコールバックを呼び出している場合、そのコールバックが完了しなかった場合、おそらくエラーがログに記録されます。その場合、おそらく電子メールで警告するように構成できるはずです。その後、状況を手動で修正するのはあなた次第です。

于 2011-07-17T19:04:35.480 に答える