同時決済と返金
DEUNAでサポートされている決済フローにおける、重複したキャプチャと返金のリクエストの検証とシリアライズの方法を理解してください。
DEUNAは、サポートされているフローで同じ決済に対する重複したキャプチャまたは返金のリクエストをシリアライズできます。シリアライズにより、累積額の計算が保護されます。1つのリクエストが決済を更新した後、次のリクエストは新しい残高に対して検証されます。
シリアライズの保証#
同時処理が有効なフローの場合、DEUNAは同じ決済に対して、残高を変更する部分のみを1つずつ処理します。これにより、2つの重複したリクエストが同じ古い残高に対して検証されるのを防ぎます。
シリアライズは、すべての重複したリクエストが成功することを保証しません。最初のリクエストが適用された後、後続のリクエストが拒否される可能性があります。その理由は以下のとおりです。
- その金額が残りのキャプチャ可能または返金可能な残高を超えています。
- カットオフ処理がMPCまたはMPRシーケンスを完了しました。
- 最初のリクエストがキャプチャまたは返金シーケンスを完了しました。
- 決済の状態が、その操作を許可しません。
- プロセッサまたは接続が、要求された部分的な操作をサポートしていません。
異なる決済のリクエストは、独立して処理できます。
商社統合に関するガイダンス#
- 既存のキャプチャおよび返金エンドポイントを使用してください。特別な同時処理のエンドポイントはありません。
- 各意図されたビジネス操作に対して、独自のリクエストIDを割り当ててください。クライアントのリトライと2回目の金融操作は同じではありません。
- キャッシュされたステータスまたは単一のレスポンスから次の金額を計算しないでください。最新の決済を取得し、その操作履歴を再開してください。
- 「
partial_capturing,capturing,partial_refunding, およびrefunding未解決の状態として。 - ウェブフックを冪等性を持って処理し、操作の識別子と金額を、決済ステータスだけでなく保存します。
- 競合が発生した場合、残高、カットオフ、最終操作、または無効なステータスの拒否を、権威ある再検証の結果として処理します。 決済を最初に取得せずに、新しい金融取引として再試行しないでください。
範囲と制限#
この動作は、サポートされているキャプチャと返金フローに適用されます。 承認またはキャンセルリクエストを同じシリアライズされた部分操作シーケンスの一部として扱うことはありません。
プロセッサからの呼び出しは、非同期である可能性があります。 シリアライズにより、DEUNAの残高更新を保護できますが、プロセッサのタイムアウトや未処理の応答を、即座に最終的な結果に変換することはできません。 完了または顧客とのコミュニケーションの前に、確認されたステータスを待ってください。
キャプチャの集約とカットオフについては、 MPC — 複数部分決済を参照してください。 返金の集約とカットオフについては、 MPR – 複数分割払い.