भुगतान में दोहराव और बैकऑफ
भुगतान में दोहराव और बैकऑफ
1) रिप्ले की जरूरत क्यों है
रूपांतरण: नरम विफलताएं (टाइमआउट, 3 डीएस त्रुटियां, नेटवर्क विफलताएं) अक्सर दोहराने पर बरामद की जाती हैं: + 2-7 पीपी से ऑथ रेट।
मजबूती: वैकल्पिक मार्गों के साथ रेट्रास द्वारा स्थानीय पीएसपी/एसीएस/बैंक विफलताओं को सुचारू किया जाता है।
खिलाड़ी का अनुभव: सही ढंग से निर्मित रिप्ले दोहरे शुल्क के बिना बुनियादी ढांचे के "शोर" को छिपाते हैं।
2) बुनियादी सिद्धांत
1. "भुगतान इरादे" (पीआई) स्तर पर पहचान: एक ऑपरेशन = एक 'idempotency _ key'; कोई भी सहारा मौद्रिक स्थिति को नहीं बदलता है।
2. त्रुटि पृथक्करण:- कठिन गिरावट (जैसे) एक सख्त जारीकर्ता नीति, 'अपर्याप्त निधि' के साथ 'सम्मान न करें') - आमतौर पर तुरंत वापस नहीं लेना।
- नरम गिरावट/तकनीकी (टाइमआउट, 'जारीकर्ता अनुपलब्ध', 'फिर से कोशिश करें') - पुनर्विचार की अनुमति दी।
- 3. बैकऑफ + सीमा प्रयास: तेजी से देरी में वृद्धि, जोड़ें और सीमा से अधिक नहीं (आमतौर पर 2-3 प्रयास)।
- 4. बंडल रूटिंग: रिट्रे न केवल "एक ही पीएसपी का दोहराव" है, बल्कि PSP/MID/3DS मोड/विधि में भी बदलाव है।
- 5. अवलोकन: प्रत्येक हॉप रूट जर्नल (पीएसपी, कारण, विलंबता, 3 डीएस मोड, शुल्क, परिणाम) में दर्ज किया गया है।
3) पीछे हटने के निर्णय के लिए त्रुटि वर्गीकरण
4) बैकऑफ रणनीतियाँ (अभ्यास)
4. जिटर के साथ 1 घातीय बैकऑफ (अनुशंसित)
База: 'देरी _ n = मिनट (आधार 2 ^ n, max_delay)'
जिटर: 'देरी = रैंड (0, delay_n)' - भगदड़ को कम करता है जब कई अनुरोधों को एक साथ दोहराया जाता है।
विशिष्ट मापदंड 'बेस = 200-500 एमएस', 'मैक्स _ देरी = 5-10 एस', 'n≤2 -3' हैं।
4. 2 रैखिक बैकऑफ
नेटवर्क पर "अशांति" के साथ सरल, लेकिन बदतर। घातीय + जिटर से हीन।
4. 3 टाइमआउट पॉलिसी
क्लाइंट टाइमआउट (आपका) ≤ पीएसपी एसएलए (उदाहरण के लिए, 3-5 एस), अन्यथा डुप्लिकेट/फ्रीज का जोखिम बढ़ जाता है।
वेबहुक/पुष्टि के लिए प्रतीक्षा समय अलग से निर्धारित करें: यदि पुष्टि नहीं आती है - क्षतिपूरक सामंजस्य (खाता/पीएसपी)।
5) आइडेम्पोटेंस और सुरक्षा के खिलाफ लेता है
भुगतान इरादे (पीआई) स्थिति, राशि, विधि, 'idempotency _ key', मार्ग इतिहास को संग्रहीत करता है।
प्रत्येक हॉप और रीट्री एक ही कुंजी का उपयोग करें।
क्षतिपूर्ति लेनदेन: जब सिंक से बाहर (पीएसपी में अनुमोदन, और आपके पास एक समय समाप्ति) - "सामंजस्य-पुल" + खाता समायोजन।
वेबहुक को फिर से वितरित करते समय पुनः प्राधिकरण को बाहर करें: विशिष्टता के लिए 'ट्रांजेक्शन _ आईडी '/' पीएसपी संदर्भ' की जाँच करें।
6) 3DS/SCA और दोहराव
चुनौती के साथ घर्षण रहित - पीछे हटने के बाद नरम गिरावट।
एसीएस टाइमआउट/अनुपलब्ध → घातीय बैकऑफ, फिर एक वैकल्पिक चैनल (ओपन बैंकिंग/एपीएम) या अन्य पीएसपी।
एसीएस के बड़े पैमाने पर गिरावट के साथ - सर्किट-ब्रेकर, विकास 'चुनौती दर', राशि पर समय सीमा।
7) एपीएम/ओपन बैंकिंग के लिए प्रतिनिधि
ओपन बैंकिंग/इंस्टेंट रेल (SEPA इंस्टेंट/FPS/Pix/UPI):- रिट्रे सीमित हैं: प्रदाता पक्ष पर पहचान की जाँच करें और विलंबित वेबहुक्स में स्टेटस।
- अनिश्चितकालीन स्थिति के साथ - बैकऑफ और सख्त सामंजस्य के साथ मतदान।
- वाउचर/कैश: रिट्रे "ऑनलाइन लेनदेन" के रूप में लागू नहीं होते हैं, लेकिन नियत तारीख नियंत्रण और "स्थिति ताज़ा" लागू होते हैं।
8) भुगतान: रिप्ले और कतारें
बैंक/पीएसपी तकनीकी विफलता - बैकऑफ नाली के साथ कतारबद्ध भुगतान।
KYT/वेग विफल - रिट्रीम नहीं, मैनुअल जांच में स्थानांतरित करें।
कतार प्राथमिकता: वीआईपी/छोटी मात्रा/आवेदन आयु; एसएलए और ऑटो-एस्केलेशन समय सीमा।
दूसरे वापस लिए गए चरण में वैकल्पिक रेल (RTP/FPS/SEPA इंस्टेंट/Pix)।
9) सर्किट-ब्रेकर और रेट्राई
स्थानीय (PSP/MID/BIN पर): जब त्रुटियां स्पाइक होती हैं, तो → इस मार्ग पर रिट्रेज़को रोकें, एक वैकल्पिक पर स्विच करें।
वैश्विक (प्रति विधि/क्षेत्र): प्रणालीगत गिरावट - विधि को अक्षम करें, हम एपीएम/खुली बैंकिंग प्रदान करते हैं।
हाफ-ओपन: पूर्ण रिटर्न से पहले वसूली की जांच करने के लिए ट्रैफिक का हिस्सा (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) केपीआई और लक्ष्य
रिट्रीज़से वृद्धिशील अनुमोदन: + 2-7 पीपी से आधार रूपांतरण।
Avg Retry प्रति अनुमोदित Tx: 1। 2–1. 5 (1 से नीचे रखें। 7).
रीट्री सक्सेस रेट (सॉफ्ट/टेक): ≥ 25-40%।
डुप्लिकेट दर: 0 सही पहचान के साथ।
P95 विलंबता (पुनरावृत्ति सहित): <7 s अंतिम प्रतिक्रिया तक।
पेआउट एसएलए (तत्काल शेयर): ≥ 70% आसान चेक, ओवरड्यू <लक्ष्य सीमा।
12) हादसा प्लेबुक
ए। पीएसपी-ए पर मास टाइमआउट
1. PSP-A के लिए स्थानीय ब्रेकर खोलें।
2. PSP-B/APM को पुनः आवंटित करें।
3. जिटर के साथ घातीय बैकऑफ, 2-3 प्रयासों को सीमित करें।
4. 10-15 मिनट के बाद कैनरी आधा खुला।
बी का क्षरण ACS/3DS
1. वृद्धि 'नरम गिरावट', टाइमआउट द्वारा पता लगाना।
2. चुनौती दर में वृद्धि; यातायात का हिस्सा - खुला बैंकिंग।
3. अलग भारी जाँच सेट करें, वेग सीमा चालू करें।
सी। भुगतान में देरी
1. कतार में स्थानांतरण, वीआईपी/छोटी मात्रा की प्राथमिकता।
2. वैकल्पिक रेल (RTP/FPS/SEPA इंस्टेंट/Pix) के लिए पुनर्मिलन।
3. खिलाड़ियों को संचार + ऑटो-एस्केलेशन।
13) अवलोकन और डेटा
रूट जर्नल: PSP/MID, BIN/जारीकर्ता, कारण, विलंबता, 3DS-режим, पुनरावृत्ति श्रृंखला, итог, शुल्क।
डैशबोर्ड: ऑथ रेट (बैंक द्वारा), रीट्री सक्सेस, एवीजी प्रयास, डिकवरी मिक्स, पी 95 लेटेंसी, पेआउट क्यू डेप्थ।
अलर्ट: कारण कोड द्वारा स्पाइक्स, प्रयासों/विलंबता में वृद्धि, आउटपुट कतारों का अतिप्रवाह।
14) कार्यान्वयन चेकलिस्ट
वास्तुकला/डेटा
- भुगतान इरादा + 'idempotency _ key' hops।
- कारण कोड कॉन्फिग मैट्रिक्स: पुनर्प्राप्य बनाम गैर-पुनर्प्राप्य।
- PSP संदर्भ द्वारा हस्ताक्षरित वेबहुक, डीडुप्लिकेशन।
बैकऑफ/नियम
- जिटर के साथ घातीय बैकऑफ; प्रयासों और खिड़की समय की सीमा।
- स्मार्ट रीट्री: 3DS/MID/PSP/method परिवर्तन; बनाम एपीएम/ओपन बैंकिंग कार्ड के लिए अंतर।
- सर्किट-ब्रेकर (स्थानीय/वैश्विक), आधा-खुला-कैनरी।
खाता/सामंजस्य
- "निलंबित" स्थिति के साथ लेनदेन की क्षतिपूर्ति।
- T + 0/T + 1 सामंजस्य: PSP ↔ बैंक ↔ मनी लेजर।
- पुष्टि/वेबहुक पर टाइमआउट और एसएलए नीति।
संचालन/अनुपालन
- आरजी/प्रतिबंध/पीईपी/आयु - रिट्रेज़से पहले।
- KYT/वेग - भुगतान; मैनुअल समीक्षा नियम।
- घटनाओं/वृद्धि के लिए रनबुक और आरएसीआई।
15) अर्थशास्त्र और जोखिम
3DS-phia, FX, चार्जबैक-वैल्यू, रेट्रे-ओवरहेड को ध्यान में रखते हुए प्रभावी दर पर विचार करें।
हार्ड सीमा उच्च जोखिम वाले खंडों को वापस लेती है ताकि चार्जबैक जोखिम और भंडार को ओवरलॉक न किया जा सके।
16) नीचे की रेखा
दोहराव तब काम करते हैं जब वे नियंत्रणीय होते हैं: पहचान, कारण कोड का एक स्पष्ट मैट्रिक्स, जिटर के साथ घातीय बैकऑफ, प्रयास प्रतिबंध और रूटिंग (PSP/3DS/method परिवर्तन) के साथ एक बंडल। सर्किट-ब्रेकर, पेआउट कतारें और मजबूत सामंजस्य जोड़ें - और आप लगातार रूपांतरण को बढ़ाते हैं और बिना लेते हैं और नकदी छेद बनाते हैं।