サインアップ プロセス中に、問題が発生した場合にロールバックできるように、トランザクションを使用してアカウントのセットアップに関連するすべての操作を囲みます。
発生する最後の項目は課金プロセスです。支払いが成功した場合、アカウントの作成を完了するために Commit 操作が呼び出されます。たとえば、ユーザーのカードが拒否された場合は、ロールバックします。
ただし、他のデータベース操作を保護するトランザクションによって特定の書き込み操作が「カバー」されることなく、試行された請求のログをデータベースに書き込むのが最善の方法であると考えています。これは MySQL で可能ですか? 問題のログ テーブルは他に依存していません。アプリケーションでデータを保持してロールバック操作後にデータを書き込むことは、トランザクションの使用を開始する前に作成されたレガシー支払いライブラリが原因でやや困難です。MySQLに解決策がある場合は、それを避けたいと思います。