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

使用Stripe .NET客户端开发SaaS订阅支付,何处指定产品?

关于Stripe新版API中产品关联的正确姿势

首先得给你理清Stripe新版订阅模型的核心逻辑:现在Stripe把「产品(Product)」和「价格(Price)」拆分开了,旧版的Plan其实是Product+Price的组合体,现在官方更推荐用Product来定义你的SaaS服务(比如「基础版订阅」「专业版订阅」),再给每个Product创建对应的Price(比如「每月$19」「每年$199」)。

回到你的问题:既不需要在创建Customer时指定产品,也不需要在Charge里指定——因为这俩场景都不是订阅支付的正确打开方式:

1. 如果你做的是订阅支付(自动续费)

这是SaaS最常见的场景,正确流程应该是:

  • 先在Stripe后台或通过API创建你的Product(定义服务本身)
  • 为该Product创建对应的Price(定义收费周期、金额)
  • 创建Customer(记录用户的支付信息等)
  • 最后创建Subscription对象,关联Customer和Price ID——这才是把用户和你的订阅产品绑定的正确方式。

你在StripeCustomerCreateOptions里看到的PlanId是旧版API的参数,现在新版已经不推荐这么用了,应该用Subscription来管理订阅关系。

给你个.NET客户端的代码示例:

// 初始化Subscription创建选项
var subscriptionOptions = new SubscriptionCreateOptions
{
    // 关联已创建的Customer ID
    Customer = "cus_XXXXXXXXXXXX",
    // 绑定对应的Price ID(Price已经关联了你的Product)
    Items = new List<SubscriptionItemOptions>
    {
        new SubscriptionItemOptions
        {
            Price = "price_XXXXXXXXXXXX",
            // 如果需要指定数量(比如多席位订阅),可以加Quantity字段
            Quantity = 1
        }
    },
    // 可选:设置支付方式自动扣款
    PaymentBehavior = "default_incomplete"
};

// 创建Subscription
var subscriptionService = new SubscriptionService();
var subscription = subscriptionService.Create(subscriptionOptions);

2. 如果你做的是单次付款(非订阅)

如果只是偶尔的单次收费,想关联产品信息,你可以通过Charge的Metadata字段自定义记录Product ID,或者用新版的PaymentIntent + LineItems来关联(更推荐):

// 用PaymentIntent关联产品的示例
var paymentIntentOptions = new PaymentIntentCreateOptions
{
    Amount = 1900, // 单位是分,对应$19
    Currency = "usd",
    Customer = "cus_XXXXXXXXXXXX",
    LineItems = new List<LineItemOptions>
    {
        new LineItemOptions
        {
            Price = "price_XXXXXXXXXXXX", // 关联Price,间接关联Product
            Quantity = 1
        }
    }
};

var paymentIntentService = new PaymentIntentService();
var paymentIntent = paymentIntentService.Create(paymentIntentOptions);

为什么你找不到ProductId字段?

因为在新版API里,Product是通过Price来间接关联的——每个Price都属于一个Product,所以指定Price ID后,Stripe后台会自动关联对应的Product信息,你在Stripe Dashboard里就能看到这笔交易/订阅对应的产品了,不需要直接指定ProductId。

最后提醒下:尽量迁移到Product+Price+Subscription的新版模型,旧的Plan和Charge用于订阅的方式已经逐渐被官方弃用,新版模型能更好地支持订阅升级、降级、优惠券、计量收费等复杂场景。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:24:39