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

调用Stripe API返回undefined数组问题求助

问题原因及解决方法

问题根源

你的代码返回全undefined数组,核心原因是对Stripe SDK的Promise回调格式理解错误:
Stripe的stripe.checkout.sessions.listLineItems返回的是标准Promise,它的.then()回调仅接收成功返回的结果作为唯一参数,并非Node.js传统的错误优先(err, result)格式。你当前写的(err, lineItems)里,err实际是接口返回的lineItems数据,而lineItems是undefined,所以返回的lineItems自然是undefined,最终Promise.all得到的就是全undefined的数组。


解决方法

方法一:修正Promise.then参数写法

直接简化回调,只保留成功结果的参数,甚至可以省略多余的.then直接返回Promise:

const promises = sessionsIds.map(id => 
  stripe.checkout.sessions.listLineItems(id, { limit: 100 })
);

const usernames = await Promise.all(promises);

方法二:用async/await重构(更易读)

在map中使用async函数,直接await每个请求:

const promises = sessionsIds.map(async (id) => {
  const lineItems = await stripe.checkout.sessions.listLineItems(id, { limit: 100 });
  return lineItems;
});

const usernames = await Promise.all(promises);

额外建议:添加错误处理

如果某个请求失败,Promise.all会直接抛出错误,建议用try/catch包裹处理异常:

try {
  const promises = sessionsIds.map(id => 
    stripe.checkout.sessions.listLineItems(id, { limit: 100 })
  );
  const usernames = await Promise.all(promises);
  // 处理获取到的lineItems数据
} catch (error) {
  console.error('获取会话商品明细失败:', error);
  // 这里可以添加错误后的降级逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:20:31