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

在C# MVC中使用Stripe API实现促销代码兑换功能的问题咨询

问题原因

PromotionCodeService 是 Stripe.net v39.0.0 版本才正式加入的服务,无法访问通常是因为你当前使用的 Stripe.NET SDK 版本低于该要求,和 ProductService、CouponService 不同,旧版本SDK没有内置这个服务类。

解决步骤

  1. 首先升级你的 Stripe.NET SDK 到最新稳定版,直接在Nuget包管理器中搜索Stripe.net完成更新即可。
  2. 确认你已经引入了正确的命名空间:
using Stripe;

完整实现示例

以下是从校验促销码到应用到订阅的全流程代码:

1. 初始化Stripe配置

// 全局只需要初始化一次即可,建议放在项目启动配置中
StripeConfiguration.ApiKey = "你的Stripe私钥 sk_xxxxxx";

2. 检索并校验促销码有效性

var promotionCodeService = new PromotionCodeService();
// 如果是用promo_开头的ID直接查询
var promotionCode = promotionCodeService.Get("promo_1HMxuf2eZvKYlo2CmGXSyhRx");

// 如果你拿到的是用户输入的明文促销码(比如SUMMER2024),用如下方式查询
// var listOptions = new PromotionCodeListOptions
// {
//     Code = userInputPromoStr,
//     Active = true
// };
// var promotionCode = promotionCodeService.List(listOptions).FirstOrDefault();

// 校验促销码可用性
if (promotionCode == null 
    || !promotionCode.Active 
    || (promotionCode.ExpiresAt.HasValue && promotionCode.ExpiresAt < DateTime.UtcNow) 
    || (promotionCode.MaxRedemptions.HasValue && promotionCode.TimesRedeemed >= promotionCode.MaxRedemptions))
{
    // 此处添加促销码无效的业务逻辑
    throw new InvalidOperationException("当前促销码无效或已超出使用限制");
}

3. 应用促销码到订阅

场景1:创建新订阅时应用
var subscriptionService = new SubscriptionService();
var subCreateOptions = new SubscriptionCreateOptions
{
    Customer = "cus_你的客户ID",
    Items = new List<SubscriptionItemOptions>
    {
        new SubscriptionItemOptions
        {
            Price = "price_你的订阅价格ID",
            Quantity = 1
        }
    },
    PromotionCode = promotionCode.Id,
    // 其他订阅配置
};
var newSubscription = subscriptionService.Create(subCreateOptions);
场景2:给已有订阅添加折扣
var subUpdateOptions = new SubscriptionUpdateOptions
{
    PromotionCode = promotionCode.Id,
    // 可根据需求配置是否立即对当期账单生效
    ProrationBehavior = "create_prorations"
};
var updatedSubscription = subscriptionService.Update("sub_你的现有订阅ID", subUpdateOptions);

注意事项

  • 不需要手动计算折扣金额,Stripe会根据促销码关联的Coupon规则自动计算抵扣金额,直接应用到订阅账单即可。
  • 促销码的使用限制(比如单用户限兑1次、总兑换上限)Stripe会自动校验,你也可以手动加校验逻辑做前端提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:54:04