Руководства

Определение страны посетителя для налогов и валюты по умолчанию

Просьба к новому посетителю выбрать страну из длинного выпадающего списка, прежде чем показать ему цену, является лишним шагом, который хорошее значение по умолчанию может полностью убрать.

Получение кода страны

Один вызов /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

Цены самого My Geocode указываются только в евро, по всему миру, независимо от того, откуда клиент оплачивает. Это отдельный вопрос от того, что вы показываете своим посетителям: локализация отображаемой валюты по определённой стране вполне разумна, даже если ваш собственный бэкенд проводит все расчёты в одной валюте, как и наш.

Ошибка, которой стоит избегать

Жёстко закрепить за посетителем определённую страну без возможности её изменить гораздо хуже, чем иногда ошибиться со значением по умолчанию. Клиент, делающий покупку из отеля за границей или через корпоративный VPN с выходом в другой стране, рано или поздно столкнётся с неверным значением по умолчанию. Всегда показывайте определённую страну как редактируемое поле, а не как фиксированное значение, зашитое в заказ.

Стоимость запросов

Разумная схема: один запрос на каждую новую сессию посетителя с кешированием на время этой сессии. Это один запрос из вашей дневной квоты на сессию, а не на каждый просмотр страницы, и благодаря этому даже посещаемый сайт остаётся далеко в пределах 2 500 бесплатных запросов в день, которые входят в каждый ключ или доступны вовсе без ключа с одного адреса.

Тот же ответ содержит и поле timezone, поэтому процесс оформления заказа, которому нужны и валюта по умолчанию, и правильное отображение местного времени в подтверждениях заказа, может получить и то и другое одним вызовом, а не двумя отдельными запросами.

Правильная валюта по умолчанию уже при первом просмотре страницы избавляет от резкой смены цены позже при оформлении заказа. В документации по определению IPv4 перечислены все поля, которые возвращает эндпоинт.