Stripe Webhooks દ્વારા બહુભાષી ઈમેલ
SaaS ને વૈશ્વિક સ્તરે સ્કેલ કરવામાં છુપાયેલા જોખમો હોય છે. અમને અમારા Stripe webhooks માં એક એવું જોખમ મળ્યું.
અમારી સિસ્ટમ અંગ્રેજી બોલતા વપરાશકર્તાઓને ખરીદીની પુષ્ટિ (purchase confirmations), રિન્યુઅલ્સ અને નિષ્ફળતાની સૂચનાઓ જાપાનીઝમાં મોકલી રહી હતી. આ બગ મહિનાઓ સુધી રહ્યો કારણ કે તે કોઈ પણ પ્રકારની સમસ્યા દર્શાવતો નહોતો.
અમે કરન્સી (ચલણ) પરથી ભાષાનો અંદાજ લગાવીને આ સમસ્યાનો ઉકેલ લાવ્યા.
અમે ત્રણ ડિઝાઇન વિકલ્પો તપાસ્યા:
- વિકલ્પ A: ડેટાબેઝમાં ભાષા સ્ટોર કરો. આ માટે જૂના વપરાશકર્તાઓ માટે migrations અને backfills ની જરૂર પડે છે.
- વિકલ્પ B: Stripe API માંથી ડેટા મેળવો. આનાથી વધારાના API કોલ્સ થાય છે અને ઘણા ગ્રાહકો તેમની પસંદગીની locale સેટ કરતા નથી.
- વિકલ્પ C: webhook payload માં રહેલી કરન્સીનો ઉપયોગ કરો. આ મફત છે, ડેટાબેઝમાં કોઈ ફેરફારની જરૂર નથી, અને હાલના વપરાશકર્તાઓ માટે તરત જ કામ કરે છે.
અમે વિકલ્પ C પસંદ કર્યો. ખરીદીના સમયે કરન્સી એક નિશ્ચિત સંકેત છે. જો વપરાશકર્તા USD માં ચૂકવણી કરે છે, તો તેમને અંગ્રેજી મળશે. જો તેઓ JPY માં ચૂકવણી કરે છે, તો તેમને જાપાનીઝ મળશે.
લોજિક સરળ છે:
function lang_from_currency(string $currency): string { $en_currencies = ['usd']; return in_array(strtolower($currency), $en_currencies, true) ? 'en' : 'ja'; }
આ ચારેય મુખ્ય Stripe ઇવેન્ટ્સ માટે કામ કરે છે:
- checkout.session.completed
- invoice.payment_succeeded
- invoice.payment_failed
- customer.subscription.updated
અમને PHP સાથે એક ટેકનિકલ જોખમ પણ મળ્યું.
mb_language('Japanese') નો ઉપયોગ કરવાથી વિષય (subject) ISO-2022-JP માં એન્કોડ થાય છે. જો તમે આ સેટિંગ સાથે અંગ્રેજી સબ્જેક્ટ લાઇન મોકલો છો, તો Gmail અને Outlook તેને વિચિત્ર એન્કોડિંગ તરીકે જુએ છે
