Как показать иностранцу цену в его валюте и не сломать оплату
Мы выпустили плагин для WooCommerce, который решает мультивалютность не так, как все остальные. Чтобы прийти к этому, нам пришлось сначала сделать «как все» — и выбросить в мусорку. История ниже.
Мы написали мультивалютность. И выключили её через день
Показать иностранцам цены в их валюте
Мы сделали то, что сделал бы любой — полноценную мультивалютность. Цены в USD, EUR, BYN, RUB, автоопределение страны, фиксация курса Нацбанка на дату оплаты, пересчёт корзины, валюта в заказе и в письмах.
Всё работало. Мы были собой довольны.
А потом мы показали это банку-эквайеру
Одна фраза — и весь наш красивый код превратился в тыкву. Можно сколько угодно показывать цену в евро, но в момент оплаты всё равно спишется BYN. Показанная сумма и списанная расходятся, покупатель в недоумении, оплата падает.
Плагин пришлось выключить. Неприятно.
Стоп. А покупатель вообще просил платить в евро?
Нет. Он просил понять, сколько это стоит. Это совсем другая задача — и она решается в сто раз проще.
Потому что её можно вылечить, вообще не прикасаясь к оплате.
Не трогай платёж — просто подскажи
Покупатель мгновенно понимает порядок цены. Банк получает свои деньги в своей валюте. Корзина, оформление и платёж не меняются ни на байт.
Конфликтовать банально не с чем: плагин не лезет туда, где остальные мультивалютные решения всё и ломают.
«149 BYN» — это дорого или дёшево?
Иностранец смотрит на вашу цену и не понимает порядок величины. Чашка кофе? Половина зарплаты? Он не знает. И делает единственное, что может.
Вы заплатили за этот трафик. Человек дошёл до карточки товара — самый дорогой клик в воронке — и отвалился на ровном месте. Не потому что дорого. А потому что непонятно. Это боль любого магазина, который продаёт за границу.
Плагин работает только на витрине
Подменяют валюту всего магазина
Меняют валюту витрины и пытаются провести платёж в валюте покупателя.
При одновалютном эквайринге показанная сумма и списанная расходятся — и оплата ломается.
Добавляет ориентир рядом с ценой
Реальная цена магазина остаётся главной, рядом — подсказка в валюте посетителя.
Валюта магазина, корзина, оформление и платёж остаются нетронутыми. В платёжную цепочку плагин не вмешивается вообще.
Плагин не «белорусский». Он подстраивается под ваш магазин
PriceHint сам выбирает источник курса по валюте вашего магазина — и сам показывает ту валюту, которая нужна конкретному посетителю. Ничего настраивать вручную не нужно. режим Pro
Логика простая: источник — по валюте магазина, отображение — по стране посетителя. Если у источника нет нужной пары (например, у ЕЦБ с 2022 года нет курса рубля) — плагин автоматически добирает её кросс-курсом из резервного источника, и ориентир всё равно посчитается.
В бесплатной версии магазин тоже может быть в любой валюте — просто курс всегда приходит из НБРБ (там 40+ валютных пар). Автоподбор нацбанка под валюту магазина — это уже Pro.
Две грабли, на которых ошибаются ровно в сто раз
Мы не берём курс с коммерческих агрегаторов — идём напрямую к центробанкам. А у них свои причуды, которые обычно упускают. Две из них стоят особенно дорого.
Номинал: рубль «за сотню»
НБРБ котирует российский рубль за 100 единиц, а не за одну. Не учли номинал — и товар за 149 рублей превращается в товар за 14 900. Мы это учитываем; у ЦБ РФ поле «номинал» разбирается так же.
Курс «на завтра»
Курс Нацбанка устанавливается по итогам торгов (финиш в 13:00) и вступает в силу на следующий день. Дёрнуть «сегодняшний» курс в лоб — значит показывать вчерашние цифры и не знать об этом.
Возможности
Десять валют — и это не предел
USD, EUR, BYN, RUB, KZT, PLN, GBP, CNY, TRY, GEL. Нужна другая — пересоберём под вашу страну и ваш нацбанк.
Определение страны
Через GeoIP — посетитель сразу видит свою валюту, без лишних кликов.
Наценка и округление
У каждой валюты — свои. Для евро одна наценка и округление до 5, для юаня — другие. Настраивается отдельно по каждой валюте.
Шорткод и REST
Переключатель валют шорткодом, REST-эндпоинт и настраиваемое расписание обновления курсов.
Витрина не падает
Многоуровневый кэш и деградация на последний известный курс при недоступности API.
Совместимость
HPOS, блочная корзина и оформление, полная локализация.
Free смотрит на мир глазами Минска
Обе версии работают с любой валютой магазина — тут никакого подвоха. Разница в том, откуда берётся курс. Free всегда спрашивает НБРБ: там больше 40 валютных пар, и для большинства сценариев этого хватает. Pro идёт к первоисточнику.
Магазин в евро — курс от ЕЦБ. В рублях — от ЦБ РФ. В злотых — от НБ Польши. Это официальный курс вашей юрисдикции, а не пересчёт через белорусский рубль. А если у источника нужной пары нет — Pro сам добирает её кросс-курсом из резервных источников, вместо того чтобы разводить руками.
| Что умеет | Free | Pro |
|---|---|---|
| Валюта вашего магазина | ✓ любая | ✓ любая |
| Ориентир в валюте покупателя | ✓ есть | ✓ есть |
| Источник курса | всегда НБРБ 40+ валютных пар |
нацбанк валюты магазина НБРБ · ЦБ РФ · ЕЦБ · НБ Польши |
| Если нужной пары нет у источника | ограничен набором НБРБ | кросс-курс из резервных источников |
| Наценка и округление | общие для всех валют | свои по каждой валюте |
| Переключатель валют (шорткод) | — | ✓ |
| REST-эндпоинт | — | ✓ |
| Автообновления плагина | — | ✓ в течение года |
| Поддержка | общая очередь | приоритетная, без очереди |
| Адаптер под ваш нацбанк | — | по запросу |
Ваша валюта — ваш регулятор. Официальный курс вашей юрисдикции, а не пересчёт через чужой.
У ЕЦБ с 2022 года нет курса рубля — Pro молча доберёт его из резерва. Ориентир посчитается всё равно.
Своя наценка и округление для каждой валюты. Плюс переключатель валют и REST для ваших сценариев.
Woo и WordPress меняются часто. Мы держим совместимость — HPOS, блочная корзина, новые версии. Прилетает автоматически.
Ответ быстрее и без очереди. Не ждёте, пока разгребётся общий поток.
Плагин не ломается и не гасит витрину: спокойно откатывается в бесплатный режим. Никаких сюрпризов в пятницу вечером.
а то, которое не мешает работать тому, что уже работает.
PriceHint не пытается заменить платёжную систему. Он просто снимает у покупателя вопрос «сколько это в моих деньгах».