उन भुगतानों का रिफंड करना बंद करें जिन्हें आपको कभी चार्ज ही नहीं करना चाहिए था
कई डेवलपर्स ऐसा चेकआउट फ्लो पेश करते हैं जो कार्ड से तुरंत पैसे काट लेता है। उसके बाद, वे स्टॉक चेक या फ्रॉड चेक जैसी ऑर्डर वैलिडेशन प्रक्रियाएं चलाते हैं।
यदि वैलिडेशन विफल हो जाता है, तो कोड रिफंड जारी कर देता है।
इससे आपके ग्राहकों के लिए समस्याएँ पैदा होती हैं। वे पहले एक चार्ज देखते हैं और फिर कुछ दिनों बाद एक रिफंड। उन्हें लगता है कि आपकी कंपनी भरोसेमंद नहीं है। उन्हें लगता है कि उनका पैसा कहीं फंस गया है।
रिफंड की वास्तविक लागतें होती हैं:
- जब ग्राहक दो अलग-अलग ट्रांजेक्शन देखते हैं, तो वे भरोसा खो देते हैं।
- बैंक स्टेटमेंट में रिफंड दिखने में 5 से 10 दिन लग जाते हैं।
- आप ट्रांजेक्शन फीस या करेंसी एक्सचेंज रेट के कारण पैसे खो सकते हैं।
- कार्ड नेटवर्क बार-बार चार्ज-और-रिफंड होने वाले पैटर्न को हाई रिस्क (high risk) के रूप में चिह्नित करते हैं।
इसका समाधान 'authorize and capture' मॉडल का उपयोग करना है।
अधिकांश ट्यूटोरियल आपको तुरंत पैसे कैप्चर करना सिखाते हैं। इसके बजाय, आपको पहले फंड्स पर एक 'hold' लगाना चाहिए। 'Hold' पैसे को स्थानांतरित किए बिना कार्ड पर बना रहता है। यदि आपका वैलिडेशन विफल हो जाता है, तो आप बस उस 'hold' को रद्द कर देते हैं। ग्राहक के स्टेटमेंट में कोई चार्ज नहीं दिखता।
Stripe में, आप capture_method को manual पर सेट करके ऐसा कर सकते हैं।
नया फ्लो इस तरह काम करता है:
manual captureके साथ एकPaymentIntentबनाएँ।- फंड्स को ऑथोराइज (authorize) कर दिया जाता है लेकिन उन्हें स्थानांतरित नहीं किया जाता।
- अपना ऑर्डर वैलिडेशन चलाएँ।
- यदि ऑर्डर वैध है, तो भुगतान कैप्चर करें।
- यदि ऑर्डर विफल हो जाता है, तो
intentको रद्द कर दें।
यह दृष्टिकोण कई लाभ प्रदान करता है:
- आप रिफंड की आवश्यकता से बच जाते हैं।
- एक रद्द किया गया ऑथोराइजेशन ग्राहक के स्टेटमेंट से बस गायब हो जाता है।
- आप 'partial captures' कर सकते हैं। यदि कोई ग्राहक तीन आइटम खरीदता है लेकिन एक स्टॉक में नहीं है, तो आप केवल दो आइटमों की राशि कैप्चर करते हैं।
- आप अपने लॉग्स में एक स्पष्ट ऑडिट ट्रेल (audit trail) बनाते हैं।
अधिकांश प्रमुख पेमेंट प्रोवाइडर्स इसी लॉजिक का उपयोग करते हैं।
- Stripe
capture_method: manualका उपयोग करता है। - Adyen 'manual capture delays' का उपयोग करता है।
- Braintree
submitForSettlement: falseका उपयोग करता है। - PayPal
intent: AUTHORIZEका उपयोग करता है।
इस विधि का उपयोग तब करें यदि ग्राहक द्वारा 'pay' बटन दबाने के बाद आपके बिजनेस लॉजिक का कोई भी हिस्सा विफल हो सकता है। अपने जोखिम भरे चेक (risky checks) को ऑथोराइजेशन और कैप्चर के बीच में रखें। इससे आपके पैसे का लेन-देन साफ-सुथरा रहता है और आपके ग्राहक खुश रहते हैं।
स्रोत: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m