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

Stripe-Go中checkout.session.completed事件无法获取LineItems问题

解决Stripe CheckoutSession LineItems为nil及Get方法未定义问题

核心原因分析

  1. Webhook事件默认不返回LineItems:Stripe的checkout.session.completed事件 payload 不会主动包含line_items字段,必须通过API主动查询并展开该字段才能获取。
  2. stripe-go版本不兼容:你使用的是旧版非模块化的github.com/stripe/stripe-go(v70),而最新版已改为模块化版本(v75+),两者API结构差异导致session.Get方法不存在。

步骤1:升级到正确的stripe-go版本

  1. 卸载旧版本:
go get -u github.com/stripe/stripe-go@none
  1. 安装最新模块化版本:
go get -u github.com/stripe/stripe-go/v75
  1. 代码中导入对应包:
import (
    "github.com/stripe/stripe-go/v75"
    "github.com/stripe/stripe-go/v75/checkout"
    "github.com/stripe/stripe-go/v75/webhook"
)

步骤2:正确获取带LineItems的CheckoutSession

在Webhook的checkout.session.completed分支中,通过API重新查询会话并展开line_items字段:

payload, err := c.GetRawData()
if err != nil {
    // 错误处理
    return
}

event, err := webhook.ConstructEvent(payload, c.Request.Header.Get("Stripe-Signature"), webhookSecret)
if err != nil {
    // 错误处理
    return
}

switch event.Type {
case "checkout.session.completed":
    var session stripe.CheckoutSession
    err := json.Unmarshal(event.Data.Raw, &session)
    if err != nil {
        // 错误处理
        return
    }

    // 构建查询参数,指定展开line_items
    params := &checkout.SessionParams{}
    params.AddExpand("line_items")

    // 使用checkout包的Get方法查询会话
    sessionWithLineItems, err := checkout.Get(session.ID, params)
    if err != nil {
        // 错误处理
        return
    }

    // 处理LineItems数据并保存到MongoDB
    if sessionWithLineItems.LineItems != nil {
        for _, item := range sessionWithLineItems.LineItems.Data {
            priceID := item.Price.ID
            quantity := item.Quantity
            // 此处添加保存到MongoDB的逻辑
        }
    }
}

额外注意事项

  • 移除IgnoreAPIVersionMismatch选项,确保Stripe Dashboard中的API版本与stripe-go客户端版本兼容(可在代码中显式设置:stripe.APIVersion = "2024-06-20",替换为你Dashboard中的版本)。
  • 不要依赖Webhook事件中的原始数据获取嵌套字段,Stripe的Webhook payload仅包含核心会话信息,嵌套字段需通过API查询展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:46:36