ASP.Net Core解析Stripe Webhook JSON响应

时间:2020-07-09 17:39:44

标签: c# json asp.net-core stripe-payments webhooks

我正在ASP.Net Core应用程序中使用Stripe / Stripe.net Webhooks。我正在尝试映射一个对象,在这里我可以使用从Webhook JSON响应返回的属性,并将各种属性保存到数据库中。使用Postman,我可以在Controller方法中接收从Stripe测试webhooks获取的示例JSON,并使用

解析JSON。
var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
Event stripeEvent = EventUtility.ParseEvent(json);

返回:

stripeEvent = {<Stripe.Event@2269235 id=evt_00000000000000> JSON: {"id": "evt_00000000000000", "object": "event", "account": null, "api_version": "2020-03-02", "created": 1326853478, "data": {    "object": { "id": "ch_00000000000000", "...

我需要将JSON从RawObject ChildrenTokens映射到模型中,但无法通过C#访问ChildrenTokens。有什么方法可以映射这些属性?

1 个答案:

答案 0 :(得分:1)

这里的技巧是将stripeEvent.Data.Object转换为基础事件数据应表示的特定类。通常,您将有一个开关或if语句检查stripeEvent.Type

例如,如果事件的类型为payment_intent.succeeded,则基础数据将为PaymentIntent,您可能具有以下代码来检查类型,然后将其强制转换为该类型。

if (stripeEvent.Type == Events.PaymentIntentSucceeded)
{
  var paymentIntent = stripeEvent.Data.Object as PaymentIntent;
}

从那里,您可以与paymentIntent及其相关属性进行交互。