Laravel में BayarCash को सही तरीके से सेटअप करना

यदि आप मलेशियाई बाजार के लिए SaaS बनाते हैं, तो अंततः आपको FPX की आवश्यकता होगी। BayarCash एक सामान्य विकल्प है।

समस्या SDK नहीं है। समस्या आपका आर्किटेक्चर (architecture) है। यदि आप किसी कंट्रोलर से SDK को कॉल करते हैं या अपने व्यूज़ (views) में स्टेटस कोड को हार्डकोड करते हैं, तो आपको प्रोडक्शन में समस्याओं का सामना करना पड़ेगा।

मैंने तीन अलग-अलग Laravel ऐप्स में BayarCash को लागू किया है। यहाँ वह पैटर्न है जो हर बार काम करता है।

महारत हासिल करने के लिए मुख्य शब्द

  • Portal (पोर्टल): आपका मर्चेंट चेकआउट कॉन्फ़िगरेशन। portal_key का उपयोग करें।
  • API Token (API टोकन): यह आपके आउटगोइंग कॉल्स को प्रमाणित करता है।
  • Secret Key (सीक्रेट की): यह आपके पेलोड्स (payloads) को साइन करता है और वेबहुक्स (webhooks) को सत्यापित करता है। इसे सुरक्षित रखें।
  • Payment Intent (पेमेंट इंटेंट): आप एक चार्ज पोस्ट करते हैं, एक URL प्राप्त करते हैं, और उपयोगकर्ता को रीडायरेक्ट करते हैं।
  • Channel (चैनल): कच्चे नंबरों के बजाय हमेशा SDK constants का उपयोग करें।

अपने कोड को अच्छी तरह से स्ट्रक्चर करें

आपके डोमेन कोड को कभी भी कच्चा (raw) BayarCash पेलोड नहीं देखना चाहिए। आपको तीन परतों (layers) की आवश्यकता है:

  • एक हल्का क्लाइंट रैपर (A thin client wrapper): यह कॉन्फ़िगरेशन को संभालता है और टाइप किए गए मेथड्स प्रदान करता है।
  • एक गेटवे (A gateway): यह एक इंटरफ़ेस को लागू करता है और आपकी डोमेन भाषा में बात करता है।
  • एक फैक्ट्री (A factory): यह सक्रिय गेटवे को चुनता है ताकि आप आसानी से BayarCash को Stripe से बदल सकें।

एक फेक गेटवे को बाइंड करना

यदि आप API टोकन प्रदान नहीं करते हैं, तो अपने सर्विस कंटेनर में एक Fake प्रोवाइडर को बाइंड करें। यह आपके टेस्ट को बिना नेटवर्क के चलाने की अनुमति देता है और आपके लोकल बिल्ड्स को बिना सक्रिय बिलिंग के चलने देता है।

वेबहुक के लिए सर्वोत्तम अभ्यास

वेबहुक आपका 'सोर्स ऑफ ट्रुथ' (source of truth) है। प्रोडक्शन में संकट से बचने के लिए इन नियमों का पालन करें:

  • CSRF Exempt: आपके वेबहुक रूट को CSRF सुरक्षा को बायपास करना चाहिए।
  • सिग्नेचर सत्यापित करें: कुछ भी करने से पहले हमेशा सिग्नेचर को सत्यापित करें।
  • 200 का नियम: एक बार जब आप सिग्नेचर सत्यापित कर लेते हैं, तो 2xx रिस्पॉन्स लौटाएं।
  • Retries से बचें: यदि आप 500 एरर लौटाते हैं, तो BayarCash आपके वेबहुक को 40 बार फिर से प्रयास (retry) करेगा। इससे आपका सर्वर क्रैश हो सकता है। एरर लॉग करें, लेकिन फिर भी 200 लौटाएं।
  • Idempotency (इडेम्पोटेंसी): सुनिश्चित करें कि आपका लॉजिक डुप्लिकेट ऑर्डर बनाए बिना एक ही वेबहुक को दो बार संभाल सकता है।

सफलता के लिए चेकलिस्ट

• सहसंबंध कुंजी (correlation key) के रूप में order_number का उपयोग करें। इसे 30 वर्णों से कम रखें। • उपयोगकर्ता को रीडायरेक्ट करने से पहले एक पेंडिंग लोकल रिकॉर्ड सहेजें। • मुख्य अथॉरिटी के रूप में सर्वर-टू-सर्वर कॉलबैक का उपयोग करें। • समाधान (reconciliation) के लिए सेफ्टी नेट के रूप में रिटर्न URL का उपयोग करें। • पूर्णांक (integer) स्टेटस कोड को तुरंत अपने स्वयं के Enums में मैप करें।

पेमेंट इंटीग्रेशन वास्तविक पैसे से जुड़े होते हैं। अपने सिग्नेचर वेरिफिकेशन और इडेम्पोटेंसी का किसी भी अन्य चीज़ की तुलना में अधिक परीक्षण करें।

स्रोत: https://dev.to/nasrulhazim/setting-up-bayarcash-fpx-in-laravel-the-right-way-4b2n