Мультивалютность в WooCommerce нужна магазинам, которые продают в нескольких странах, принимают оплату в разных валютах или хотят показывать покупателю привычную цену без ручного пересчёта.
Но добавить переключатель валют недостаточно. В рабочей схеме должны совпадать цена в каталоге, корзина, checkout, сумма платежа и данные, которые останутся в заказе после покупки.
Сначала определяем логику валют
Перед настройкой важно понять, что именно требуется магазину. Один проект только показывает ориентировочную цену в валюте посетителя, но принимает оплату в базовой валюте. Другой действительно проводит платежи в нескольких валютах и должен хранить исходную сумму заказа без повторного пересчёта.
Эти сценарии нельзя настраивать одинаково. Поэтому сначала фиксируется базовая валюта, список дополнительных валют, источник курса и правила оплаты.
Откуда брать курс
Курс можно задавать вручную или получать из внешнего API. Автоматическое обновление удобно, но оно должно быть предсказуемым.
Я настраиваю понятный интервал обновления и проверяю поведение при временной недоступности источника. Магазин не должен внезапно получить нулевой курс или пересчитать уже созданный заказ из за ошибки внешнего сервиса.
Округление влияет на реальную цену
После конвертации часто появляются значения, неудобные для покупателя. Например, цена превращается в длинную дробь или заканчивается случайными копейками.
Правила округления нужно задавать осознанно и одинаково применять в каталоге, корзине и checkout. Иначе пользователь видит одну сумму на карточке товара и другую перед оплатой.
Вариации и скидки требуют отдельной проверки
В простом товаре пересчитать одну цену легко. В магазине с вариациями, sale price, купонами и динамическими скидками логика становится сложнее.
Я проверяю не только обычную цену, но и диапазоны вариаций, скидочные правила, купоны, доставку и налоги. Важно, чтобы каждый компонент итоговой суммы использовал одну и ту же валютную логику.
Checkout должен сохранять выбранную валюту
Самая неприятная ошибка возникает, когда покупатель собирает корзину в одной валюте, а на checkout или при переходе к платёжному шлюзу сумма меняется.
Поэтому выбранная валюта должна стабильно проходить весь путь заказа. Я тестирую переходы между страницами, обновление checkout, AJAX запросы и возврат пользователя со страницы платёжной системы.
Платёжный шлюз должен поддерживать валюту
Не каждый способ оплаты принимает все валюты магазина. Если шлюз не поддерживает выбранную валюту, лучше заранее показать допустимый вариант, чем получить отказ уже после отправки заказа.
При настройке проверяется список валют конкретного шлюза и логика его отображения. При необходимости способы оплаты можно ограничить по валюте или региону.
Сумма заказа не должна меняться задним числом
После создания заказа курс может обновиться. Это не означает, что старый заказ нужно пересчитать.
В заказе должны сохраниться фактическая валюта и суммы, которые видел покупатель во время оформления. Это важно для возвратов, отчётности, интеграций и разбирательств по платежам.
Что проверяю после настройки
- переключение валют в каталоге и карточке товара
- цены простых и вариативных товаров
- sale price и купоны
- доставку и налоги
- корзину и checkout
- совместимость платёжных шлюзов
- округление
- сохранённую валюту и суммы заказа
- письма покупателю и менеджеру
- REST API и внешние интеграции если они используют цены заказа
Интеграции тоже должны знать о валюте
Если заказы уходят в CRM, учётную систему, склад или собственный сервис, одной суммы недостаточно. Внешняя система должна получить валюту и понимать, является ли сумма уже окончательной.
Для таких проектов я отдельно проверяю интеграцию WordPress с API, чтобы повторный импорт или синхронизация не пересчитывали исторические данные.
Когда нужна кастомная логика
Готового решения достаточно не всегда. Магазину могут понадобиться фиксированные курсы для отдельных рынков, разные прайс листы, особое округление, ограничения способов оплаты или синхронизация цен с внешней системой.
В таких случаях я дорабатываю существующую схему точечно, не меняя WooCommerce core и не добавляя несколько конфликтующих валютных плагинов ради одной функции.
Как заказать настройку
Можно написать A.S Groups и указать базовую валюту, нужные дополнительные валюты, используемые платёжные шлюзы и источник курса, если он уже выбран.
Сначала проверю текущую конфигурацию магазина и совместимость оплаты. После этого настрою валюты и протестирую полный путь от цены товара до созданного заказа.
Обсуждение
Вопросы и комментарии
Можно уточнить детали статьи или поделиться своим опытом. Первый комментарий проходит проверку.