在 C# 中使用 ExtraParams 从 Stripe 的 API 中提取特定事件
Posted
技术标签:
【中文标题】在 C# 中使用 ExtraParams 从 Stripe 的 API 中提取特定事件【英文标题】:Using ExtraParams in C# to pull specific events from Stripe's API 【发布时间】:2021-02-27 08:47:57 【问题描述】:所以,我觉得我忽略了一些非常简单的事情。鉴于 Stripe 的卡指纹,我目前正在尝试提取单张卡的所有收费事件。但是,在不提供客户 ID 的情况下如何做到这一点,我很迷茫,尽管我认为我已经很接近了。我不想提供客户 ID,因为这样做的目的是查看谁一直在尝试使用该卡。请指出我的方式的错误,因为我在任何地方都找不到任何表明我做错了什么的文档。这是很多支付处理示例,没有像我试图做的过滤,API 文档也没有解释如何“更深”地过滤。
这是我目前正在使用的功能:
private StripeList<Charge> GetCardCharges(string card_id)
Dictionary<string, object> dict = new Dictionary<string, object> "source.fingerprint", card_id ;
ChargeListOptions options = new ChargeListOptions Limit = 100, ExtraParams = dict, ;
var service = new ChargeService();
var charges = service.List(options);
return charges;
我也试过了
Dictionary<string, object> dict = new Dictionary<string, object> "source", new Dictionary<string, object> "fingerprint", card_id ;
并改用了 IDictionary,但我仍然不断收到未知参数消息。如果没有额外的参数,它可以正常工作,因为它会提取 100 个充电事件,但这对我来说不是很有用,并且编写一个查看每个充电事件的函数似乎效率低下。我当然能够成功地从 JSON 对象中的“初始级别”参数中过滤出来,例如:
Dictionary<string, object> dict = new Dictionary<string, object> "amount_refunded", 0 ;
感谢您至少阅读此内容,如果需要更多信息,请告诉我!下面是一个来自测试数据的充电事件供参考:
<Stripe.Charge@26602077 id=ch_1Hnzaj2eZvKYlo2CYBG4aWb4> JSON:
"id": "ch_1Hnzaj2eZvKYlo2CYBG4aWb4",
"object": "charge",
"amount": 100,
"amount_captured": 0,
"amount_refunded": 0,
"application": null,
"application_fee": null,
"application_fee_amount": null,
"authorization_code": null,
"balance_transaction": null,
"billing_details":
"address":
"city": null,
"country": null,
"line1": null,
"line2": null,
"postal_code": null,
"state": null
,
"email": null,
"name": null,
"phone": null
,
"calculated_statement_descriptor": null,
"captured": false,
"created": 1605501925,
"currency": "usd",
"customer": null,
"description": "My First Test Charge (created for API docs)",
"destination": null,
"dispute": null,
"disputed": false,
"failure_code": null,
"failure_message": null,
"fraud_details":
"stripe_report": null,
"user_report": null
,
"invoice": null,
"level3": null,
"livemode": false,
"metadata": ,
"on_behalf_of": null,
"order": null,
"outcome": null,
"paid": true,
"payment_intent": null,
"payment_method": "pm_1Hnzae2eZvKYlo2CZvrXwBjh",
"payment_method_details":
"ach_credit_transfer": null,
"ach_debit": null,
"acss_debit": null,
"alipay": null,
"au_becs_debit": null,
"bacs_debit": null,
"bancontact": null,
"card":
"brand": "visa",
"checks":
"address_line1_check": null,
"address_postal_code_check": null,
"cvc_check": "pass"
,
"country": "US",
"description": null,
"exp_month": 8,
"exp_year": 2021,
"fingerprint": "Xt5EWLLDS7FJjR1c",
"funding": "credit",
"iin": null,
"installments": null,
"issuer": null,
"last4": "4242",
"moto": null,
"network": "visa",
"three_d_secure": null,
"wallet": null
,
"card_present": null,
"eps": null,
"fpx": null,
"giropay": null,
"ideal": null,
"interac_present": null,
"klarna": null,
"multibanco": null,
"oxxo": null,
"p24": null,
"sepa_debit": null,
"stripe_account": null,
"type": "card",
"wechat": null
,
"receipt_email": null,
"receipt_number": null,
"receipt_url": "https://pay.stripe.com/receipts/acct_1032D82eZvKYlo2C/ch_1Hnzaj2eZvKYlo2CYBG4aWb4/rcpt_IOnBY5JhICLngxEzCsH1wb609egY5bR",
"refunded": false,
"refunds":
"object": "list",
"data": [],
"has_more": false,
"url": "/v1/charges/ch_1Hnzaj2eZvKYlo2CYBG4aWb4/refunds"
,
"review": null,
"shipping": null,
"source":
"id": "card_1Hnzae2eZvKYlo2CYAmFdjYF",
"object": "card",
"account": null,
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"available_payout_methods": null,
"brand": "Visa",
"country": "US",
"currency": null,
"customer": null,
"cvc_check": "pass",
"default_for_currency": null,
"description": null,
"dynamic_last4": null,
"exp_month": 8,
"exp_year": 2021,
"fingerprint": "Xt5EWLLDS7FJjR1c",
"funding": "credit",
"iin": null,
"issuer": null,
"last4": "4242",
"metadata": ,
"name": null,
"tokenization_method": null
,
"source_transfer": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "succeeded",
"transfer": null,
"transfer_data": null,
"transfer_group": null
【问题讨论】:
【参考方案1】:ExtraParams
用于传入 SDK 原生不可用的参数。主要用例是尚未进入 SDK 的测试版功能。
您不能使用 ExtraParams
过滤列表端点中的特定参数,您唯一的选择是 API 参考中记录的内容:https://stripe.com/docs/api/charges/list
在您的情况下,您必须列出所有费用并通过查看 charge.payment_method_details.card.fingerprint
自行过滤它们
【讨论】:
谢谢!只是为了确保我理解,我需要收集所有事件然后过滤?可能在充分转换后使用Linq?我不希望连续调用所有内容,然后梳理所有内容。解析 JSON 不是问题,如果是这种情况,每次调用函数时,我都需要对数百万个事件进行排序。如果不可能,那么公平,但我想确定一下。我了解仪表板搜索功能的操作方式与 C# API 不同。 取决于你真正想要做什么。如果您想获取使用特定卡指纹进行的所有费用,那么您必须从 API 中提取整个费用列表,然后遍历结果,检查我之前链接到的参数。另一种方法是使用 Stripe Sigma:stripe.com/sigma以上是关于在 C# 中使用 ExtraParams 从 Stripe 的 API 中提取特定事件的主要内容,如果未能解决你的问题,请参考以下文章
EXTJS 5.0:无限网格滚动不适用于商店中的 extraParams
在网格 sortchange 事件之前更改存储 extraParams
Extjs PROXY查询params无法传参,改用extraParams