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

无法获取Stripe结账会话的Customer对象问题求助

问题排查与修复方案

核心问题点

  1. 请求方法不匹配:Stripe跳转成功页是GET请求,但你的/order/success接口是POST方法,导致前端跳转后无法正确触发该接口获取数据。
  2. Session未展开关联对象:默认调用stripe.checkout.sessions.retrieve只会返回Customer的ID,不会自动拉取完整对象,后续单独调用customers.retrieve如果没处理错误也会出问题。
  3. 未配置姓名收集:你的结账会话只开启了税号和手机号收集,没开启姓名收集,就算拿到Customer对象,customer.name也会是undefined。

修复步骤

1. 修改成功页接口为GET方法

Stripe成功跳转是GET请求,把接口改成GET,同时通过expand参数直接拉取关联的Customer对象:

app.get("/order/success", async (req, res) => {
  try {
    const session = await stripe.checkout.sessions.retrieve(req.query.session_id, {
      expand: ['customer']
    });
    
    const customer = session.customer;
    // 处理姓名为空的情况,用邮箱或默认值兜底
    const displayName = customer.name || customer.email || 'Valued Customer';
    
    res.send(`<html><body><h1>Thanks for your order, ${displayName}!</h1></body></html>`);
  } catch (error) {
    console.error('获取会话信息失败:', error);
    res.send(`<html><body><h1>Oops, something went wrong!</h1></body></html>`);
  }
});

2. 开启结账会话的姓名收集

在创建结账会话时,添加customer_collection配置,强制收集客户姓名:

app.post("/create-checkout-session", cors(), async (req, res) => {
  const session = await stripe.checkout.sessions.create({
    line_items: [
      {
        price: "price_xxxxxxxxxxxxxxxx",
        quantity: 1,
      },
    ],
    tax_id_collection: {
      enabled: true,
    },
    phone_number_collection: {
      enabled: true,
    },
    // 新增:开启姓名收集
    customer_collection: {
      enabled: true
    },
    mode: "subscription",
    allow_promotion_codes: true,
    success_url: `${MY_DOMAIN}/order/success?session_id={CHECKOUT_SESSION_ID}`,
    cancel_url: `${MY_DOMAIN}?canceled=true`,
    subscription_data: {
      trial_period_days: 30,
    },
    automatic_tax: { enabled: true },
  });
  res.redirect(303, session.url);
});

3. 补充错误处理

异步接口必须加try/catch,避免因为网络波动、Stripe API报错导致页面崩溃,同时控制台的错误日志能帮你快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:20:38