В настоящее время я получаю общую сумму от 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;
}
}