私は単純な電子商取引サイトに取り組んでいます。ユーザーが購入すると、いくつかの同期的なカスケード イベントがトリガーされます。一部のデータがデータベースに書き込まれ、クレジット カード ベンダーによって購入が OK (または拒否) され、さらにいくつかのデータがデータベースに書き込まれ、電子メールが送信されます。
Step 1. Initial Purchase info recorded on local database
Step 2. Purchase API called on Credit Card vendor
Step 3. Details of transaction written to local database
Step 4. Email receipt/alert sent
これらのステップのいずれかが失敗した場合に対処する実証済みの方法論はありますか? たとえば、既にデータベースに書き込みを行っているにもかかわらず、クレジット カード トランザクションが失敗したとします。または、ステップ 1 と 2 は完了しましたが、ステップ 3 が失敗します。私は基本を理解しようとしています-「購入前の」データのスナップショットを作成し、何かが失敗した場合はすべてをロールバックするか、「偽の購入」オブジェクトを作成してすべてがうまくいくと仮定する方が賢明ですか?それを実際のデータベースにコピーします。
どんな提案でも大歓迎です。私はこれで私のリーグから抜け出しています。
乾杯!