从 Stripe webhook .Net 中提取元数据

Posted

技术标签:

【中文标题】从 Stripe webhook .Net 中提取元数据【英文标题】:extract meta data from Stripe web hook .Net 【发布时间】:2021-12-05 02:17:55 【问题描述】:

我正在努力处理 Stripe 发布到我的网络挂钩的数据。

我正在使用基本结帐。我的一切都按预期工作。 CLI 在“checkout.session.completed”之后转发网络挂钩。我的钩子按预期被击中。但是,我不知道如何提取元数据。我可以在对象中看到它,但我不知道如何。什么是“IhasObject”?我从下面的文档中复制了代码。

 var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
        try
        
            // check if was from Stripe
            var stripeEvent = EventUtility.ConstructEvent(json,Request.Headers["Stripe-Signature"], endpointSecret);

            // Handle the event
            if (stripeEvent.Type == Events.CheckoutSessionCompleted)
            
                // TODO update the DB and set the booking to PAID based on the transaction Id 
                // in Metadata
                var session = stripeEvent.Data.Object;

               

我可以在 VS 调试的会话对象和原始 json 中看到正确的数据。但是如何从会话对象或事件中获取它呢?目前尚不清楚,文档中没有示例。我很想将 json 读入 POCO,但这不是事件对象的重点吗?

有人能指出我正确的方向吗?我只是想完成订单,但示例没有显示如何使用会话对象。

【问题讨论】:

【参考方案1】:

您可以将事件的负载转换为 CheckoutSession 并读取元数据。

 var session = (Stripe.Checkout.Session) stripeEvent.Data.Object; 
 var metadata = session.Metadata;

【讨论】:

非常感谢。如果将其包含在示例中,将会很有帮助。我已经有一个名为 Checkout 的剃须刀页面,它混淆了这个问题,因为 Checkout.Session 未被识别。当我这样做时,它起作用了。 “作为 Stripe.Checkout.Session;”我将重命名我的结帐页面。 嗯,实际上这不是问题所在。看起来你必须做“Stripe.Checkout.Session”否则它不起作用所以例子是错误的。

以上是关于从 Stripe webhook .Net 中提取元数据的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据从 Stripe webhook 发送到 Firebase

curl 作为 Zapier Webhook 到 Stripe

有没有办法从 Stripe API webhooks 获得响应?

如何从 webhook 获得 Stripe“payment_intent.succeeded”响应以处理订单?

如何使用 ngrok 测试接收 Stripe webhook

PDS2 Stripe Success Webhook 和其他问题