उन भुगतानों का रिफंड करना बंद करें जिन्हें आपको कभी चार्ज ही नहीं करना चाहिए था

कई डेवलपर्स ऐसा चेकआउट फ्लो पेश करते हैं जो कार्ड से तुरंत पैसे काट लेता है। उसके बाद, वे स्टॉक चेक या फ्रॉड चेक जैसी ऑर्डर वैलिडेशन प्रक्रियाएं चलाते हैं।

यदि वैलिडेशन विफल हो जाता है, तो कोड रिफंड जारी कर देता है।

इससे आपके ग्राहकों के लिए समस्याएँ पैदा होती हैं। वे पहले एक चार्ज देखते हैं और फिर कुछ दिनों बाद एक रिफंड। उन्हें लगता है कि आपकी कंपनी भरोसेमंद नहीं है। उन्हें लगता है कि उनका पैसा कहीं फंस गया है।

रिफंड की वास्तविक लागतें होती हैं:

इसका समाधान 'authorize and capture' मॉडल का उपयोग करना है।

अधिकांश ट्यूटोरियल आपको तुरंत पैसे कैप्चर करना सिखाते हैं। इसके बजाय, आपको पहले फंड्स पर एक 'hold' लगाना चाहिए। 'Hold' पैसे को स्थानांतरित किए बिना कार्ड पर बना रहता है। यदि आपका वैलिडेशन विफल हो जाता है, तो आप बस उस 'hold' को रद्द कर देते हैं। ग्राहक के स्टेटमेंट में कोई चार्ज नहीं दिखता।

Stripe में, आप capture_method को manual पर सेट करके ऐसा कर सकते हैं।

नया फ्लो इस तरह काम करता है:

  1. manual capture के साथ एक PaymentIntent बनाएँ।
  2. फंड्स को ऑथोराइज (authorize) कर दिया जाता है लेकिन उन्हें स्थानांतरित नहीं किया जाता।
  3. अपना ऑर्डर वैलिडेशन चलाएँ।
  4. यदि ऑर्डर वैध है, तो भुगतान कैप्चर करें।
  5. यदि ऑर्डर विफल हो जाता है, तो intent को रद्द कर दें।

यह दृष्टिकोण कई लाभ प्रदान करता है:

अधिकांश प्रमुख पेमेंट प्रोवाइडर्स इसी लॉजिक का उपयोग करते हैं।

इस विधि का उपयोग तब करें यदि ग्राहक द्वारा 'pay' बटन दबाने के बाद आपके बिजनेस लॉजिक का कोई भी हिस्सा विफल हो सकता है। अपने जोखिम भरे चेक (risky checks) को ऑथोराइजेशन और कैप्चर के बीच में रखें। इससे आपके पैसे का लेन-देन साफ-सुथरा रहता है और आपके ग्राहक खुश रहते हैं।

स्रोत: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m