根据用户时区返回本地货币代码

时间:2019-04-10 11:41:17

标签: javascript node.js timezone

我正在寻找一种解决方案,以根据用户所在的时区获取本地货币代码。

使用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 ,但是我首先需要从时区获取国家/地区代码,我希望有一个更简单的解决方案。

1 个答案:

答案 0 :(得分:1)

我始终在项目中使用this API,这不仅会为您提供基于国家/地区的货币代码,而且还会提供一些其他有用的数据(例如纬度和经度,...), GET请求,该请求返回用户本地位置信息Including continent_code的对象。

它也有出色的文档,而且很好的是,每米最多10.000个请求是免费的。