Laravel-ൽ BayarCash ശരിയായ രീതിയിൽ സെറ്റപ്പ് ചെയ്യാം
നിങ്ങൾ മലേഷ്യൻ വിപണിക്കായി SaaS നിർമ്മിക്കുകയാണെങ്കിൽ, നിങ്ങൾക്ക് തീർച്ചയായും FPX ആവശ്യമായി വരും. ഇതിനായി സാധാരണയായി ഉപയോഗിക്കുന്ന ഒന്നാണ് BayarCash.
ഇവിടെ പ്രശ്നം SDK അല്ല, മറിച്ച് നിങ്ങളുടെ ആർക്കിടെക്ചറാണ് (architecture). നിങ്ങൾ ഒരു കൺട്രോളറിൽ (controller) നിന്ന് നേരിട്ട് SDK വിളിക്കുകയോ അല്ലെങ്കിൽ വ്യൂസുകളിൽ (views) സ്റ്റാറ്റസ് കോഡുകൾ ഹാർഡ്കോഡ് ചെയ്യുകയോ ചെയ്താൽ, പ്രൊഡക്ഷനിൽ നിങ്ങൾക്ക് പ്രശ്നങ്ങൾ നേരിടേണ്ടി വരും.
മൂന്ന് വ്യത്യസ്ത Laravel ആപ്പുകളിൽ ഞാൻ BayarCash ഉപയോഗിച്ചിട്ടുണ്ട്. എല്ലാ തവണയും ഫലപ്രദമായി പ്രവർത്തിക്കുന്ന രീതി താഴെ നൽകുന്നു.
പ്രധാനപ്പെട്ട പദങ്ങൾ (Key Terms)
- Portal: നിങ്ങളുടെ മെർച്ചന്റ് ചെക്കൗട്ട് കോൺഫിഗറേഷൻ.
portal_keyഉപയോഗിക്കുക. - API Token: ഇത് നിങ്ങളുടെ ഔട്ട്ഗോയിംഗ് കോളുകളെ ഓതന്റിക്കേറ്റ് ചെയ്യുന്നു.
- Secret Key: ഇത് നിങ്ങളുടെ പേലോഡുകളിൽ (payloads) ഒപ്പുവെക്കുകയും വെബ്ഹുക്കുകൾ (webhooks) പരിശോധിക്കുകയും ചെയ്യുന്നു. ഇത് സുരക്ഷിതമായി സൂക്ഷിക്കുക.
- Payment Intent: നിങ്ങൾ ഒരു ചാർജ് പോസ്റ്റ് ചെയ്യുന്നു, ഒരു URL ലഭിക്കുന്നു, തുടർന്ന് ഉപയോക്താവിനെ റീഡയറക്ട് ചെയ്യുന്നു.
- Channel: നേരിട്ടുള്ള നമ്പറുകൾക്ക് പകരം എപ്പോഴും SDK കോൺസ്റ്റന്റുകൾ (constants) ഉപയോഗിക്കുക.
നിങ്ങളുടെ കോഡ് കൃത്യമായി സ്ട്രക്ചർ ചെയ്യുക
നിങ്ങളുടെ ഡൊമെയ്ൻ കോഡ് (domain code) ഒരിക്കലും ഒരു റ)」 BayarCash പേലോഡ് നേരിട്ട് കാണാൻ പാടില്ല. ഇതിനായി നിങ്ങൾക്ക് മൂന്ന് ലെയറുകൾ ആവശ്യമാണ്:
- ഒരു ലഘുവായ ക്ലയന്റ് റാപ്പർ (A thin client wrapper): ഇത് കോൺഫിഗറേഷൻ കൈകാര്യം ചെയ്യുകയും ടൈപ്പ് ചെയ്ത മെത്തേഡുകൾ നൽകുകയും ചെയ്യുന്നു.
- ഒരു ഗേറ്റ്വേ (A gateway): ഇത് ഒരു ഇന്റർഫേസ് നടപ്പിലാക്കുകയും നിങ്ങളുടെ ഡൊമെയ്ൻ ഭാഷയിൽ പ്രവർത്തിക്കുകയും ചെയ്യുന്നു.
- ഒരു ഫാക്ടറി (A factory): ഇത് ആക്ടീവ് ആയ ഗേറ്റ്വേ തിരഞ്ഞെടുക്കുന്നു, അതിനാൽ നിങ്ങൾക്ക് BayarCash-ന് പകരം എളുപ്പത്തിൽ Stripe ഉപയോഗിക്കാൻ സാധിക്കും.
ഒരു ഫേക്ക് ഗേറ്റ്വേ (Fake Gateway) ബൈൻഡ് ചെയ്യുക
നിങ്ങൾ ഒരു API ടോക്കൺ നൽകുന്നില്ലെങ്കിൽ, നിങ്ങളുടെ സർവീസ് കണ്ടെയ്നറിൽ (service container) ഒരു Fake പ്രൊവൈഡർ ബൈൻഡ് ചെയ്യുക. ഇത് നെറ്റ്വർക്ക് ഇല്ലാതെ തന്നെ ടെസ്റ്റുകൾ പ്രവർത്തിപ്പിക്കാനും, ആക്റ്റീവ് ബില്ലിംഗ് ഇല്ലാതെ ലോക്കൽ ബിൽഡുകൾ പ്രവർത്തിപ്പിക്കാനും സഹായിക്കുന്നു.
വെബ്ഹുക്ക് (Webhook) ഉപയോഗിക്കുമ്പോൾ ശ്രദ്ധിക്കേണ്ട കാര്യങ്ങൾ
വെബ്ഹുക്ക് ആണ് നിങ്ങളുടെ വിവരങ്ങളുടെ യഥാർത്ഥ ഉറവിടം. പ്രൊഡക്ഷനിൽ വലിയ പ്രശ്നങ്ങൾ ഒഴിവാക്കാൻ ഈ നിയമങ്ങൾ പാലിക്കുക:
- CSRF Exempt: നിങ്ങളുടെ വെബ്ഹുക്ക് റൂട്ട് CSRF പ്രൊട്ടക്ഷനിൽ നിന്ന് ഒഴിവാക്കിയിരിക്കണം.
- Verify Signatures: മറ്റെന്തും ചെയ്യുന്നതിന് മുമ്പ് എപ്പോഴും സിഗ്നേച്ചർ വെരിഫൈ ചെയ്യുക.
- The 200 Rule: സിഗ്നേച്ചർ വെരിഫൈ ചെയ്തുകഴിഞ്ഞാൽ ഉടൻ തന്നെ ഒരു 2xx റെസ്പോൺസ് നൽകുക.
- Avoid Retries: നിങ്ങൾ ഒരു 500 എറർ നൽകിയാൽ, BayarCash നിങ്ങളുടെ വെബ്ഹുക്ക് 40 തവണ വീണ്ടും ശ്രമിക്കും. ഇത് നിങ്ങളുടെ സെർവറിനെ തകരാറിലാക്കിയേക്കാം. എററുകൾ ലോഗ് ചെയ്യുക, എങ്കിലും ഒരു 200 റെസ്പോൺസ് നൽകുക.
- Idempotency: ഒരേ വെബ്ഹുക്ക് രണ്ട് തവണ വന്നാലും ഡ്യൂപ്ലിക്കേറ്റ് ഓർഡറുകൾ ഉണ്ടാകാതെ നിങ്ങളുടെ ലോജിക് പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.
വിജയത്തിനായുള്ള ചെക്ക്ലിസ്റ്റ്
• order_number ഒരു കോറിലേഷൻ കീയായി ഉപയോഗിക്കുക. ഇത് 30 ക്യാരക്ടറിൽ താഴെയായി സൂക്ഷിക്കുക.
• ഉപയോക്താവിനെ റീഡയറക്ട് ചെയ്യുന്നതിന് മുമ്പ് ഒരു പെൻഡിംഗ് ലോക്കൽ റെക്കോർഡ് സേവ് ചെയ്യുക.
• സെർവർ-ടു-സെർവർ കാൾബാക്ക് (server-to-server callback) ആണ് നിങ്ങളുടെ പ്രധാന ഉറവിടമായി കണക്കാക്കുക.
• റീകൺസിലിയേഷനായി (reconciliation) റിട്ടേൺ URL ഒരു സേഫ്റ്റി നെറ്റായി ഉപയോഗിക്കുക.
• ഇൻ്റീജർ സ്റ്റാറ്റസ് കോഡുകളെ ഉടൻ തന്നെ നിങ്ങളുടെ സ്വന്തം Enums-ലേക്ക് മാപ്പ് ചെയ്യുക.
പേയ്മെന്റ് ഇന്റഗ്രേഷനുകൾ പണവുമായി ബന്ധപ്പെട്ടതാണ്. അതിനാൽ സിഗ്നേച്ചർ വെരിഫിക്കേഷനും ഐഡെംപോട്ടൻസിയും (idempotency) മറ്റെന്തിനേക്കാളും കൂടുതൽ പരിശോധിക്കുക.
സ്രോതസ്സ്: https://dev.to/nasrulhazim/setting-up-bayarcash-fpx-in-laravel-the-right-way-4b2n
