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

Stripe API问题:无法从部分PaymentIntent对象获取价格/计划信息

解决Stripe Link生成的PaymentIntent获取Price/Plan ID问题

Stripe Link生成的一次性支付PaymentIntent,本身不会携带invoice或line_items字段(这些字段仅用于订阅/发票驱动的支付场景),且line_item_group是Stripe内部私有字段,公开API不支持获取。要拿到对应的Price/Plan ID,可按以下两种场景处理:

1. 场景:PaymentIntent通过Stripe Payment Link创建

你已经在API调用中展开了data.payment_page字段,这个字段对应创建该PaymentIntent的Payment Link对象。从payment_page.line_items里可以直接提取关联的Price ID:

paymentsPage.data.forEach(paymentIntent => {
  if (paymentIntent.payment_page) {
    const linkedPriceIds = paymentIntent.payment_page.line_items.data.map(item => item.price.id);
    // 此处可获取该Payment Link关联的所有Price ID
  }
});

2. 场景:PaymentIntent是用户通过Stripe Link作为支付方式完成的自定义一次性支付

这种场景下,PaymentIntent没有天然关联的定价信息,需要你在创建PaymentIntent时主动通过metadata字段存入Price/Plan ID:

创建时的代码示例:

const paymentIntent = await stripeClient.paymentIntents.create({
  amount: 999,
  currency: 'usd',
  payment_method_types: ['link', 'card'],
  metadata: {
    price_id: 'price_XXXXXX',
    // 若需关联Plan,也可存入plan_id: 'plan_XXXXXX'
  },
});

查询PaymentIntent时,直接从metadata中读取:

paymentsPage.data.forEach(paymentIntent => {
  const targetPriceId = paymentIntent.metadata.price_id;
  if (targetPriceId) {
    // 使用获取到的Price ID
  }
});

3. 区分订阅与Link支付的PaymentIntent

你已展开的data.invoice.subscription字段适用于订阅生成的PaymentIntent:这类Intent会有非空的invoice字段,从invoice.line_items中即可提取对应Plan/Price ID;而Link支付的Intent则按上述两种场景处理即可。

内容的提问来源于stack exchange,提问作者haberdasher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:17:03