Я ищу решение для получения кода местной валюты пользователей в зависимости от их часового пояса.
Используя Stripe и Firebase, я создаю запись Firestore в Firebase Auth
. Когда пользователь регистрируется, function
создает запись в базе данных, содержащую часовой пояс пользователя. Затем также создайте клиента внутри Stripe.
Чтобы получить часовой пояс пользователя, я использую moment.tz.guess()
, который входит в пакет moment-timezone
. Затем это сохраняется в Firebase как запись Firestore.
Функция закодирована как
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
?
Одно решение, с которым я столкнулся, заключалось в использовании страна-tz-валюта, но сначала мне нужно было получить код страны из часового пояса, и я надеялся на более простое решение.
Я всегда использую API это для своего проекта, это не только даст вам коды валюты в зависимости от страны, но также даст некоторые другие полезные данные (например, широту и долготу, ...), в основном это просто запрос GET, который возвращает объект информации о локальном местоположении вашего пользователя, Including continent_code
.
У него также есть отличная документация, и хорошо, что до 10 000 запросов / м бесплатны.
Это часовые пояса, а не города. Для меня (Америка/Торонто) разумно выбрать любой город в моем часовом поясе (например, Америка/Нью-Йорк). Но это не дает вам правильную валюту. Может быть, спросить пользователя, в какой валюте?