【发布时间】:2021-06-03 16:03:35
【问题描述】:
我有一个与 Stripe 深度集成的应用程序。我的平台偶尔会向关联的账户收费,我将有关这些费用的信息存储在费用本身的元数据中。
我想将此信息显示回连接的帐户,因此我正在使用收费服务来列出收费。但是,我想根据一些元数据键/值对过滤该列表,这样我就不必每次都为每个连接的帐户列出所有费用。
有没有聪明的方法呢?
【问题讨论】:
标签: c# .net api stripe-payments
我有一个与 Stripe 深度集成的应用程序。我的平台偶尔会向关联的账户收费,我将有关这些费用的信息存储在费用本身的元数据中。
我想将此信息显示回连接的帐户,因此我正在使用收费服务来列出收费。但是,我想根据一些元数据键/值对过滤该列表,这样我就不必每次都为每个连接的帐户列出所有费用。
有没有聪明的方法呢?
【问题讨论】:
标签: c# .net api stripe-payments
不支持基于元数据的过滤。
由于您是跨关联帐户执行此操作,因此更好的方法是将费用 ID 和元数据存储在您的终端上,这样您就不必列出费用并分页查找特定的元数据。
【讨论】:
我能够使用 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);
}
}
【讨论】:
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
【讨论】: