Stripe Checkout Session基于locale实现多币种价格转换方案咨询
Stripe Checkout 自动适配本地币种解决方案
方案1:动态ad-hoc定价(无需预创建多币种Price ID,仅适用于一次性付款场景)
你不需要为每个货币单独预创建Price ID,可直接在创建Checkout会话时动态指定金额和货币:
- 首先在服务端根据用户IP或浏览器locale判定用户所在地区,获取对应目标币种
- 自行按照汇率将USD基准价转换为对应币种的应付金额,注意金额需以对应货币的最小单位传入(如欧元、人民币按分计算,日元按元计算)
- 替换原代码中
line_items的price参数为price_data参数,动态生成定价项 - 无需手动指定
payment_method_types,Stripe会根据用户所在地自动展示你后台已开通的所有适配本地的支付方式
示例代码:
// 先自行实现汇率转换逻辑,示例中假设用户所在地区对应货币为EUR,转换后金额为42.33 EUR const targetCurrency = 'eur' const targetAmount = 4233 // 42.33 EUR 以分为单位即4233 const session = await stripeServer.checkout.sessions.create({ customer_email: email, line_items: [ { price_data: { currency: targetCurrency, product_data: { name: '你的商品名称' }, unit_amount: targetAmount }, quantity: 1 } ], mode, billing_address_collection: 'auto', locale: location || 'auto', success_url: '你的成功回调地址', cancel_url: '你的取消回调地址' })
方案2:单产品绑定多币种Price(适用于订阅+一次性付款全场景)
如果你的业务包含订阅类商品,Stripe目前要求订阅定价必须使用预创建的Price ID,你只需要为同一个产品挂载多个对应不同币种的Price即可,无需单独创建多个产品:
- 在Stripe后台对应产品下,提前为你需要支持的所有币种创建对应定价的Price
- 服务端判定用户地区和对应币种后,直接匹配对应币种的Price ID传入
line_items的price字段即可 - 该方案的定价可直接在Stripe后台管理,无需自行维护汇率转换逻辑,适合对定价稳定性要求高的业务
注意事项
- 你可根据业务需求选择固定汇率或实时汇率进行转换,如需降低汇率波动损失,可在转换金额时增加1-2%的缓冲
- 所有你需要支持的本地支付方式需要提前在Stripe后台的支付方式设置中开通,Stripe才会自动给对应地区的用户展示
内容的提问来源于stack exchange,提问作者Lý Tại Trường
相关产品推荐
相关产品推荐

