如何使用Stripe .NET SDK为订阅设置计费周期限制
如何用Stripe.NET为订阅设置计费周期限制
核心逻辑
创建订阅计划(Subscription Schedule)时,Stripe会自动生成对应的关联订阅,无需单独调用SubscriptionCreateAsync接口。你可通过订阅计划的阶段(Phase)设置两种类型的周期限制:
- 固定付款次数:使用
Iterations属性定义该阶段执行的计费周期次数 - 具体结束日期:使用
EndDate属性定义订阅的终止时间
代码示例
方式1:设置固定付款次数(比如10次)
var now = DateTime.UtcNow; var subscriptionScheduleOptions = new SubscriptionScheduleCreateOptions { Customer = model.CustomerId, StartDate = now, Phases = [ new SubscriptionSchedulePhaseOptions { Items = [ new SubscriptionSchedulePhaseItemOptions { Price = model.PriceId, Quantity = 1, }, ], // 该阶段执行10次计费周期(如价格为月度计费,则自动执行10个月后结束) Iterations = 10, } ], PaymentBehavior = "allow_incomplete", DefaultPaymentMethod = model.PaymentMethodId, }; var subscriptionScheduleService = new SubscriptionScheduleService(); var subscriptionSchedule = subscriptionScheduleService.Create(subscriptionScheduleOptions); // 创建完成后,可通过以下属性获取关联的订阅对象 var associatedSubscription = subscriptionSchedule.Subscription;
方式2:设置具体结束日期(比如10个月后)
var now = DateTime.UtcNow; var subscriptionScheduleOptions = new SubscriptionScheduleCreateOptions { Customer = model.CustomerId, StartDate = now, Phases = [ new SubscriptionSchedulePhaseOptions { Items = [ new SubscriptionSchedulePhaseItemOptions { Price = model.PriceId, Quantity = 1, }, ], // 设置订阅终止日期 EndDate = now.AddMonths(10), } ], PaymentBehavior = "allow_incomplete", DefaultPaymentMethod = model.PaymentMethodId, }; var subscriptionScheduleService = new SubscriptionScheduleService(); var subscriptionSchedule = subscriptionScheduleService.Create(subscriptionScheduleOptions);
为已有订阅添加周期限制
如果已经存在一个订阅,可通过订阅计划关联该订阅并添加限制:
var existingSubscriptionId = "your-existing-subscription-id"; var scheduleOptions = new SubscriptionScheduleCreateOptions { FromSubscription = existingSubscriptionId, Phases = [ new SubscriptionSchedulePhaseOptions { // 保留原订阅的商品配置 Items = new List<SubscriptionSchedulePhaseItemOptions> { new SubscriptionSchedulePhaseItemOptions { Price = model.PriceId, Quantity = 1, } }, // 设置剩余需要执行的计费周期次数 Iterations = 5, } ] }; var subscriptionScheduleService = new SubscriptionScheduleService(); var schedule = subscriptionScheduleService.Create(scheduleOptions);
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

