प्लेबुक
संग्रहण (कब्जा करना) आसान लेकिन अंतिम रूप देना कठिन क्यों है? (Why Payment Capture Is Easy But Finalization Is Hard)
पीएसपी के लिए पैसा प्राप्त करना बस एक कदम है। आदेश समाप्त करें; यह एक ऐसी गाथा है जिसके सफल होने के लिए इन्वेंट्री, वित्त, रिपोर्टिंग और सफाई कदमों की आवश्यकता होती है।
वितरित भुगतान इंजन
भाग 3 का 22
वितरित भुगतान आर्किटेक्चर की एक श्रृंखला जो कैप्चर और पूर्ण के बीच के अंतर को पाटती है।
एक कदम, छह कदम
जब आप कहते हैं "भुगतान प्राप्त हुआ" तो आपका आमतौर पर एक मतलब होता है: प्रदाता गेटवे ने पीएसपी को एक अनुरोध भेजा और पीएसपी ने कहा "मुझे पैसा प्राप्त हुआ"। यह एक कॉल, एक उत्तर, एक पुष्टिकरण है। लेकिन जब आप कहते हैं कि "ऑर्डर पूरा हो गया" तो आपका मतलब बहुत बड़ा है: स्टॉक काट लिया गया है, वित्तीय रिकॉर्ड खोला गया है, ऑर्डर की पुष्टि की गई है, ग्राहक को सूचित किया गया है, टोकरी साफ़ कर दी गई है और किसी भी वफादारी बिंदु पर कार्रवाई की गई है।```text Capture: Checkout Orchestrator → Provider Gateway → PSP → “alındı”
Finalization: Stok düş + Finans kaydı + Sipariş onayı + Bildirim + Sepet temizliği (altı bağımsız adım, altısı da ayrı ayrı başarısız olabilir)
## पहले उल्लेख पर अवधारणाएँ```text
📦 Capture
PSP'nin, önceden ayrılmış veya doğrudan istenmiş bir tutarı fiilen tahsil ettiğini bildirmesi; tek bir dış sistem gerçeğidir.
📦 Finalization
Capture'dan sonra işin gerçekten bitmesi için gereken tüm iç adımların toplamı: stok, finans, onay, bildirim, temizlik.
📦 Saga
Birden fazla adımı, her biri kendi başarısızlık ve telafi mantığıyla, uçtan uca yöneten bir iş akışı deseni.
📦 Telafi Adımı (Compensating Action)
Bir saga adımı geri alınamadığında, önceki adımların etkisini dengelemek için çalıştırılan ters işlem.
📦 Adım İşaretçisi (Step Marker)
Bir saga adımının tamamlandığını kalıcı olarak işaretleyen kayıt; yeniden çalıştığında adımın tekrarlanmasını önler.
```कैप्चर की आसानी इस तथ्य से आती है कि यह एक एकल प्रतिभागी (पीएसपी) और एक प्रतिक्रिया पर निर्भर करता है। अंतिम रूप देने में कठिनाई इस तथ्य से आती है कि यह बड़ी संख्या में प्रतिभागियों पर निर्भर करता है जो स्वतंत्र रूप से असफल हो सकते हैं।
## कैप्चर सरल क्यों है
सफलता के लिए कैप्चर की कसौटी एक वाक्य है: क्या पीएसपी ने कहा "मैंने इसे एकत्र किया" या नहीं? यह जानकारी एक समकालिक प्रतिक्रिया या वेबहुक के साथ आती है, इसके हस्ताक्षर सत्यापित होते हैं, और प्रासंगिक भुगतान रिकॉर्ड `Captured` बन जाता है। यहां एकाधिक डेटाबेस में कोई लेखन नहीं है, कोई एकाधिक सेवा कॉल नहीं है, कोई अन्योन्याश्रित अनुक्रमिक चरण नहीं हैं - बाहरी सिस्टम से हां/नहीं में उत्तर मिलता है।```text
Provider Gateway --istek--> PSP
Provider Gateway <--"captured"-- PSP
↓
Payment.Status = Captured
(bir yazma, bir karar)
```## अंतिम रूप देना एक गाथा क्यों है
एक बार कब्जा हो जाने के बाद, काम खत्म नहीं होता है; असली जटिल हिस्सा अब शुरू होता है। किसी आदेश को "वास्तव में समाप्त" माने जाने के लिए, निम्नलिखित सभी चरण विश्वसनीय रूप से, किसी भी क्रम में होने चाहिए, जब तक कि वे सभी पूरे न हो जाएं:```text
Finalization Saga
1. Stok Servisi'nde rezervasyonu kesin düşüşe çevir
2. Finans/Ledger'da gelir kaydını aç
3. Sipariş satırlarını “onaylandı” olarak işaretle
4. Müşteriye bildirim gönder
5. Sepeti/aktif intent'i temizle
6. (Varsa) sadakat puanı veya kampanya etkisini işle
```इन छह चरणों में से प्रत्येक का अपना त्रुटि पैटर्न है: इन्वेंट्री सेवा अस्थायी रूप से अनुपलब्ध हो सकती है, वित्त सेवा एक सत्यापन त्रुटि उत्पन्न कर सकती है, अधिसूचना सेवा का समय समाप्त हो सकता है। कैप्चर में केवल एक "हाँ/नहीं" था; यहां छह स्वतंत्र "हां/नहीं" हैं, और उनमें से कोई भी दूसरे की गारंटी नहीं देता है।
## आंशिक रूप से अंतिम रूप देना: सबसे खतरनाक मध्यवर्ती अवस्था
सबसे कठिन स्थिति तब होती है जब गाथा का आधा हिस्सा काम करता है और आधा नहीं। उदाहरण के लिए, स्टॉक कम हो गया लेकिन वित्तीय रिकॉर्ड नहीं खोला जा सका; सिस्टम क्रैश हो गया और पुनः आरंभ होने पर कार्यकर्ता को यह जानना होगा कि कौन से चरण पूरे हो चुके हैं।```text
Finalization saga çalışıyor
✓ Stok düşüldü
✓ Sipariş onaylandı
✗ Finans kaydı — worker crash oldu
? Bildirim — henüz denenmedi
Worker yeniden başlar: Hangi adımları TEKRAR çalıştırmalı, hangilerini ATLAMALI?
```आप चरण चिह्नकों के बिना इस प्रश्न का उत्तर नहीं दे सकते। प्रत्येक चरण को अपनी पूर्णता स्थिति को स्थायी रूप से दर्ज करना होगा; अन्यथा, जब कार्यकर्ता पुनरारंभ करता है, तो यह या तो शुरुआत से पूरी गाथा चलाएगा और स्टॉक को दोगुना कर देगा, या यह कुछ नहीं करेगा और ऑर्डर हमेशा के लिए अधूरा रहेगा।
## इस भेद को हल्के में क्यों लिया जाता है
जब अधिकांश टीमें "भुगतान एकीकरण" कहती हैं तो उनका मतलब केवल कैप्चर करना और इसे साप्ताहिक कार्य के रूप में नियोजित करना होता है। फ़ाइनलाइज़ेशन गाथा को आम तौर पर "विवरण" के रूप में देखा जाता है और पर्याप्त रूप से डिज़ाइन किए बिना उत्पादन में चला जाता है। वास्तव में, कैप्चर एक बाहरी सिस्टम से बात कर रहा है, जैसा कि हमने इस श्रृंखला के पहले दो भागों में दिखाया है; अंतिम रूप देने के लिए आपके अपने सिस्टम को अपनी त्रुटियों के प्रति लचीला होना आवश्यक है। उत्तरार्द्ध के लिए बहुत बड़े इंजीनियरिंग निवेश की आवश्यकता होती है।
## इस एपिसोड में सबसे भ्रमित करने वाला मैचअप```text
❌ Ödeme entegrasyonu = Capture'ı çalıştırmak
✓ Ödeme entegrasyonu = Capture + finalization saga'sının tamamı
❌ Capture başarılı olduysa iş bitmiştir
✓ Capture, finalization saga'sının başlangıç tetikleyicisidir, bitişi değil
❌ Saga adımlarının sırası önemli değildir, hepsi “aynı işlem”dir
✓ Her adım bağımsız başarısız olabilir; her birinin kendi retry ve telafi mantığı gerekir
❌ Worker crash olursa saga'yı baştan çalıştırmak güvenlidir
✓ Adım işaretçisi olmadan baştan çalıştırmak, tamamlanmış adımları tekrarlayıp yan etki üretir
आपकी अंतिम गाथा के परीक्षण की सूची
- अपनी अंतिमकरण गाथा में चरण लिखें: कितने चरण हैं, कौन से चरण व्यक्तिगत सेवाओं पर जाते हैं?
- परीक्षण करें कि क्या प्रत्येक चरण अपने आप में निष्क्रिय है: यदि आप एक ही चरण को दो बार चलाते हैं तो क्या परिणाम बदल जाता है?
- गाथा (अराजकता परीक्षण) के बीच में जानबूझकर कार्यकर्ता को मार डालो। जब वह दोबारा शुरू करता है, तो वह कौन से कदम छोड़ता है और कौन से कदम दोहराता है?
- क्या प्रत्येक चरण में विफलता परिदृश्य के लिए मुआवजा या पुनः प्रयास की योजना है, या यह इस धारणा के साथ लिखा गया है कि "यह कदम हमेशा सफल होगा"?
- यदि कैप्चर सफल है लेकिन अंतिम रूप देने की गाथा कभी शुरू नहीं हुई है, तो इसे महसूस करने में कितने मिनट लगेंगे?
यदि आप इन पांच परीक्षणों में से दो में असफल हो जाते हैं, तो आपकी अंतिमकरण गाथा संभवतः "खुशहाल पथ" के लिए लिखी गई थी, न कि त्रुटि पथ के लिए।
इस अनुभाग से याद रखने योग्य बातें
- कैप्चर एकल बाहरी सिस्टम (पीएसपी) से हां/नहीं में उत्तर है; यहीं से इसकी सरलता आती है।
- अंतिम रूप देना एक ऐसी गाथा है जिसे पूरा करने के लिए कई स्वतंत्र चरणों की आवश्यकता होती है; कठिनाई यहीं से आती है।
- आंशिक अंतिमीकरण (कुछ चरण ठीक हैं, कुछ नहीं) सबसे खतरनाक मध्यवर्ती स्थिति है और इसे चरण संकेतकों के बिना सुरक्षित रूप से पुनर्प्राप्त नहीं किया जा सकता है।
- यदि "भुगतान एकीकरण" केवल कैप्चर को कवर करता है, तो परियोजना का सबसे जोखिम भरा हिस्सा योजना से बाहर छोड़ दिया जाता है।
कैप्चर वह क्षण है जब पीएसपी आपसे सहमत होता है। अंतिम रूप तब दिया जाता है जब आप अपने सिस्टम के साथ समझौता कर लेते हैं - और यह आमतौर पर सबसे कठिन हिस्सा होता है।
FAQ
Frequently asked questions
कैप्चर क्या है?
पीएसपी रिपोर्ट करती है कि उसने वास्तव में पहले से आरक्षित या सीधे अनुरोध की गई राशि एकत्र कर ली है; यह एक एकल बाह्य प्रणाली वास्तविकता है.
अंतिम रूप क्या है?
कैप्चर के बाद वास्तव में काम पूरा करने के लिए आवश्यक सभी आंतरिक चरणों का योग: इन्वेंट्री, वित्त, अनुमोदन, अधिसूचना, सफाई।
क्या यह सच है कि "भुगतान एकीकरण = रनिंग कैप्चर"?
भुगतान एकीकरण = संपूर्ण कैप्चर + अंतिमकरण गाथा
यह अनुभाग क्या ठीक करता है?
यह एपिसोड इस श्रृंखला के सबसे विशिष्ट प्रश्न से निपटता है: कब्जा करना आसान और अंतिम रूप देना कठिन क्यों है? कैप्चर एकल बाहरी सिस्टम (पीएसपी) के लिए हां/नहीं में उत्तर है; यहीं से इसकी सरलता आती है। जब आप कहते हैं "भुगतान प्राप्त हुआ" तो आपका आमतौर पर एक मतलब होता है: प्रदाता गेटवे ने पीएसपी को एक अनुरोध भेजा और पीएसपी ने कहा "मुझे पैसा प्राप्त हुआ"। यह एक कॉल, एक उत्तर, एक पुष्टिकरण है। लेकिन जब आप कहते हैं कि "ऑर्डर पूरा हो गया" तो आपका मतलब बहुत बड़ा है: स्टॉक काट लिया गया है, वित्तीय रिकॉर्ड खोला गया है, ऑर्डर की पुष्टि की गई है, ग्राहक को सूचित किया गया है, टोकरी साफ़ कर दी गई है और किसी भी वफादारी बिंदु पर कार्रवाई की गई है।
इंजीनियरिंग सिद्धांत सीखे गए
- कैप्चर एकल बाहरी सिस्टम के लिए हाँ/नहीं में उत्तर है; अंतिम रूप देना एक ऐसी गाथा है जिसके लिए कई स्वतंत्र चरणों को पूरा करने की आवश्यकता होती है।
- आंशिक अंतिमीकरण सबसे खतरनाक मध्यवर्ती अवस्था है; स्टेप मार्कर के बिना सुरक्षित रूप से पुनर्प्राप्त नहीं किया जा सकता।
- भुगतान एकीकरण की वास्तविक इंजीनियरिंग लागत कैप्चर में नहीं है, बल्कि अंतिम रूप देने की गाथा के त्रुटि पथ में है।
जारी रखें पढ़ रहे हैं
जारी रखें पढ़ रहे हैं
श्रृंखला में अगला
अपरिवर्तनीय चेकआउट स्नैपशॉट डिज़ाइन: वह निर्णय जो कार्ट को फ़्रीज़ कर देता है
भुगतान शुरू होते ही कार्ट को लाइव पढ़ने से राशि और मुद्रा अनिर्णीत रह जाती है। इरादे के क्षण में रुक जाने वाले स्नैपशॉट के बिना अंतिम रूप देना विश्वसनीय…
श्रृंखला में अगला
चेकआउट स्थिति मशीन डिज़ाइन: चेकआउट और भुगतान एक ही चीज़ क्यों नहीं हैं?
भुगतान सफल होने का मतलब यह नहीं है कि ऑर्डर पूरा हो गया है। यदि आप चेकआउट और भुगतान जीवनचक्र को अलग नहीं करते हैं, तो उत्पादन में दोनों वास्तविकताएं ओवरलैप…
वही सिलसिला
भुगतान प्रणालियाँ वितरित प्रणालियाँ क्यों हैं?
भुगतान किसी एक सेवा का काम नहीं है: बास्केट, स्टॉक, प्रदाता गेटवे और वित्त को एक ही तथ्य पर सहमत होना चाहिए। तुल्यकालिक श्रृंखला क्यों टूटती है?