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

Stripe API变更后,如何通过CheckoutSession获取PaymentIntentID?

获取Stripe CheckoutSession中的PaymentIntent ID

有两种可靠的方式获取PaymentIntent ID,可根据业务场景选择:

1. 同步从创建后的CheckoutSession中获取

当你创建**一次性支付(payment模式)**的CheckoutSession后,若Session创建成功,可直接从返回的Session对象的PaymentIntentId属性取值:

var service = new SessionService();
Session session = service.Create(options);

// 读取PaymentIntent ID
if (!string.IsNullOrEmpty(session.PaymentIntentId))
{
    string paymentIntentId = session.PaymentIntentId;
    // 执行后续业务逻辑
}

注意:这种方式仅适用于payment模式的Session,且仅当Stripe已生成对应PaymentIntent时返回有效值,部分场景下可能为空,生产环境更推荐第二种方式。

2. 通过Webhook异步监听支付完成事件

当用户完成Checkout支付后,Stripe会发送checkout.session.completed事件到你配置的Webhook地址,在事件 payload 中可以获取到准确的PaymentIntent ID,这是生产环境的最优方案:

// 处理Webhook请求的核心逻辑
var stripeEvent = EventUtility.ConstructEvent(
    jsonPayload, // 从请求体读取的JSON字符串
    request.Headers["Stripe-Signature"], // 请求头中的签名
    webhookSecret // 你的Stripe Webhook密钥
);

if (stripeEvent.Type == Events.CheckoutSessionCompleted)
{
    var completedSession = stripeEvent.Data.Object as Session;
    string paymentIntentId = completedSession.PaymentIntentId;
    // 这里可以处理支付完成后的业务,比如更新订单状态、发送通知等
}

额外说明

  • 如果你的Checkout Session是订阅(subscription模式),则不会直接返回PaymentIntentId,需要监听customer.subscription.created等订阅相关事件来获取后续生成的PaymentIntent。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:24