我正在尝试创建一个辅助功能(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中可能没有支付来源。
答案 0 :(得分:0)
您的if
语句似乎缺少else
,因此封闭函数始终返回一个值:
if (customer && customer.sources && customer.sources.data) {
}
else {
// what do you want to return here?
}