GH GambleHub

გამეორება და backoff გადახდები

გამეორება და backoff გადახდები

1) რატომ გვჭირდება გამეორება?

კონვერტაცია: რბილი უკმარისობა (Timeouts, 3DS შეცდომები, ქსელის უკმარისობა) ხშირად აღდგენილია განმეორებით: + 2-7 პროცენტული პუნქტით Auth Rate- ზე.
სტაბილურობა: PSP/ACS/Bank- ის ადგილობრივი ჩავარდნები შერბილებულია ალტერნატიული მარშრუტებით.
მოთამაშის გამოცდილება: სწორად აშენებული გამეორებები მალავს ინფრასტრუქტურის „ხმაურს“ ორმაგი ჩამოწერის გარეშე.


2) ძირითადი პრინციპები

1. Idempotence „payment intent“ (PI) დონეზე: ერთი ოპერაცია = ერთი „idempotence _ key“; ნებისმიერი განმეორებითი მიმართვა არ ცვლის ფულადი სახსრებს.

2. შეცდომების გამიჯვნა:
  • Hard decline (მაგ. 'Do not honor', ემიტენტის მკაცრი პოლიტიკით, 'Insufficient funds'), ჩვეულებრივ, დაუყოვნებლივ არ იჭრება.
  • Soft decline/ტექნიკური (Timeout, 'Issuer unavable', 'Try again') ნებადართულია.
  • 3. Backoff + მცდელობის შეზღუდვა: ჩვენ ექსპონენტურად ვზრდით შეფერხებას, დავამატებთ ჯიტერს და არ აღემატება ლიმიტებს (ჩვეულებრივ, 2-3 მცდელობას).
  • 4. მარშრუტიზაცია თაიგულში: rettray არა მხოლოდ „იგივე PSP განმეორება“, არამედ PSP/MID/3DS რეჟიმში/მეთოდის შეცვლა.
  • 5. დაკვირვება: თითოეული ჰოპი აღირიცხება Route Journal- ში (PSP, reason, latency, 3DS რეჟიმი, fee, შედეგი).

3) შეცდომების კლასიფიკაცია ჭიდაობის გადასაჭრელად

კლასიმაგალითებირეკომენდაცია
ქსელი/ტექნიკურიtimeout, 5xx, `Issuer/ACS unavailable`, webhook delayRetray ერთად backoff; შეგიძლიათ შეცვალოთ PSP/MID/3DS
Soft decline (საპირისპირო)'Pickup card (soft)', 'Do not honor' (საქმეების ნაწილი), 'Processing error'Retray 1-2 ჯერ, შესაძლოა 3DS/მარშრუტის ცვლილებით
Hard decline (საბოლოო)`Insufficient funds`, `Invalid card`, `Expired card`, `Restricted card`, `Do not honor` (жесткий)არ გამოტოვოთ (ან გთავაზობთ ალტერნატიულ მეთოდს)
3DS შეცდომები`Authentication unavailable`, timeout ACS, `Soft decline` после frictionlessChallenge Retray ან Open banking
რისკი/შესაბამისობასანქციები/REP, RG ბლოკი, velocity შეზღუდვებიჩვენ არ ვჭამთ; უარის თქმის ბიზნეს ლოგიკა
💡 შენიშვნა: ზუსტი მატრიცა დამოკიდებულია სქემაზე/PSP. შეინახეთ whitelist/blacklist reason კოდები ორკესტრის კონფისკაციაში.

4) Backoff სტრატეგია (პრაქტიკა)

4. 1 ექსპონენტური backoff ერთად ჯიტერი (რეკომენდებულია)

База: `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 ხაზოვანი backoff

მარტივი, მაგრამ უარესი ქსელში „არეულობის“ დროს. inferior to ექსპონენციალური + ჯიტერი.

4. 3 დროის პოლიტიკა

Client timeout (თქვენი) არის PSP SLA (მაგალითად, 3-5 ს), წინააღმდეგ შემთხვევაში, დუბლიკატების/შემცირების რისკი იზრდება.
ცალკე, განსაზღვრეთ webhook/confirm ლოდინის დრო: თუ დადასტურება არ მოვიდა, კომპენსაციის შერიგება (ledger/PSP).


5) Idempotence და დაცვა დუბლისგან

Payment Intent (PI) ინახავს სტატუსს, თანხას, მეთოდს, „idempotency _ key“, მარშრუტების ისტორიას.
თითოეული hop და retry იყენებენ იმავე კლავიშს.
კომპენსაციის გარიგებები: PSP- ში approve (approve და თქვენ გაქვთ timeout) - „reconcile-pull“ + მენეჯერის კორექტირება.
გამორიცხეთ ხელახალი დამტკიცება webhook- ის ხელახალი მიწოდებისას: შეამოწმეთ „გადარიცხვა _ id “/„ PSP რეპლიკა“ უნიკალურობისთვის.


6) 3DS/SCA და გამეორებები

Soft decline შემდეგ frictionless - challenge.
ACS timeout/unavailable არის ექსპონენტური backoff, შემდეგ ალტერნატიული არხი (Open banking/APM) ან სხვა PSP.
ACS- ის მასობრივი დეგრადაციით - circuit-breaker, ზრდა 'challenge rate', დროებითი თანხების ლიმიტები.


7) გამეორება APM/Open banking

Open banking/instant rails (SEPA Instant/FPS/Pix/UPI):
  • Retrais შეზღუდულია: შეამოწმეთ idempotence პროვაიდერის მხარეს და სტატუსები გადავადებულ webhook 'ax- ში.
  • გაურკვეველი სტატუსით - backoff- ის პოლინგი და მკაცრი კრიკეტები.
  • ვაუჩერები/ფულადი სახსრები: retrais არ გამოიყენება როგორც „ონლაინ გარიგება“, მაგრამ მოქმედებს გადახდის ვადის კონტროლი და „status refresh“.

8) Payouts (დასკვნები): გამეორება და ხაზები

ბანკის/PSP ტექნიკური უკმარისობა backoff-dren- ით.
KYT/velocity fail არ არის მიმართული, გადასვლა სახელმძღვანელო აუდიტში.
რიგის პრიორიტეტიზაცია: VIP/მცირე თანხები/განაცხადის შეზღუდვები; SLA ვადა და მანქანის ესკალაცია.
ალტერნატიული რელსები (RTP/FPS/SEPA Instant/Pix) ჭრის მეორე ეტაპზე.


9) Circuit-breaker და retrai

ადგილობრივი (PSP/MID/BIN): შეცდომების გაჩენისას, ამ მარშრუტზე შეჩერდით retrais, გადავიდეთ ალტერნატივაზე.
გლობალური (მეთოდით/რეგიონისთვის): სისტემის დეგრადაცია - გამორთეთ მეთოდი, გთავაზობთ APM/Open banking.
Half-Open: ჩვენ ვუბრუნებთ ტრაფიკის ნაწილს (1-5%), რომ შეამოწმოს გამოჯანმრთელება სრული დაბრუნებამდე.


10) Retray- ის სტრატეგიის ფსევდო კოდი

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 და სამიზნეები

Incremental Approvals from Retries: + 2-7 პროცენტული პუნქტით საბაზო კონვერტაციამდე.
Avg Retry Attempts per Approved Tx: 1. 2–1. 5 (შეინახეთ ქვემოთ 1. 7).
Retry Success Rate (soft/tech): ≥ 25–40%.
Duplicate Rate: 0 სწორი იდემპოტენტობით.
P95 Latency (ჭიდაობის გათვალისწინებით): <7 საბოლოო პასუხით.
Payout SLA (instant chal): მსუბუქი ჩეკების 70% -ზე მეტი, შეფერხებები <სამიზნე ბარიერი.


12) ინციდენტების ფლეიბუკი

A. მასიური timeouts PSP-A- ზე

1. გახსენით ადგილობრივი breaker PSP-A.
2. გადანაწილება retrais PSP-B/APM.
3. ექსპონენტური backoff ერთად ჯიტერი, 2-3 მცდელობის ლიმიტი.
4. კანარიკა ჰალფ-ღია 10-15 წუთში.

B. ACS/3DS დეგრადაცია

1. დეტალი ზრდის 'soft decline', timeouts.
2. გაზარდეთ გამოწვევა; ღია ბანკინგის ტრაფიკის ნაწილი.
3. გადადით მძიმე ჩეკები, ჩართეთ შეზღუდვები velocity.

C. შეფერხებები

1. გადარიცხვა, VIP/მცირე თანხების პრიორიტეტიზაცია.
2. ალტერნატიული სარკინიგზო მიმოსვლა (RTP/FPS/SEPA Instant/Pix).
3. მოთამაშეთა კომუნიკაცია + მანქანის ესკალაცია.


13) დაკვირვება და მონაცემები

Route Journal: PSP/MID, BIN/issuer, reason, latency, 3DS-режим, retry chain, итог, fee.
დაშბორდები: Auth Rate (ბანკების მიხედვით), Retry Success, Avg Attempts, Decline Mix, p95 latence, Payout Queue Depth.
ალერტები: რეზინის კოდების სპიკერები, მცდელობების/ლატენტობის ზრდა, დასკვნების რიგების გადაფარვა.


14) განხორციელების ჩეკის ფურცლები

არქიტექტურა/მონაცემები

  • Payment Intent + `idempotency_key` на все hops.
  • Reason კოდების მატრიქსის ჩამორთმევა: retryable vs non-retryable.
  • ხელმოწერილი webhooks, PSP რეპლიკაცია.

Backoff/წესები

  • ექსპონენტური backoff ერთად ჯიტერი; მცდელობების ლიმიტი და ფანჯრის დრო.
  • Smart retry: შეცვლა 3DS/MID/PSP/მეთოდი; განსხვავება APM/ღია ბანკინგის ბარათებისთვის.
  • Circuit-breakers (ადგილობრივი/გლობალური), half-Open-canares.

ლეგერი/კრიკერები

  • ანაზღაურებადი გარიგებები „შეჩერებული“ სტატუსებით.
  • T + 0/T + 1 კრეკერები: PSP - Bank - ფულადი ლეჯერი.
  • დროის მართვის პოლიტიკა და SLA კონფიგურაცია/webhook.

ოპერაციები/შესაბამისობა

  • RG/სანქციები/PEP/ასაკი - რეაგირებამდე.
  • KYT/velocity на payouts; სახელმძღვანელო შურისძიების წესები.
  • Runbooks და RACI ინციდენტების/ესკალაციებისთვის.

15) ეკონომიკა და რისკი

გაითვალისწინეთ effective ღირებულება 3DS ფიის, FX, charjbeck ღირებულების, retray overhead.
მკაცრად შეზღუდეთ მაღალი დონის სეგმენტები, რათა არ დააჩქაროთ chargeback exposure და რეზერვები.


16) შედეგი

გამეორებები მუშაობს, როდესაც ისინი კონტროლდებიან: idempotence, Reason კოდების მკაფიო მატრიცა, ექსპონენციალური backoff ერთად ჯიტერი, მცდელობების შეზღუდვა და მარშრუტიზაციასთან დაკავშირება (PSP/3DS/მეთოდის შეცვლა). დაამატეთ circuit-breaker, ხაზები payouts და ძლიერი კრეკერები - და თქვენ სტაბილურად აამაღლებთ კონვერსიას დუბლების და სალარო ხვრელების შექმნის გარეშე.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.