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

Stripe订阅查询返回Null问题排查(ASP.NET+C#)

问题排查与解决方案

第一个查询方法的问题与修复

你当前的代码存在两个核心问题:

  1. CustomerService.Search 返回的是 SearchResult<Customer> 结果集,不是单个Customer对象,直接调用 ToString() 无法展示内部的订阅数据;
  2. Expand字段路径错误,针对搜索结果集里的客户订阅,正确的Expand路径是 data.subscriptions,你添加的 customer.subscriptions 是多余且无效的。

修复后的代码:

void Go(Object sender, EventArgs e)
{
    StripeConfiguration.ApiKey = "sk_test_mysecretkey";
    var options = new CustomerSearchOptions
    {
        Query = "email:'isaacsurban@gmail.com'",
    };
    // 正确指定Expand路径,展开结果集中每个客户的订阅数据
    options.AddExpand("data.subscriptions");
    
    var service = new CustomerService();
    // 仅调用一次Search并保存结果
    var searchResult = service.Search(options);
    
    // 获取匹配的第一个客户
    var targetCustomer = searchResult.Data.FirstOrDefault();
    if (targetCustomer != null)
    {
        if (targetCustomer.Subscriptions?.Data != null && targetCustomer.Subscriptions.Data.Any())
        {
            Message.Text = $"找到{targetCustomer.Subscriptions.Data.Count}个订阅";
            // 如需查看订阅详情,可遍历targetCustomer.Subscriptions.Data
        }
        else
        {
            Message.Text = "该客户无有效订阅";
        }
    }
    else
    {
        Message.Text = "未找到匹配邮箱的客户";
    }
}

第二个查询方法的问题与修复

你错误地用 metadata['customer'] 作为查询条件,Stripe订阅对象本身自带 customer 字段(直接关联客户ID),不需要从metadata中查询。同时同样存在未正确处理搜索结果集的问题。

修复后的代码:

void GetSubs(Object sender, EventArgs e)
{
    StripeConfiguration.ApiKey = "sk_test_mysecretkey";

    var options = new SubscriptionSearchOptions
    {
        // 直接匹配订阅的customer字段
        Query = "customer:'cus_mycustid'",
        // 如需包含已删除的订阅,可添加条件:Query = "customer:'cus_mycustid' AND status:'all'"
    };
    
    var service = new SubscriptionService();
    var searchResult = service.Search(options);
    
    if (searchResult.Data.Any())
    {
        Message2.Text = $"找到{searchResult.Data.Count}个订阅";
        // 遍历searchResult.Data可获取每个订阅的详细信息
    }
    else
    {
        Message2.Text = "未找到该客户的订阅";
    }
}

额外排查点

  • 确认使用的测试环境API Key正确,未混淆生产环境Key;
  • 若后台看到的订阅是已删除状态,需在查询条件中添加 status:'all',默认搜索不会返回已删除的订阅;
  • 建议升级到最新稳定版的Stripe.NET SDK,避免旧版本的字段路径或API兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:50:30