【发布时间】:2020-12-01 08:01:30
【问题描述】:
tl;dr:使用 Stripe Checkout,新客户总是会收到第一封英文的收据电子邮件,即使结帐流程是客户选择的不同语言。
我正在努力解决一个应该很容易解决的问题,并且我一直 - 没有成功 - 试图从 Stripe 支持获得帮助。
我正在使用 Checkout 进行一次性付款(即大多数人只购买一次,而我的服务器上没有用户/客户数据库)。到目前为止,一切都很好。我的应用程序是一个简单的 Rails 6 应用程序,我正在遵循以下程序:https://stripe.com/docs/payments/checkout/accept-a-payment
我的网站上有不同的语言,我正在使用标准 Rails / I18n 方法来做到这一点 - 一切都很好。
当用户转到 Stripe 结帐页面时,我根据文档发送了 locale,并且用户确实看到了相应语言的页面 - 一切都很好。
示例代码:
# Set your secret key. Remember to switch to your live secret key in production!
# See your keys here: https://dashboard.stripe.com/account/apikeys
Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
session = Stripe::Checkout::Session.create(
payment_method_types: ['card'],
line_items: [{
price_data: {
currency: 'eur',
product_data: {
name: 'T-shirt',
},
unit_amount: 2000,
},
quantity: 1,
}],
mode: 'payment',
success_url: 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
cancel_url: 'https://example.com/cancel',
locale: 'de'
)
但是 - 一旦客户收到来自 Stripe 的确认/收据电子邮件,它总是是英文的。这让我感到困惑:在没有任何其他迹象的情况下,我希望 Stripe 以结帐页面的语言发送收据电子邮件。我的意思是,如果 Stripe 正在用德语与客户“互动”,我希望 Stripe 也会用德语发送后续(收据)电子邮件。我很困惑,事实并非如此。
Stripe 在customer 对象中有一个preferred_locales(请参阅https://support.stripe.com/questions/language-options-for-customer-emails)。我的问题是,我应该如何以及何时设置它?
我尝试使用 webhook,并在 checkout.session.completed 事件上更新客户 - 因为这是 Stripe 一次性将 customer_id 和最初传递的区域设置交给我的唯一事件(在 webhook event 中)。不幸的是,此时,Stripe 已经发送了电子邮件。客户确实得到了更新,但电子邮件已经发送。
不幸的是,在结帐会话期间似乎没有触发其他事件,该事件将包含两种信息(哪个客户,哪种语言);因此,在将收据电子邮件发送给客户之前,似乎没有其他简单的方法可以设置客户的语言。
在我更深入地解决这个问题之前,在我开始跪下恳求 Stripe 支持团队最终让我与技术人员交谈之前(无论“为开发者,由开发者”发生了什么......),我我在这里查看是否有人遇到过这个问题并解决了。
这应该很简单,所以我几乎可以肯定我正在愚蠢地监督一些应该完全显而易见的事情。
任何帮助将不胜感激。
【问题讨论】:
-
顺便说一句,当您提到“在我开始跪下恳求 Stripe 支持团队最终让我与技术人员交谈之前”时,我们在 freenode 上的 #stripe 上确实有一个 IRC 频道你可以去问技术问题。
-
很高兴知道,谢谢!这个人尽了最大的努力,但如果他们早点把我指向频道,就会大大加快速度。
标签: ruby-on-rails internationalization stripe-payments