पेमेंट रिकॉन्सिलिएशन एरर्स को हल करना

एक क्लाइंट के 2,000 डॉलर का नुकसान हुआ। उनके फाइनेंस लीड ने उस अंतर (gap) को खोजने में चार रातें बिता दीं।

समस्या एक 'retry job' की थी। सिस्टम ने 120 पेमेंट्स को दो बार प्रोसेस कर दिया। इसने ग्राहकों से दोबारा पैसे नहीं लिए, बल्कि लेजर (ledger) में केवल डबल रिकॉर्ड जोड़ दिए।

हमने इसे एक 'idempotency layer' के साथ ठीक किया। यह सुनिश्चित करता है कि एक पेमेंट केवल एक ही बार प्रोसेस हो।

हमने इसे इस तरह किया:

  • हमने डबल रिक्वेस्ट को रोकने के लिए Redis lock का उपयोग किया।
  • बैकअप के रूप में हमने डेटाबेस में एक unique index जोड़ा।
  • हमने गेटवे नाम और transaction ID के साथ एक key का उपयोग किया।

हमने एक्सचेंज रेट्स (exchange rates) को भी ठीक किया। सिस्टम लाइव रेट्स का उपयोग कर रहा था। रेट्स तेजी से बदलते हैं, जिससे अंतर (gaps) पैदा हो रहे थे।

अब हम ऑर्डर शुरू होते ही रेट को लॉक कर देते हैं। ग्राहक को एक ही कीमत दिखती है और फाइनेंस टीम को भी वही कीमत दिखती है।

हमने एक डेली रिपोर्ट भी बनाई। यह बैंक की CSV फाइलों की तुलना हमारे रिकॉर्ड्स से करती है। इससे मासिक काम 15 घंटों से घटकर केवल 2 घंटे रह गया।

Excel और देर रात तक काम करने पर निर्भर रहना बंद करें। पेमेंट एरर्स असल में डिज़ाइन की समस्याएँ हैं।

डेटाबेस इंडेक्स से शुरुआत करें। जैसे-जैसे आपका काम बढ़े, Redis locks जोड़ते जाएँ। कभी भी यह मानकर न चलें कि पेमेंट नोटिफिकेशन केवल एक ही बार आएगा।

स्रोत: https://dev.to/yanmoheluo/daigou-code-how-we-solved-payment-reconciliation-nightmares-in-cross-border-order-management-3df7