You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Stripe Checkout:加拿大含税249CAD,其他地区免税249USD

Stripe Checkout多币种与地区税费配置方案

一、多币种价格的动态选择

你不需要在LineItems中传入多个价格,而是要根据客户的地区动态匹配对应的Price ID:

  • 先通过用户IP检测或前端地区选择逻辑,判断客户是否来自加拿大
  • 加拿大用户使用你创建的CAD价格ID(比如price_idCA);非加拿大用户则使用USD价格ID(price_idUS)

二、加拿大税规则的自动激活

你已经开启了AutomaticTax = Enabled = true,只要确保Stripe能识别客户位于加拿大,就能自动触发你创建的加拿大税规则:

  • 方式1:若客户已登录,提前将其加拿大地址关联到Stripe Customer对象,创建Session时指定Customer字段
  • 方式2:在创建Session时,通过CustomerDetails手动传入客户的加拿大地址(从前端表单收集)
  • 方式3:依赖Stripe自动IP地区检测(适合未登录用户,Stripe会基于结账页访问IP判断地区)

修改后的代码示例

// 假设已通过业务逻辑拿到客户是否为加拿大用户的标识
bool isCanadianCustomer = /* 你的地区判断逻辑 */;
string selectedPriceId = isCanadianCustomer ? "price_idCA" : "price_idUS";

var options = new SessionCreateOptions
{
    AutomaticTax = new SessionAutomaticTaxOptions { Enabled = true },
    LineItems = new List<SessionLineItemOptions>
    {
        new SessionLineItemOptions
        {
            Price = selectedPriceId,
            Quantity = 1,
        },
    },
    Mode = "payment",
    SuccessUrl = domain + "/payment/success",
    CancelUrl = domain + "/payment/cancel",
    ClientReferenceId = userId,
    // 可选:手动传入加拿大地址,确保税费计算精准
    CustomerDetails = new SessionCustomerDetailsOptions
    {
        Address = new AddressOptions
        {
            Country = isCanadianCustomer ? "CA" : null
        }
    }
};

关键说明

  • 多币种价格是两个独立的Price对象,不能同时放入LineItems,必须根据地区二选一
  • AutomaticTax开启后,Stripe会自动根据客户地区匹配你创建的税规则(确保税规则的适用地区设置为加拿大)
  • 若依赖IP检测,需注意结账页是否有代理/VPN影响地区判断,必要时可让用户手动选择地区

内容的提问来源于stack exchange,提问作者Georg K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:11:09