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

Node JS调用Stripe API获取超100条charge数据的实现方案问询

实现方案

核心逻辑

通过循环动态拼接Stripe分页参数starting_after,每次请求后判断返回结果的has_more字段,若为true则取当前批次最后一条数据的ID作为下一次请求的分页起点,直到has_more返回false后停止循环,合并所有批次的返回数据即可得到全量交易数据。

完整实现代码

const axios = require('axios');

// 请替换为你自己的配置参数
const URL = 'https://api.stripe.com/v1/charges';
const created = 1672531200; // 数据起始时间戳
const createdEnd = 1704067199; // 数据结束时间戳
const limit = 100;
const bearer = '你的Stripe密钥';
const stripe_account = '你的Stripe关联账户ID(无关联账户可删除该字段)';

// 改造原有请求函数,支持传入分页起始ID
async function getData(startingAfter = null) {
  const response = await axios.get(URL, {
    // 使用axios的params配置自动处理参数转义,无需手动拼接
    params: {
      created: {
        gte: created,
        lte: createdEnd
      },
      limit: limit,
      starting_after: startingAfter || undefined // 空值时axios会自动忽略该参数
    },
    headers: {
      Authorization: `Bearer ${bearer}`,
      "Stripe-Account": `${stripe_account}`,
    }
  });
  return response.data;
}

// 全量拉取主逻辑
async function getAllCharges() {
  const allCharges = [];
  let lastId = null;
  let hasMore = true;

  while (hasMore) {
    const currentRes = await getData(lastId);
    // 合并当前批次数据到全量数组
    allCharges.push(...currentRes.data);
    // 更新循环条件和下一次分页起点
    hasMore = currentRes.has_more;
    if (hasMore) {
      lastId = currentRes.data.at(-1).id;
    }
    // 可选:添加100ms延时,避免触发Stripe API速率限制,可根据实际情况调整
    await new Promise(resolve => setTimeout(resolve, 100));
  }

  return allCharges;
}

// 调用示例
getAllCharges()
  .then(charges => {
    console.log(`全量拉取完成,共${charges.length}条交易数据`);
    // 后续业务处理逻辑
  })
  .catch(err => {
    console.error('拉取失败,错误信息:', err);
  });

逻辑说明

  • 改造原有getData函数,增加可选的startingAfter入参,适配分页查询需求,使用axios自带的params配置自动处理参数转义,比手动拼接URL更稳妥
  • 循环逻辑通过has_more字段控制,只有存在更多数据时才会发起下一次请求
  • 每次请求完成后将当前批次数据合并到全量数组,避免数据丢失
  • 可选添加的延时逻辑可以有效避免请求频率过高触发Stripe的限流规则,若你的账号API请求配额较高可以删除该逻辑
  • 如需提升稳定性,可在getData中添加请求失败重试逻辑,避免偶发网络波动导致整个拉取流程中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:06:01