我正在寻找一种解决方案,根据用户的时区获取用户的本地货币代码。
使用Stripe和Firebase,我正在Firebase Auth
上创建一个Firestore记录。当用户注册时,function
会创建包含用户时区的数据库记录。然后在 Stripe 内部创建一个客户。
为了获取用户时区,我正在使用moment-timezone
包中提供的moment.tz.guess()
。然后,系统会将其作为 Firestore 记录保存到 Firebase 中。
该函数编码为
exports = module.exports = functions.firestore
.document('users/{uid}')
.onCreate((snap, context) => {
const customerValue = snap.data();
const uid = context.params.uid;
const timezone = moment.tz.guess();
// const currencyCode = ;
return stripe.customers
.create({
email: customerValue.email
})
.then(customer => {
var customerObject = {
id: customer.id,
currencyCode,
};
return admin
.firestore()
.doc(`/users/${uid}/billing/${customer.id}`)
.set(customerObject);
});
});
默认情况下,客户在条纹中创建为美元。这完全没问题,但使用timezone
有一个 API 或包来识别时区的当地货币代码。例如,如果从moment
返回的时区Australia/Adelaide
,如何让currencyCode
返回为aud
?
我遇到的一种解决方案是使用国家/地区 tz-货币,但我首先需要从时区获取国家/地区代码,我希望有一个更简单的解决方案。
我总是在我的项目中使用此 API,这不仅会根据国家/地区为您提供货币代码,还会提供一些其他有用的数据(如纬度和经度,...(基本上它只是一个 GET 请求,它返回用户本地位置信息的对象,Including continent_code
。
它也有很棒的文档,好消息是最多 10.000 个请求/m 是免费的。