【问题标题】:Stripe API - Search Based on MetadataStripe API - 基于元数据的搜索
【发布时间】:2021-06-03 16:03:35
【问题描述】:

我有一个与 Stripe 深度集成的应用程序。我的平台偶尔会向关联的账户收费,我将有关这些费用的信息存储在费用本身的元数据中。

我想将此信息显示回连接的帐户,因此我正在使用收费服务来列出收费。但是,我想根据一些元数据键/值对过滤该列表,这样我就不必每次都为每个连接的帐户列出所有费用。

有没有聪明的方法呢?

【问题讨论】:

    标签: c# .net api stripe-payments


    【解决方案1】:

    不支持基于元数据的过滤。

    由于您是跨关联帐户执行此操作,因此更好的方法是将费用 ID 和元数据存储在您的终端上,这样您就不必列出费用并分页查找特定的元数据。

    【讨论】:

      【解决方案2】:

      我能够使用 ChargeCreateOptions 对象的“TransferGroup”属性来完成此操作。我基本上将 TransferGroup 属性设置为每个连接帐户的唯一值,然后我可以稍后查询。

      创造电荷

      //THERE IS NO ID IN THE REQUEST OPTIONS BECAUSE
      //WE ARE USING THE PLATFORM
      var requestOptions = new RequestOptions()
      {
        ApiKey = {API Key}
      };
      
      //CHARGE OPTIONS
      var chargeOptions = new ChargeCreateOptions
      {
        Amount = {AMOUNT},
        Currency = "usd",
        Description = $"Platform Charge",
        SourceId = {StripeId},
        Metadata = {MetaData},
        TransferGroup = {Unique String For Each Connected Account}
      };
      
      //CREAT AND RETURN THE CHARGE
      var chargeService = new ChargeService();
      return chargeService.Create(chargeOptions, requestOptions);
      

      查询基于转移组的平台收费

          public List<Charge> StripePlatformCharges(string apiKey, int days, string transferGroup)
          {
              try
              {
                  RequestOptions requestOptions = new RequestOptions()
                  {
                      ApiKey = apiKey
                  };
      
                  ChargeListOptions chargeListOptions = new ChargeListOptions()
                  {
                      CreatedRange = new DateRangeOptions()
                      {
                          GreaterThanOrEqual = DateTime.Now.AddDays(-days)
                      },
                      TransferGroup = transferGroup
                  };
      
                  ChargeService chargeService = new ChargeService();
                  return chargeService.List(chargeListOptions, requestOptions).ToList();
              }
              catch (Exception ex)
              {
                  throw new Exception("Error getting stripe charges from the platform", ex);
              }
          }
      

      【讨论】:

        【解决方案3】:

        Stripe 最近添加了Search API,允许按元数据进行搜索。目前,它没有.NET / C# 集成,但您可以直接使用 HTTP 调用进行查询:

        来自their docs的示例:

        curl https://api.stripe.com/v1/search/charges \
          -u sk_test_daHanKyJOCiXCeBsa65biLML00wylimZ8S: \
          --data-urlencode "query=metadata['key']:'value'" \
          -H "Stripe-Version: 2020-08-27;search_api_beta=v1" \
          -G
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-26
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          相关资源
          最近更新 更多