Я пытаюсь создать вспомогательную функцию (облачные функции Firebase) для подключения источника платежа к учетной записи клиента Stripe.
Вот мой код:
export const attachSource = async(uid: string, source: string) => {
const customer = await getOrCreateCustomer(uid);
const existingSource = customer.sources.data.filter(s => s.id === source).pop();
if (existingSource) {
return existingSource;
}
else {
await stripe.customers.createSource(customer.id, { source: source });
// update default
return await stripe.customers.update(customer.id, { default_source: source });
}
}
Я пробовал необязательную цепочку customer.sources?.data
, но это выдает несколько ошибок.
Также пробовал обернуть его в оператор if
, подобный этому:
if (customer && customer.sources && customer.sources.data) {
const existingSource = customer.sources.data.filter(s => s.id === source).pop()
if (existingSource) {
return existingSource;
} else {
await stripe.customers.createSource(subscriber.id, { source: source});
// update default
return await stripe.customers.update(subscriber.id, {default_source: source});
}
}
Это приводит к следующей ошибке: Not all code paths return a value.ts(7030)
Невозможно использовать !
, чтобы устранить проблему, поскольку в Stripe может отсутствовать источник платежа.