GH GambleHub

支払いの繰り返しとバックオフ

支払いの繰り返しとバックオフ

1)リプレイが必要な理由

変換:ソフトエラー(タイムアウト、3DSエラー、ネットワーク障害)はリピート時に回復されることが多い:+2-7 pp to Auth Rate。
堅牢性:ローカルのPSP/ACS/バンク障害は、代替ルートのレトラによってスムーズになります。
プレーヤーの経験:正しく構築されたリプレイは、二重充電なしでインフラストラクチャの「ノイズ」を隠します。


2)基本原則

1.「payment intent」 (PI)レベルのidempotency: 1つの操作=1つの'idempotency_key';金銭的条件を変更することはありません。

2.エラーの分離:
  • ハード低下(例:厳格な発行者ポリシーで「尊重しない」、「不十分な資金」)→通常はすぐに再試行しません。
  • ソフトダウンロード/テクニカル(タイムアウト、'Issuer unavailable'、 'Try again')→許可リトレイ。
  • 3.バックオフ+リミット試行:指数関数的に遅延を増加させ、ジッタを追加し、制限を超えません(通常は2-3試行)。
  • 4.バンドルルーティング:リトレイは「同じPSPの繰り返し」だけでなく、PSP/MID/3DSモード/メソッドの変更でもあります。
  • 5.観測可能:各ホップはルートジャーナル(PSP、 reason、 latency、 3DSモード、料金、結果)に記録されます。

3)後退決定のためのエラー分類

Class(クラス)例:おすすめ情報
ネットワーク/テクニカルタイムアウト、5xx、'発行者/ACSが利用できない'、webhookの遅延バックオフ付きリトレイ。変更することができますPSP/MID/3DS
柔らかい衰退「ピックアップカード(ソフト)」「、敬わない」(ケースの一部)「、処理エラー」リトレイ1-2回、おそらく3DS/routeの変化と
ハード衰退(ファイナル)「資金不足」「、無効カード」「、期限切れカード」「、制限カード」「、尊重しない」(жесткий)Not retrayim(または代替方法を提案)
3DS-mistakes'Authentication unavailable'、 timeout ACS、 'Soft decline' frictionlessチャレンジまたは代替方法(オープンバンキング)でリトレイ)
リスク/コンプライアンス制裁/PEP、 RGブロック、速度制限リトレイイムではありません。失敗のビジネスロジック
💡 注:厳密な行列は回路/PSPによって決まります。オーケストレーターの設定にホワイトリスト/ブラックリストの理由コードを保存します。

4)バックオフ戦略(実践)

4.1ジッタ付き指数関数バックオフ(推奨)

'delay_n=min (base 2^n、 max_delay)'

ジッタ:'delay=rand (0、 delay_n)'-多くのリクエストが同時に繰り返されると、スタンピードが減少します。
典型的なパラメータは'base=200-500 ms'、 'max_delay=5-10 s'、 'n ≤ 2-3'である。

4.2リニアバックオフ

ネットワーク上の「不安」で単純ではあるが、さらに悪い。指数+ジッタより劣る。

4.3タイムアウトポリシー

クライアントタイムアウト(あなたの)≤ PSP SLA(例えば、3-5秒)、そうでなければ重複/フリーズのリスクが増加します。
webhook/confirmの待ち時間を別々に設定します。確認が来ない場合→補償和解(元帳/PSP)。


5) Idempotenceおよびテイクに対する保護

Payment Intent (PI)は、ステータス、金額、メソッド、'idempotency_key'、ルート履歴を格納します。
各ホップとリトライは同じキーを使用します。
トランザクションの補償:同期切れ(PSPで承認し、タイムアウトがある場合)-"reconcile-pull'+レジャー調整。
Webhookを再配達するときに再認証を除外します:一意性について'transaction_id'/'PSP reference'をチェックします。


6) 3DS/SCAと繰り返し

摩擦のない→挑戦との再試験の後の柔らかい衰退。
ACSタイムアウト/利用不可→指数バックオフ、代替チャネル(オープンバンキング/APM)または別のPSP。
ACSの大量劣化-遮断器、成長「チャレンジレート」、量の時間制限。


7) APM/オープンバンキング担当

オープンバンキング/インスタントレール(SEPA Instant/FPS/Pix/UPI):
  • リトレイは制限されています:プロバイダ側のidempotenceと遅延webhook 'axのステータスをチェックします。
  • 無期限のステータスで-バックオフと厳密な和解でポーリング。
  • バウチャー/現金:「オンライントランザクション」にはリトレイは適用されませんが、期日管理と「ステータス更新」が適用されます。

8)支払い: リプレイとキュー

銀行/PSP技術的障害→バックオフドレインによるキュー配当。
KYT/velocityの失敗→retrayemの手動点検への移動ではないです。
キューの優先順位付け:VIP/少量/アプリケーションの年齢;SLAと自動エスカレーションの期限。
2番目の引き込みステップの代替レール(RTP/FPS/SEPA Instant/Pix)。


9)遮断器およびレトライ

ローカル(PSP/MID/BIN):エラーがスパイクした場合、このルートでリトレイを停止し、代替ルートに切り替えます。
Global (per method/region):全身劣化→メソッドを無効にし、APM/オープンバンキングを提供しています。
ハーフオープン:トラフィックの一部(1-5%)を返却し、完全復帰前に回復を確認します。


10)リトレイ戦略の擬似コード

python def pay_with_retries(pi):
ensure_idempotency(pi.key)
if not compliance_pass(pi): return REJECT

routes = rank_candidates(pi) # по вероятности approve, fee, health attempts = 0 for route in routes:
policy3ds = select_3ds(pi, route)
res = call_psp(route, pi, policy3ds, pi.key, timeout=3.0)
log_attempt(pi, route, res)

if res.approved: return APPROVED

if is_soft_decline(res) or is_transient_error(res):
while attempts < MAX_ATTEMPTS and not breaker_open(route):
delay = backoff_with_jitter(base=0.3, attempt=attempts, cap=8.0)
sleep(delay)
policy3ds = maybe_toggle_3ds(policy3ds, res)
res = call_psp(route, pi, policy3ds, pi.key, timeout=3.0)
log_attempt(pi, route, res)
attempts += 1 if res.approved: return APPROVED if is_hard_decline(res): break перейти к следующему маршруту (PSP-B/APM/open banking)
return DECLINED

11) KPIとターゲット

再試行からの差分承認:+2-7 ppからベースへの変換。

承認されたTxごとのAvg再試行回数: 1。2–1.5(1の下に保つ。7).

再試行成功率(ソフト/テック):≥ 25-40%。
重複レート:0と正しいidempotency。
P95レイテンシー(リトレイを含む):最終応答まで<7 s。
ペイアウトSLA(インスタントシェア):簡単なチェックの≥ 70%、期限切れ<ターゲットのしきい値。


12)インシデントプレイブック

A。 PSP-Aのマスタータイムアウト

1.PSP-Aのローカルブレーカを開く。
2.PSP-B/APMに再配置します。
3.ジッタによる指数関数的なバックオフ、2〜3回の試行を制限します。
4.カナリアのハーフオープン後10-15分。

B。 ACS/3DSの劣化

1.成長による検出'柔らかい衰退'、タイムアウト。
2.チャレンジレートを上げる。トラフィックの一部→オープンバンキング。
3.重いチェックを脇に置き、速度制限をオンにします。

C。ペイアウトの遅延

1.キューへの転送、VIP/少量の優先順位付け。
2.代替レール(RTP/FPS/SEPA Instant/Pix)へのレールアウト。
3.プレーヤーへのコミュニケーション+自動エスカレーション。


13)観測可能性とデータ

ルートジャーナル: PSP/MID、 BIN/issuer、 reason、 latency、 3DS-режим、 retry chain、……

ダッシュボード:Auth Rate (by bank)、 Retry Success、 Avg Attempts、 Decline Mix、 p95 latency、 Payout Queue Depth。
アラート:理由コードによるスパイク、試行/遅延の増加、出力キューのオーバーフロー。


14)実装チェックリスト

アーキテクチャ/データ

  • Payment Intent+'idempotency_key'が表示されます。
  • Reason code config matrix: retryable vs non-retryable。
  • 署名されたwebhook、 PSPリファレンスによる重複除外。

バックアップ/ルール

  • ジッタ付き指数関数バックオフ;試みおよび窓の時間の限界。
  • スマートな再試行:3DS/MID/PSP/methodの変更;vs APM/オープンバンキングカードの区別。
  • サーキットブレーカ(ローカル/グローバル)、ハーフオープンカナリー。

元帳/和解

  • 「中断」状態で取引を補償します。
  • T+0/T+1和解:PSP ↔銀行↔マネー台帳。
  • 確認/webhookのタイムアウトとSLAポリシー。

オペレーション/コンプライアンス

  • RG/制裁/PEP/年齢-リトレイ前。
  • KYT/velocityペイアウト;手動レビュールール。
  • インシデント/エスカレーションのためのRunbooksとRACI。

15)経済とリスク

3DS-phia、 FX、チャージバック値、リトレイオーバーヘッドを考慮して、有効率を検討してください。
チャージバックの露出と埋蔵量をオーバークロックしないように、高リスクセグメントへのハードリミットリトレイ。


16)ボトムライン

繰り返しは、制御可能なときに動作します:idempotency、理由コードの明確な行列、ジッタ付き指数バックオフ、試行制限、およびルーティング付きのバンドル(PSP/3DS/method変更)。サーキットブレーカー、ペイアウトキュー、強力な調整を追加し、テイクとキャッシュホールを作成せずにコンバージョンを一貫して引き上げます。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。