在 Stripe api 中,当提交付款订单后在我的端点触发 webhook 事件时,我会得到一个发票. payment_succeeded 事件对象。然而,它的有效负载不包含任何我可以轻松利用的字段来告诉我付款的订阅用途。保存订阅名称的唯一字段是对象“line_item”中的字段“description”,但 Stripe 以自由形式填写自身。例如,如果我有一个名为 Gold Account 的产品名称,则 line_items 的此描述字段显示:
“1 × 黄金账户(99.00 英镑/月)”
但这是 Stripe 写的。描述字段旁边没有名称字段,元数据和昵称始终为空,如下所示:
"metadata": {
},
//...
"nickname\": null
我需要知道为什么在组合订阅付款时为以下对象设置元数据总是在 Webhook 事件对象中显示空元数据字段:SubscriptionItemOptions、ProductCreateOptions、PriceCreateOptions、PlanCreateOptions。当我尝试设置可用的名称字段(例如 Price.Nickname、PriceCreateOptions.Nickname、SessionLineItemPriceDataProductDataOptions.Name、PlanProductOptions.Name、ProductCreateOptions.Name)时,情况也是如此。设置所有这些字段(无论是元数据、名称还是昵称)在 Webhook 事件对象中不会显示任何内容。仪表板确实显示了各个字段的正确信息,但元数据除外,该字段始终为空。如果我通过 HttpClient 直接使用发票行项目查询 Stripe,则会检索到相同的空字段。请指教。
这实际上取决于您要寻找什么。
它的有效负载不包含任何我可以轻松利用来告诉我付款用于哪些订阅的字段
例如,
.subscription
字段是与发票关联的订阅对象的 ID sub_xxx
。
如果您想要的是要开具发票的产品名称,那么例如
lines.data[0].price.product
是产品的 ID prod_xxx
;然后您可以调用 https://stripe.com/docs/api/products/retrieve 来获取完整的对象并查看它的 .description
。