リソース · 47
不確実な支払い:重複注文なしでチェックアウトを回復する
単一のシグナルのみを十分なものとして扱うのではなく、ネットワーク遅延、ブラウザからの戻り値、通知、およびビジネス状態を調整します。
更新済み · 4 min
このガイドが達成するのに役立つこと
- 試行、支払い、注文を分離する
- 遅延または未着の返品を処理する
- 通知とリクエストの重複を排除する
- ユーザーに再度支払いを求めることなく、不確実性を説明する
クイックチェック
- どのソースが支払いを確認するのか?
- ブラウザを閉じるとビジネス状態は変化するのか?
- 繰り返し発生するイベントは2つの注文を準備するのか?
- イベント署名はチェックされるのか?
- サポートはどのようにして不確実な操作を検出するのか?
手順
- 1
状態を定義する
カート、試行、承認、支払い確認、注文、返金を個別に管理する。 遷移、権限のあるソース、許可されたアクションを記述する。 実際のプロバイダーと支払い方法に従う。 すべての方法が即座に確認できるとは限らない。
成果物:状態図とビジネス契約。
- 2
操作を識別する。
試行を注文とプロバイダー識別子に関連付ける。 同じ操作を繰り返す場合は、文書化された冪等性ルールを使用する。 新しい目的や変更されたパラメータの場合は、盲目的なキーの再利用ではなく、明示的な判断が必要となる。
成果物:安定したIDと回復ルール。
- 3
ブラウザの戻りを処理する。
プロバイダーに適したサーバー側チェックからの状態を表示する。 成功ページへのリダイレクトだけでは支払いの証拠とはならない。 ブラウザが閉じられた場合、戻りがなかった場合、認証が中断された場合、ネットワークが遅い場合に対応する。
成果物:状態ごとの戻り経路とメッセージ。
- 4
通知の検証
プロバイダーのドキュメントに従って真正性を確認し、イベントIDを記録し、重複効果なしで繰り返し処理を行います。 イベントは遅延したり、順序がずれたりする場合があります。 必要に応じて、不可逆的な遷移の前に参照オブジェクトを取得します。
成果物:テスト済みのハンドラーと銀行データを含まないトレース。
- 5
不一致の調整
プロバイダーの操作、注文、および履行を比較します。 注文なしの支払い、確認なしの注文、二重処理、および未伝播の払い戻しを分離します。 各不一致に所有者と手順を割り当て、不確実な請求を自動的に繰り返さないようにします。
成果物:調整キューと決定。
- 6
完全復旧のテスト
プロバイダーのテストモードで、タイムアウト、重複、遅延イベント、逆注文、および未返却を再生します。 1つのビジネス遷移、正しい顧客情報、およびサポートの可視性を確認します。 冪等性の詳細はプロバイダーによって異なります。
成果物:重複排除の証拠および導入基準。
架空の事例
具体的な状況
例:支払いは成功しましたが、顧客が確認前に接続を失い、その後2つの通知が届きました。
決定と期待される証拠
1つの注文が確認されました。 リカバリでは検証済み状態が表示され、サポートは銀行口座の詳細を要求することなく参照情報を照合できます。
メカニズムの区別
| メカニズム | 目的 | 検証または制限 |
|---|---|---|
| ブラウザの戻り | インターフェースの通知と再開 | 欠落または中断される可能性がある |
| 検証済みウェブフック | プロバイダの状態変更を受信 | 繰り返し、遅延、または順序が乱れる可能性がある |
| サーバー調整 | 支払いと注文の状態を比較 | 不一致解決ルールが必要 |
管理指標
| 指標 | 測定対象 | 最初のアクション |
|---|---|---|
| 不確実な状態 | 意図した遅延時間内に解決されない操作 | 参照状態を確認 |
| 重複効果 | 注文または処理が二重に実行された | ビジネス重複排除を修正 |
| ギャップを解消 | 決定と証拠に基づいて調整されたケース | 最も古いケースと重要なケースを処理 |
よくある間違い
- 成功URLのみからの確認
- タイムアウトを支払い失敗として扱う
- イベントの想定 順番通りに届く
- 確認前に請求を繰り返す
よくある質問
タイムアウトは失敗を意味しますか?
いいえ。遅延時間内に応答が受信されなかったことを意味します。 別の操作を作成する前に、操作の状態を確認してください。
プロバイダの冪等性は十分ですか?
いいえ。注文の作成、履行、通知は、重複したビジネス効果なしに繰り返し処理を許容する必要があります。
ユーザーには何を伝えるべきですか?
検証が進行中であることを説明し、安全な参照情報とステータスを取得する方法を提供します。 前回の支払いが不確実な間は、別の支払いを要求しないでください。
公式参照文献
参照文献はメソッドを裏付けるものです。 チェックは状況に合わせて調整してください。 これらは認証ではありません。 元の参照文献のタイトルやソース文書は別の言語で書かれている場合があります。






