我正在寻找一种解决方案,以根据用户所在的时区获取本地货币代码。
使用Stripe和Firebase我正在Firebase Auth
上创建一个Firestore记录。用户注册后,function
将创建一个包含用户时区的数据库记录。然后在Stripe内部创建一个客户。
要获取用户时区,我使用moment.tz.guess()
软件包中提供的moment-timezone
。然后将其作为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);
});
});
默认情况下,在Stripe中将客户创建为USD。很好,但是使用timezone
可以识别时区的本地货币代码的API或软件包。例如,如果从moment
返回的时区为Australia/Adelaide
,如何使currencyCode
返回为aud
?
我遇到的一个解决方案是使用 country-tz-currency ,但是我首先需要从时区获取国家/地区代码,我希望有一个更简单的解决方案。
答案 0 :(得分:1)
我始终在项目中使用this API,这不仅会为您提供基于国家/地区的货币代码,而且还会提供一些其他有用的数据(例如纬度和经度,...), GET请求,该请求返回用户本地位置信息Including continent_code
的对象。
它也有出色的文档,而且很好的是,每米最多10.000个请求是免费的。