Multilingual Emails From Stripe Webhooks

Kukuza SaaS kimataifa kuna mitego iliyofichika. Tuligundua mmoja katika Stripe webhooks zetu.

Mfumo wetu ulituma uthibitisho wa ununuzi, uajiri upya wa huduma (renewals), na arifa za kushindwa kwa malipo kwa lugha ya Kijapani kwa watumiaji wanaozungumza Kiingereza. Hitilafu hii iliendelea kwa miezi kadhaa kwa sababu haikuleta fujo.

Tulitatua kwa kubashiri lugha kutokana na sarafu.

Tulichunguza chaguo tatu za usanifu:

  • Chaguo A: Hifadhi lugha kwenye kanzi data (database). Hii inahitaji uhamiaji wa data (migrations) na kujaza data za nyuma (backfills) kwa watumiaji wa zamani.
  • Chaguo B: Chukua kutoka kwenye Stripe API. Hii inaongeza wito wa ziada wa API na wateja wengi hawachagui lugha wanayopendelea (locale).
  • Chaguo C: Tumia sarafu iliyo kwenye payload ya webhook. Hii ni bure, haihitaji mabadiliko ya kanzi data, na inafanya kazi kwa watumiaji waliopo mara moja.

Tulichagua Chaguo C. Sarafu ni ishara thabiti wakati wa ununuzi. Ikiwa mtumiaji analipa kwa USD, anapata Kiingereza. Ikiwa analipa kwa JPY, anapata Kijapani.

Mantiki ni rahisi:

function lang_from_currency(string $currency): string {
    $en_currencies = ['usd'];
    return in_array(strtolower($currency), $en_currencies, true) ? 'en' : 'ja';
}

Hii inafanya kazi kwa matukio manne makuu ya Stripe:

  • checkout.session.completed
  • invoice.payment_succeeded
  • invoice.payment_failed
  • customer.subscription.updated

Pia tuligundua mitego ya kiufundi na PHP.

Kutumia mb_language('Japanese') hufunga vichwa vya habari (subjects) katika ISO-2022-JP. Ukituma kichwa cha habari cha Kiingereza kwa mpangilio huu, Gmail na Outlook huona kama ufungaji wa ajabu wa herufi. Hii huongeza alama yako ya spam.

Suluhisho ni kubadilisha ufungaji (encoding) kulingana na lugha:

mb_language($lang === 'en' ? 'uni' : 'Japanese');

Kutumia 'uni' hutumia UTF-8 Base64. Hii huweka barua pepe zako mbali na folda ya spam.

Mafunzo matatu kutoka kwa marekebisho haya:

  • Tumia payload ya tukio. Ikiwa data tayari ipo kwenye webhook, usiguse kanzi data yako. Inapunguza hatari na matengenezo.
  • Zingatia ufungaji (encoding) wako. Ikiwa unasaidia lugha nyingi, hakikisha ufungaji wa kichwa cha habari unalingana na maudhui ili kuepuka vichujio vya spam.
  • Kagua thamani zilizowekwa moja kwa moja (hardcoded values). Unapoanza kufanya kazi kimataifa, kagua ikiwa kazi zako za arifa zina mipangilio ya lugha iliyowekwa moja kwa moja.

Muundo usio na hali (stateless design) hufanya mfumo wako kuwa rahisi kutunza na vigumu kuharibika.

Source: https://dev.to/susumun/multilingual-emails-from-a-stripe-webhook-inferring-language-from-currency-i99