Есть ли лучший способ получить общую сумму Stripe? - PullRequest
0 голосов
/ 27 января 2020

В настоящее время я получаю общую сумму от Stripe, как показано ниже. Однако я должен восстановить все заряды в наборах по 100, и это очень неэффективно и медленно.

В настоящее время для запуска из облачной функции Firebase требуется 40 секунд.

Можно ли сделать один вызов для этого?

export async function getStatistics(): Promise<any> {
  try {
    let count = 100;
    let totalCount = 0;
    let totalCharge = 0;
    let allCharges = [];
    let lastCharge = null;
    let charges;

    while (count === 100) {
      if (!lastCharge) {
        charges = await stripe.charges.list({ limit: 100});
      } else {
        charges = await stripe.charges.list({ starting_after: lastCharge.id, limit: 100});
      }
      count = charges.data.length;
      lastCharge = charges.data[count - 1];
      totalCount = totalCount + count;
      allCharges = allCharges.concat(charges.data);
      if (totalCount > 2000) {
        // failsafe
        break;
      }
    }

    for (const charge of allCharges) {
      totalCharge = totalCharge + charge.amount;
    }

    return { totalCharge: totalCharge, totalCount: totalCount };
  } catch (err) {
    console.log(err);
    throw err;
  }
}
...