You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stripe一次性支付场景下如何获取对应产品ID?

一次性支付获取产品ID的可行方案

方案一:checkout.session.completed+metadata 完全可靠

checkout.session.completed是Stripe官方认定的一次性支付成功核心事件,触发就代表用户完成支付、资金流程确认,完全可以作为支付成功的判断依据。把产品ID塞进Checkout Session的metadata是行业常规操作,Stripe会完整保留并返回这些数据,不会出现丢失情况。

创建Checkout Session时的示例代码(以Python为例):

stripe.checkout.Session.create(
  payment_method_types=['card'],
  line_items=[{
    'price': 'price_123',
    'quantity': 1,
  }],
  mode='payment',
  success_url='https://example.com/success',
  cancel_url='https://example.com/cancel',
  metadata={
    'product_id': 'prod_456'  # 这里绑定你的产品ID
  }
)

监听该事件时,从返回的session对象里就能直接拿到metadata.product_id,同时可以结合payment_status字段(值为paid)做双重验证,确保万无一失。

方案二:直接从line_items解析产品ID(更原生)

其实不用额外设置metadata,checkout.session.completed返回的session数据里,line_items.data数组的每个条目都包含price.product字段,这就是对应的产品ID。示例返回结构:

{
  "line_items": {
    "data": [
      {
        "price": {
          "product": "prod_456"  // 直接提取这个值就是产品ID
        },
        "quantity": 1
      }
    ]
  }
}

这种方式无需自定义元数据,直接用Stripe原生返回的字段,更简洁。

关键提醒

  • 务必配置正确的webhook端点,订阅checkout.session.completed事件,并且一定要验证webhook签名,避免收到伪造请求。
  • 一次性支付确实不会生成发票,所以没有invoice.paid事件,checkout.session.completed就是你要找的核心支付确认事件。

内容的提问来源于stack exchange,提问作者Ahmet Yazıcı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:27:19