PriceHint for WooCommerce

Как показать иностранцу цену в его валюте и не сломать оплату

Мы выпустили плагин для WooCommerce, который решает мультивалютность не так, как все остальные. Чтобы прийти к этому, нам пришлось сначала сделать «как все» — и выбросить в мусорку. История ниже.

WooCommerce10 валют4 центробанкаGeoIPHPOS
товар в каталоге
Кожаный рюкзак Aurora
149 BYN ≈ € 45
видит покупатель из Германии
Спишется всё равно 149 BYN — как хочет банк
Как это было

Мы написали мультивалютность. И выключили её через день

Шаг 1 · Задача «на полдня»

Показать иностранцам цены в их валюте

Мы сделали то, что сделал бы любой — полноценную мультивалютность. Цены в USD, EUR, BYN, RUB, автоопределение страны, фиксация курса Нацбанка на дату оплаты, пересчёт корзины, валюта в заказе и в письмах.

Всё работало. Мы были собой довольны.

Шаг 2 · Реальность

А потом мы показали это банку-эквайеру

«Платежи принимаем только в белорусских рублях»

Одна фраза — и весь наш красивый код превратился в тыкву. Можно сколько угодно показывать цену в евро, но в момент оплаты всё равно спишется BYN. Показанная сумма и списанная расходятся, покупатель в недоумении, оплата падает.

Плагин пришлось выключить. Неприятно.

Шаг 3 · Настоящая боль

Стоп. А покупатель вообще просил платить в евро?

Нет. Он просил понять, сколько это стоит. Это совсем другая задача — и она решается в сто раз проще.

Потому что её можно вылечить, вообще не прикасаясь к оплате.

Шаг 4 · PriceHint

Не трогай платёж — просто подскажи

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

Конфликтовать банально не с чем: плагин не лезет туда, где остальные мультивалютные решения всё и ломают.

Зачем это нужно

«149 BYN» — это дорого или дёшево?

Иностранец смотрит на вашу цену и не понимает порядок величины. Чашка кофе? Половина зарплаты? Он не знает. И делает единственное, что может.

👀
Видит «149 BYN»
цифра ни о чём не говорит
🔎
Уходит в конвертер
новая вкладка, поиск курса
🚪
Не возвращается
отвлёкся, передумал, ушёл к конкуренту

Вы заплатили за этот трафик. Человек дошёл до карточки товара — самый дорогой клик в воронке — и отвалился на ровном месте. Не потому что дорого. А потому что непонятно. Это боль любого магазина, который продаёт за границу.

Почему не ломается

Плагин работает только на витрине

Обычные мультивалютные плагины

Подменяют валюту всего магазина

Меняют валюту витрины и пытаются провести платёж в валюте покупателя.

При одновалютном эквайринге показанная сумма и списанная расходятся — и оплата ломается.

PriceHint

Добавляет ориентир рядом с ценой

Реальная цена магазина остаётся главной, рядом — подсказка в валюте посетителя.

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

Витрина
+ ориентир
Корзина
без изменений
Оформление
без изменений
Платёж
валюта магазина
Оранжевым — единственное место, куда плагин добавляет что-то от себя. Дальше по цепочке всё идёт ровно так же, как и без него. Поэтому ломаться нечему.
ориентир = цена магазина × официальный курс ЦБ × (1 + наценка %)
%
Зачем наценка? Чтобы компенсировать ваши потери на эквайринге и конвертации на стороне карты покупателя — иначе ориентир окажется приятнее, чем итоговое списание, и клиент удивится. Поставить ноль тоже можно, если хотите показывать чистый курс ЦБ. А можно пустить наценку на скидку — но мы вам этого не советовали 🙂
Универсальность

Плагин не «белорусский». Он подстраивается под ваш магазин

PriceHint сам выбирает источник курса по валюте вашего магазина — и сам показывает ту валюту, которая нужна конкретному посетителю. Ничего настраивать вручную не нужно. режим Pro

Магазин в
USD · доллары
кросс-курс через ЕЦБ
Китаец увидит ≈ ¥ 355, поляк — ≈ 198 zł, грузин — ≈ ₾ 135.
Магазин в
EUR · евро
курс берётся у ЕЦБ
Покупатель из Китая увидит ≈ ¥ 380, американец — ≈ $ 54.
Магазин в
RUB · рубли
курс берётся у ЦБ РФ
Гость из Казахстана увидит ≈ ₸ 24 500, турок — ≈ ₺ 1 750.
Магазин в
BYN · бел. рубли
курс берётся у НБРБ
Немец увидит ≈ € 45, британец — ≈ £ 38.
Магазин в
PLN · злотые
курс берётся у НБ Польши
Грузинский гость увидит ≈ ₾ 125, китаец — ≈ ¥ 330.

Логика простая: источник — по валюте магазина, отображение — по стране посетителя. Если у источника нет нужной пары (например, у ЕЦБ с 2022 года нет курса рубля) — плагин автоматически добирает её кросс-курсом из резервного источника, и ориентир всё равно посчитается.

В бесплатной версии магазин тоже может быть в любой валюте — просто курс всегда приходит из НБРБ (там 40+ валютных пар). Автоподбор нацбанка под валюту магазина — это уже Pro.

Дьявол в деталях

Две грабли, на которых ошибаются ровно в сто раз

Мы не берём курс с коммерческих агрегаторов — идём напрямую к центробанкам. А у них свои причуды, которые обычно упускают. Две из них стоят особенно дорого.

×100

Номинал: рубль «за сотню»

НБРБ котирует российский рубль за 100 единиц, а не за одну. Не учли номинал — и товар за 149 рублей превращается в товар за 14 900. Мы это учитываем; у ЦБ РФ поле «номинал» разбирается так же.

Курс «на завтра»

Курс Нацбанка устанавливается по итогам торгов (финиш в 13:00) и вступает в силу на следующий день. Дёрнуть «сегодняшний» курс в лоб — значит показывать вчерашние цифры и не знать об этом.

00:10
Применяем курс, который только что вступил в силу.
13:15
Забираем уже опубликованный курс на завтра, сразу после торгов.
↺ fallback
Сайт нацбанка недоступен — используем последний известный курс. Витрина не падает никогда.
Что внутри

Возможности

Десять валют — и это не предел

USD, EUR, BYN, RUB, KZT, PLN, GBP, CNY, TRY, GEL. Нужна другая — пересоберём под вашу страну и ваш нацбанк.

Определение страны

Через GeoIP — посетитель сразу видит свою валюту, без лишних кликов.

Наценка и округление

У каждой валюты — свои. Для евро одна наценка и округление до 5, для юаня — другие. Настраивается отдельно по каждой валюте.

Шорткод и REST

Переключатель валют шорткодом, REST-эндпоинт и настраиваемое расписание обновления курсов.

Витрина не падает

Многоуровневый кэш и деградация на последний известный курс при недоступности API.

Совместимость

HPOS, блочная корзина и оформление, полная локализация.

🌍
Вашей валюты нет в списке, а курс публикует ваш национальный банк? Напишите нам — соберём адаптер под ваш нацбанк и вашу страну. Архитектура плагина рассчитана именно на это: новый источник курсов добавляется без переписывания ядра.
Pro-версия

Free смотрит на мир глазами Минска

Обе версии работают с любой валютой магазина — тут никакого подвоха. Разница в том, откуда берётся курс. Free всегда спрашивает НБРБ: там больше 40 валютных пар, и для большинства сценариев этого хватает. Pro идёт к первоисточнику.

Pro берёт курс у нацбанка вашей валюты, а не через третью страну.

Магазин в евро — курс от ЕЦБ. В рублях — от ЦБ РФ. В злотых — от НБ Польши. Это официальный курс вашей юрисдикции, а не пересчёт через белорусский рубль. А если у источника нужной пары нет — Pro сам добирает её кросс-курсом из резервных источников, вместо того чтобы разводить руками.

Что умеет Free Pro
Валюта вашего магазина любая любая
Ориентир в валюте покупателя есть есть
Источник курса всегда НБРБ
40+ валютных пар
нацбанк валюты магазина
НБРБ · ЦБ РФ · ЕЦБ · НБ Польши
Если нужной пары нет у источника ограничен набором НБРБ кросс-курс из резервных источников
Наценка и округление общие для всех валют свои по каждой валюте
Переключатель валют (шорткод)
REST-эндпоинт
Автообновления плагина в течение года
Поддержка общая очередь приоритетная, без очереди
Адаптер под ваш нацбанк по запросу
🏦Курс от своего центробанка

Ваша валюта — ваш регулятор. Официальный курс вашей юрисдикции, а не пересчёт через чужой.

🔀Кросс-курс, когда пары нет

У ЕЦБ с 2022 года нет курса рубля — Pro молча доберёт его из резерва. Ориентир посчитается всё равно.

🎛️Тонкая настройка

Своя наценка и округление для каждой валюты. Плюс переключатель валют и REST для ваших сценариев.

🔄Обновления год

Woo и WordPress меняются часто. Мы держим совместимость — HPOS, блочная корзина, новые версии. Прилетает автоматически.

Приоритетная поддержка

Ответ быстрее и без очереди. Не ждёте, пока разгребётся общий поток.

🛡️Лицензия кончилась — сайт жив

Плагин не ломается и не гасит витрину: спокойно откатывается в бесплатный режим. Никаких сюрпризов в пятницу вечером.

USDEURBYNRUBKZTPLNGBPCNYTRYGEL
Главный вывод
Иногда правильное решение — не то, которое делает больше,
а то, которое не мешает работать тому, что уже работает.

PriceHint не пытается заменить платёжную систему. Он просто снимает у покупателя вопрос «сколько это в моих деньгах».