最近、クレジットカード処理を扱うプロジェクトを完了しました。私が直面した問題の1つは、通知メッセージの遅延/起こりうる失敗の処理でした。最も複雑な例は次のとおりです。
- 支払い要求を送信する外部システム
- 私のシステムはその要求を支払いゲートウェイへの要求に変えます
- ユーザーをゲートウェイに送信する
- ユーザーが支払いを実行するのを待っています
- ユーザーがシステムに戻ったが、システムが成功/失敗の通知を受け取るまで保留される
- 失敗に応じてユーザーを外部システムに送り返す
さらに困難だったのは、通知の送信に失敗すると、ゲートウェイは15分ごとに何時間も通知を送信しようとすることでした。
保留中のトランザクションのデータベースレコードを使用して解決し、リターンからの成功と失敗に加えて、通知とトランザクション処理のための時限遅延リスナーを検出しました...
かなり難しい!
しかし、これは何億回も前に解決されたに違いないので、ベストプラクティスは何ですか?
私の将来は、これらすべてのシステム間の処理を記述し、時間遅延と起こりうるネットワーク障害を管理することになるので、ベストプラクティスに従いたいと思います。
本/記事の推奨事項は素晴らしいでしょう。
前もって感謝します!