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

Stripe .NET技术问题:Subscription对象无PaymentIntent.ClientSecret属性

解决Stripe .NET 48.5.0无法获取subscription.LatestInvoice.PaymentIntent.ClientSecret的问题
  • 确认Expands参数的正确格式
    Stripe API的展开字段用蛇形命名,即便.NET模型是驼峰命名,你在Expand列表里必须写API原生的字段名:

    var getOptions = new SubscriptionGetOptions
    {
        Expand = new List<string> { "latest_invoice.payment_intent" }
    };
    var subscription = await Stripe.Subscriptions.GetAsync("sub_xxx", getOptions);
    

    别写成LatestInvoice.PaymentIntent,这是.NET模型的命名,Stripe API识别不了。

  • 先判空再访问属性
    不是所有订阅的最新发票都关联了PaymentIntent(比如免费订阅、未触发支付的订阅),直接访问会触发空引用异常,先做判断:

    if (subscription.LatestInvoice != null && subscription.LatestInvoice.PaymentIntent != null)
    {
        var clientSecret = subscription.LatestInvoice.PaymentIntent.ClientSecret;
        // 后续业务逻辑
    }
    
  • 核对API版本兼容性
    Stripe .NET 48.5.0默认的API版本可能偏旧,你需要确保使用的API版本支持从订阅展开latest_invoice.payment_intent。可以在初始化时指定兼容的API版本:

    StripeConfiguration.ApiVersion = "2024-06-20"; // 选择一个较新的稳定版本
    

    或者在Stripe Dashboard的「开发者设置」里调整默认API版本,确保版本不低于2019-03-14(该版本开始支持该展开路径)。

  • 验证返回的原始数据
    调试时可以查看订阅对象的RawJson属性,确认API是否返回了latest_invoice.payment_intent字段。如果RawJson里没有,说明展开参数没生效或者API版本不支持;如果有但.NET模型没映射,若必须使用48.5.0版本,就重点检查前三点,也可以尝试升级Stripe .NET包到更近期的稳定版。

问题截图:
问题截图

内容的提问来源于stack exchange,提问作者Dživo Jelić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:22:08