Stripe API - 基于元数据的搜索

Posted

技术标签:

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

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

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

有没有聪明的方法呢?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于Stripe API - 基于元数据的搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Stripe Checkout 仅客户端实现中包含元数据?

Azure 搜索索引的 OData API 不返回元数据

Stripe:在创建时将元数据添加到订阅

从 Stripe webhook .Net 中提取元数据

Sharepoint 2010/2013 文档库 - 基于元数据访问旧版本的文档

Stripe 订阅 webhook 缺少元数据和 client_reference_id