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

Stripe含试用期的一次性付款+续订订阅配置问题求助

问题描述

我们的产品支持客户自助开通,支付结构如下:

  • 开通阶段:客户支付1500美元初始费用,包含15天试用期,试用期结束后可使用平台服务1年。
  • 续订阶段:初始服务年结束后,客户每年支付1000美元续订费用。

我尝试用Stripe的Phase选项创建订阅时失败,提示未配置定期付款,但第二个产品已设置为定期付款。以下是我生成Checkout Session链接的代码,未达到预期效果:

public async Task<string> GetStripeSessionLink()
{
    StripeConfiguration.ApiKey = "<<API_KEY>>";
    var options = new Stripe.Checkout.SessionCreateOptions
    {
        PaymentMethodTypes = new List<string>() { "card" },
        SubscriptionData = new SessionSubscriptionDataOptions
        {
            TrialSettings = new Stripe.Checkout.SessionSubscriptionDataTrialSettingsOptions
            {
                EndBehavior = new Stripe.Checkout.SessionSubscriptionDataTrialSettingsEndBehaviorOptions
                {
                    MissingPaymentMethod = "cancel",
                },
            },
            TrialPeriodDays = 1,
        },
        LineItems = new List<SessionLineItemOptions> { new SessionLineItemOptions
        {
            Price = "price_1O9j4cSERQQSOAmawe834DECNSRnKmYzDsX",
            Quantity = 1,
        },
        new SessionLineItemOptions {
            Price = "price_1OAYkVSERQQSOA454SfgrVs44mR1TpitOov",
            Quantity = 1
        },
        },
        Mode = "subscription",
        SuccessUrl = "http://localhost:4300/dashboard",
        CancelUrl = "http://localhost:4300/register/cancel",
        AllowPromotionCodes = true,
        CustomerEmail = "abcxyz@gmail.com",
    };
    var service = new Stripe.Checkout.SessionService();
    var session = service.Create(options);
    return session.Url;
}

请问应如何正确配置Stripe以实现上述支付方案?是否需要先创建订阅,待试用期结束后转为订阅计划?或是先创建初始付款订阅,试用期结束后收取1500美元,取消当前订阅再为客户开通年度续订订阅?


解决方案

核心思路:用Stripe订阅的**阶段(Phases)**功能实现阶梯式定价,无需拆分或切换订阅

你的需求本质是订阅的两个阶梯阶段,直接用Phases配置即可,无需额外的订阅切换操作。之前报错的核心原因是Phase的配置逻辑错误,需确保每个阶段关联的价格为定期类型,并正确设置阶段时间范围。

正确配置步骤:

  1. 创建两个定期价格:

    • 初始服务价格:1500美元,计费周期设为1年,确保为**定期(recurring)**类型
    • 续订价格:1000美元,计费周期设为1年,同样为定期类型
  2. 通过Phases构建完整订阅流程:

    • 第一阶段:设置15天试用期,试用期结束后自动收取1500美元,同时提供1年服务
    • 第二阶段:第一阶段结束后,自动切换到1000美元/年的续订价格,按年自动续费

修改后的代码:

public async Task<string> GetStripeSessionLink()
{
    StripeConfiguration.ApiKey = "<<API_KEY>>";
    var options = new Stripe.Checkout.SessionCreateOptions
    {
        PaymentMethodTypes = new List<string> { "card" },
        Mode = "subscription",
        SuccessUrl = "http://localhost:4300/dashboard",
        CancelUrl = "http://localhost:4300/register/cancel",
        AllowPromotionCodes = true,
        CustomerEmail = "abcxyz@gmail.com",
        SubscriptionData = new SessionSubscriptionDataOptions
        {
            TrialSettings = new SessionSubscriptionDataTrialSettingsOptions
            {
                EndBehavior = new SessionSubscriptionDataTrialSettingsEndBehaviorOptions
                {
                    MissingPaymentMethod = "cancel", // 试用期结束无有效支付方式则取消订阅
                }
            },
            // 用Phases替代多LineItem配置,实现阶梯订阅
            Phases = new List<SessionSubscriptionDataPhaseOptions>
            {
                // 第一阶段:15天试用期 + 1500美元/年服务
                new SessionSubscriptionDataPhaseOptions
                {
                    TrialPeriodDays = 15,
                    Items = new List<SessionSubscriptionDataPhaseItemOptions>
                    {
                        new SessionSubscriptionDataPhaseItemOptions
                        {
                            Price = "price_1O9j4cSERQQSOAmawe834DECNSRnKmYzDsX", // 1500美元/年价格ID
                            Quantity = 1
                        }
                    },
                    // 阶段总时长:15天试用期 + 1年服务期
                    EndDate = DateTime.UtcNow.AddDays(15 + 365).ToUnixTimeSeconds()
                },
                // 第二阶段:自动续订1000美元/年
                new SessionSubscriptionDataPhaseOptions
                {
                    Items = new List<SessionSubscriptionDataPhaseItemOptions>
                    {
                        new SessionSubscriptionDataPhaseItemOptions
                        {
                            Price = "price_1OAYkVSERQQSOA454SfgrVs44mR1TpitOov", // 1000美元/年价格ID
                            Quantity = 1
                        }
                    }
                }
            }
        }
    };

    var service = new Stripe.Checkout.SessionService();
    var session = service.Create(options);
    return session.Url;
}

关键注意事项:

  • 两个关联的Price必须均为**定期(recurring)**类型,且计费周期一致(均为1年),否则Phase配置会触发报错
  • 第一阶段的EndDate需包含试用期和服务期的总时长,确保阶段结束后自动切换到第二阶段
  • 试用期结束时,Stripe会自动尝试收取1500美元,若支付失败则按TrialSettings.EndBehavior配置处理(示例中为取消订阅)
  • 第二阶段无需设置EndDate,Stripe会自动按价格的计费周期无限续订

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:19:51