ان ادائیگیوں کا ریفنڈ کرنا بند کریں جو آپ کو کبھی وصول ہی نہیں کرنی چاہیے تھیں
بہت سے ڈویلپرز ایسا چیک آؤٹ فلو (checkout flow) لانچ کرتے ہیں جو کارڈ سے فوری طور پر رقم کاٹ لیتا ہے۔ اس کے بعد، وہ اسٹاک چیک یا فراڈ چیک جیسی آرڈر کی تصدیق (validation) کرتے ہیں۔
اگر تصدیق ناکام ہو جائے، تو کوڈ ریفنڈ جاری کر دیتا ہے۔
یہ آپ کے صارفین کے لیے مسائل پیدا کرتا ہے۔ وہ پہلے رقم کٹتے ہوئے دیکھتے ہیں اور پھر کئی دنوں بعد ریفنڈ۔ انہیں لگتا ہے کہ آپ کی کمپنی ناقابلِ اعتماد ہے۔ انہیں لگتا ہے کہ ان کے پیسے پھنس گئے ہیں۔
ریفنڈز کے حقیقی اخراجات ہوتے ہیں:
- صارفین کا اعتماد ٹوٹ جاتا ہے جب وہ دو الگ الگ ٹرانزیکشنز دیکھتے ہیں۔
- بینک اسٹیٹمنٹ میں ریفنڈ ظاہر ہونے میں 5 سے 10 دن لگتے ہیں۔
- آپ ٹرانزیکشن فیس یا کرنسی ایکسچینج ریٹس پر رقم کا نقصان اٹھا سکتے ہیں۔
- کارڈ نیٹ ورکس بار بار رقم کاٹنے اور پھر ریفنڈ کرنے کے پیٹرن کو 'ہائی رسک' (high risk) کے طور پر نشان زد کرتے ہیں۔
اس کا حل 'authorize and capture' ماڈل کا استعمال کرنا ہے۔
زیادہ تر ٹیوٹوریلز آپ کو فوری طور پر رقم کیپچر (capture) کرنا سکھاتے ہیں۔ اس کے بجائے، آپ کو پہلے فنڈز پر 'ہولڈ' (hold) لگانا چاہیے۔ ہولڈ رقم کو منتقل کیے بغیر کارڈ پر موجود رہتا ہے۔ اگر آپ کی تصدیق ناکام ہو جائے، تو آپ صرف اس ہولڈ کو منسوخ کر دیتے ہیں۔ اس طرح کسٹمر کی اسٹیٹمنٹ میں کوئی چارج ظاہر نہیں ہوتا۔
Stripe میں، آپ capture_method کو manual پر سیٹ کر کے ایسا کر سکتے ہیں۔
نیا فلو اس طرح کام کرتا ہے:
manual captureکے ساتھ ایکPaymentIntentبنائیں۔- فنڈز کو authorize کر دیا جاتا ہے لیکن منتقل نہیں کیا جاتا۔
- اپنی آرڈر کی تصدیق (validation) کریں۔
- اگر آرڈر درست ہے، تو ادائیگی کیپچر (capture) کریں۔
- اگر آرڈر ناکام ہو جائے، تو intent کو منسوخ کر دیں۔
یہ طریقہ کئی فوائد فراہم کرتا ہے:
- آپ کو ریفنڈ کی ضرورت نہیں پڑتی۔
- منسوخ شدہ اتھارزیشن (authorization) کسٹمر کی اسٹیٹمنٹ سے خود بخود غائب ہو جاتی ہے۔
- آپ جزوی کیپچر (partial captures) کر سکتے ہیں۔ اگر کوئی صارف تین اشیاء خریدتا ہے لیکن ایک اسٹاک میں نہیں ہے، تو آپ صرف دو اشیاء کی رقم کیپچر کرتے ہیں۔
- آپ اپنے لاگز (logs) میں ایک صاف ستھرا آڈٹ ٹریل (audit trail) بناتے ہیں۔
زیادہ تر بڑے پیمانے پر ادائیگی فراہم کرنے والے (payment providers) یہی منطق استعمال کرتے ہیں۔
- 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