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 仅客户端实现中包含元数据?