Stripe - 如何在 Checkout.Session 中获取账单地址信息
Posted
技术标签:
【中文标题】Stripe - 如何在 Checkout.Session 中获取账单地址信息【英文标题】:Stripe - How to get billing address information in Checkout.Session 【发布时间】:2021-08-18 13:26:53 【问题描述】:我正在尝试通过 Webhook 调用从 Stripe Checkout 获取帐单地址。
我想要实现的是从黄色矩形中的表单中获取信息。
这是我的结帐配置:
var options = new SessionCreateOptions()
CustomerEmail = user.Email,
BillingAddressCollection = "required",
ShippingAddressCollection = new SessionShippingAddressCollectionOptions
AllowedCountries = new List<string>
"FR",
,
,
PaymentMethodTypes = new List<string>()
result.Payment.Type
,
LineItems = new List<SessionLineItemOptions>
new SessionLineItemOptions
PriceData = new SessionLineItemPriceDataOptions
UnitAmountDecimal = result.Payment.Amount * 100,
Currency = result.Payment.Currency,
ProductData = new SessionLineItemPriceDataProductDataOptions
Name = _stringLocalizer.GetString("StripeProductLabel"),
,
,
Quantity = 1,
,
,
Mode = result.Payment.Mode,
SuccessUrl = $"request.Scheme://request.Host" + "/payment/complete",
CancelUrl = $"request.Scheme://request.Host" + "/payment/cancel",
Metadata = new Dictionary<string, string>()
Constants.StripeMetaDataOrderId, result.Id
;
当我在完成的事件中收到会话对象时:session = stripeEvent.Data.Object as Stripe.Checkout.Session;
我无法获取信息,因为 paymentIntent 对象为空(信息来自:Retrieve Billing Address from Stripe checkout session?)。
这是 Sripe 的一项重要功能,因为该应用程序是一个 B2B 应用程序,可帮助专业人士为其 B2C 业务创建订单。它将避免从 Stripe API 中退出的东西制作自定义代码 :)
提前致谢
【问题讨论】:
【参考方案1】:您链接到的答案是从payment_intent
上的payment_method
获取此信息的正确方法。我不确定您的 payment_intent
值如何/为什么不会被填充,因为我的测试表明它会在创建会话时被初始化,即使我从未重定向到它。
您确定要创建mode=payment
会话吗?我在您共享的代码中看到了这一点,但是如果您实际上是在使用 setup
或 subscription
模式,情况会有所改变。
【讨论】:
是的,我处于付款模式(它来自域逻辑,这就是为什么这里不明确)。在与职能团队一起查看后,我们决定在我们的系统中制作账单信息,但感谢确认我的配置似乎是正确的 :)以上是关于Stripe - 如何在 Checkout.Session 中获取账单地址信息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Stripe 订阅平台通过 Firestore 在 Stripe 中添加产品和价格
Stripe Connect:在Stripe Connect中,谁将支付Stripe费用,如何确定?
Stripe Connect Express Webhook - 如何在用户完成 Stripe Connect Express 表单并被重定向后触发 Stripe Webhook