从 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”响应以处理订单?