Следите за использованием ключа, пока не упёрлись в лимит
Наблюдение за заголовками квоты по ходу работы показывает приближение к лимиту задолго до того, как запрос будет отклонён.
Просьба к новому посетителю выбрать страну из длинного выпадающего списка, прежде чем показать ему цену, является лишним шагом, который хорошее значение по умолчанию может полностью убрать.
Один вызов /v1/ip с адресом посетителя возвращает поле country_code в стандартном формате ISO 3166-1 alpha-2, а именно по этому формату уже индексируется большинство таблиц налогов и валют.
GET /v1/ip?ip=198.51.100.7{
"status": "ok",
"ip": "198.51.100.7",
"version": 4,
"found": true,
"country": "Germany",
"country_code": "DE",
"region": "Berlin",
"city": "Berlin",
"postcode": "10115",
"lat": 52.5200,
"lon": 13.4050,
"timezone": "Europe/Berlin",
"asn": 6789,
"org": "Example Telecom"
}Сопоставьте country_code со своей таблицей налоговых ставок и таблицей валют так же, как вы сопоставили бы страну, выбранную клиентом вручную. Считайте страну, определённую по IP, значением по умолчанию, а не окончательным ответом, и дайте посетителю возможность её изменить, поскольку у путешествующего клиента или клиента за VPN она не всегда будет совпадать со страной оплаты, которая ему действительно нужна.
Запрос для адреса, по которому нет данных о местоположении, возвращает found со значением false, а не ошибку, и это стоит явно предусмотреть. В таком случае используйте одну разумную страну и валюту по умолчанию, а не оставляйте поле пустым и не допускайте, чтобы пустой country_code незаметно попал в расчёт налога.
Цены самого My Geocode указываются только в евро, по всему миру, независимо от того, откуда клиент оплачивает. Это отдельный вопрос от того, что вы показываете своим посетителям: локализация отображаемой валюты по определённой стране вполне разумна, даже если ваш собственный бэкенд проводит все расчёты в одной валюте, как и наш.
Жёстко закрепить за посетителем определённую страну без возможности её изменить гораздо хуже, чем иногда ошибиться со значением по умолчанию. Клиент, делающий покупку из отеля за границей или через корпоративный VPN с выходом в другой стране, рано или поздно столкнётся с неверным значением по умолчанию. Всегда показывайте определённую страну как редактируемое поле, а не как фиксированное значение, зашитое в заказ.
Разумная схема: один запрос на каждую новую сессию посетителя с кешированием на время этой сессии. Это один запрос из вашей дневной квоты на сессию, а не на каждый просмотр страницы, и благодаря этому даже посещаемый сайт остаётся далеко в пределах 2 500 бесплатных запросов в день, которые входят в каждый ключ или доступны вовсе без ключа с одного адреса.
Тот же ответ содержит и поле timezone, поэтому процесс оформления заказа, которому нужны и валюта по умолчанию, и правильное отображение местного времени в подтверждениях заказа, может получить и то и другое одним вызовом, а не двумя отдельными запросами.
Правильная валюта по умолчанию уже при первом просмотре страницы избавляет от резкой смены цены позже при оформлении заказа. В документации по определению IPv4 перечислены все поля, которые возвращает эндпоинт.