Настроить валюты в OpenCart: живой пример без ошибок
В магазине на OpenCart цена в рублях может правильно отображаться на витрине, но неверно уходить в корзину или платёжный модуль. Показываем настройку валют на примере магазина с RUB, USD и EUR.

В магазине на OpenCart 3.0.x можно добавить USD и EUR за несколько минут, но одна неверная цифра в поле Value изменит цены во всей витрине. На живом примере магазина с базовой валютой RUB разберём, как выбрать валюту по умолчанию, рассчитать значения для других валют, проверить корзину и не сломать оплату.
Живой пример: магазин с RUB, USD и EUR
Представим каталог, в котором цена товара хранится как 10 000 рублей. Покупатель должен видеть переключатель RUB, USD и EUR. При этом заказ в админке, остатки и отчётность магазина остаются привязанными к рублёвой базовой валюте.
Для примера возьмём такую схему:
- RUB — базовая валюта магазина, её значение — 1;
- USD и EUR — дополнительные валюты для отображения цен;
- курс задаётся относительно RUB, а не относительно предыдущей валюты в списке;
- цены в каталоге сначала проверяются в рублях, затем в корзине и на странице оформления заказа.
Числа для USD и EUR ниже демонстрационные. Перед публикацией их нужно заменить на актуальные значения из вашего источника курсов и проверить правила округления.
В OpenCart поле Value — это не «курс рубля к валюте» в привычной записи. Это множитель, которым система пересчитывает цену из базовой валюты в выбранную.
Что означает Value
Если базовая валюта — RUB, а один рубль равен примерно 0,011 доллара, значение USD будет близко к 0,011. Цена 10 000 RUB при таком множителе превратится примерно в 110 USD.
Для EUR действует тот же принцип. Если один рубль равен 0,010 евро, в поле Value у EUR указывают 0,010. Это не фиксированные курсы и не готовые значения для копирования.
Курс конвертации — числовой коэффициент, который связывает цену в базовой валюте с ценой в выбранной валюте. В OpenCart он используется для пересчёта отображаемой суммы.
Подход 1: один базовый курс и ручное обновление
Для небольшого магазина это самый предсказуемый вариант. Вы задаёте RUB как валюту по умолчанию, добавляете USD и EUR, а значения обновляете вручную по внутреннему расписанию.
Как настроить в админке OpenCart 3.0.x
- Откройте список валют. В административной панели перейдите в раздел локализации и откройте список Currencies. Названия пунктов могут немного отличаться в русской локализации, но раздел находится внутри System и Localisation. Проверка: в списке видны существующие валюты и кнопки создания или редактирования.
- Создайте базовую валюту RUB. Укажите название, код RUB, символ рубля и значение 1. Включите статус. Проверка: RUB отображается в списке как активная валюта с Value, равным 1.
- Добавьте USD. Укажите код USD, символ доллара и демонстрационное значение, рассчитанное относительно RUB. Проверьте положение символа: перед суммой или после неё. Проверка: в карточке товара после выбора USD сумма меняется, а код валюты отображается корректно.
- Добавьте EUR. Повторите настройку для EUR, но не копируйте значение из USD. Проверка: переключение между USD и EUR даёт разные суммы, а исходная цена в RUB не меняется.
- Выберите валюту магазина по умолчанию. В настройках магазина укажите RUB как базовую валюту. Для уже работающего проекта сначала сохраните резервную копию базы и проверьте, какая валюта используется в заказах. Проверка: новая сессия открывает каталог в RUB, если пользователь ещё не выбирал другую валюту.
- Очистите кеш. Очистите кеш модификаторов, темы и встроенный кеш, если он используется вашей сборкой OpenCart. Затем откройте витрину в приватном окне браузера. Проверка: старый формат цены и прежний символ не возвращаются после обновления страницы.
- Проверьте полный заказ. Добавьте товар в корзину, перейдите к оформлению, выберите способ доставки и оплаты. Проверка: валюта и сумма совпадают в карточке товара, корзине, заказе в админке и письме покупателю.
Почему это важно: каталог и корзина могут пересчитывать цену средствами OpenCart, а платёжный модуль — использовать собственную валюту или принимать только RUB. Поэтому проверять нужно не только страницу товара.
Подход 2: автоматическое обновление курсов
Автоматический импорт удобен, если цены меняются ежедневно или магазин показывает валюты иностранным покупателям. Но он добавляет точку отказа: внешний источник может изменить формат ответа, вернуть неполный набор валют или временно отдать старые данные.
| Подход | Что выигрываете | За что платите | Когда выбирать |
|---|---|---|---|
| Ручное значение | Предсказуемость и простая диагностика | Курс нужно проверять и менять самостоятельно | Небольшой каталог, редкие изменения, фиксированные розничные цены |
| Автоматический импорт | Меньше ручной работы, актуальнее отображение | Зависимость от источника, планировщика и расширения | Много заказов, ежедневное изменение курсов, международная витрина |
| Курс с наценкой | Компенсация комиссии банка и колебаний | Цена перестаёт совпадать с официальным курсом | Когда расходы на конвертацию заранее заложены в модель продаж |
| Отдельная цена для валюты | Полный контроль над маркетинговой ценой | Больше данных и риск рассинхронизации остатков и скидок | Когда пересчёт по курсу не отражает реальную цену для рынка |
Встроенное или установленное расширение может обновлять Value по расписанию, но конкретный способ зависит от версии OpenCart и модуля. Не включайте автоматическое обновление прямо перед распродажей: сначала запустите его на копии магазина, сравните несколько цен и проверьте журнал ошибок.
Что проверить после автоматического обновления
- какая валюта считается базовой после импорта;
- не стало ли значение RUB отличным от 1;
- не исчезли ли символы валюты и десятичные знаки;
- не округляются ли цены до нуля для дешёвых товаров;
- совпадает ли валюта заказа с валютой, которую принимает платёжный модуль;
- не запускается ли обновление несколько раз подряд из-за ошибки в планировщике.
Подход 3: отдельные цены вместо пересчёта
Пересчёт по курсу подходит не всем. Если товар стоит 999 рублей, автоматическое преобразование может дать неудобную сумму в евро или долларах. Ещё сложнее становится при психологическом ценообразовании: 999 RUB не обязательно должны превращаться в 10,99 USD по текущему курсу.
В таком случае используют расширение или собственную модель данных, которая хранит отдельные цены для валют. Это не стандартная настройка OpenCart 3.0.x, поэтому название, совместимость и способ интеграции нужно проверять по документации конкретного расширения.
Цена такого подхода — поддержка нескольких прайс-листов. При изменении скидки, налога или акции нужно убедиться, что обновились все валютные значения. Зато магазин получает контроль над конечной ценой и не зависит от дневного колебания курса.
Что чаще всего ломается
Валюта меняется на витрине, но не в оплате
Переключатель валют отвечает за отображение, а платёжный модуль может принимать только одну валюту. Проверьте список поддерживаемых кодов в документации модуля и тестовом заказе. Если провайдер принимает только RUB, не показывайте покупателю USD как будто списание произойдёт в долларах.
После обновления курса цены стали в сто раз больше
Обычно перепутаны направление курса и множитель. При базовой валюте RUB значение USD должно быть меньше единицы, если речь идёт о количестве долларов за один рубль. Не исправляйте проблему случайным делением: возьмите одну известную цену, рассчитайте результат вручную и сравните его с витриной.
В админке одна сумма, а в письме другая
Проверьте сохранённую валюту заказа, шаблон письма и модификаторы, которые меняют формат цены. Отдельно посмотрите налоги, доставку и скидку: они могут пересчитываться до или после конвертации.
Изменения не видны после сохранения
Причиной бывает кеш OpenCart, кеш темы, CDN или сохранённая валюта в cookie сессии. Откройте магазин в приватном окне, очистите кеши и повторите проверку на другом устройстве. Если результат отличается, смотрите заголовки кеширования и настройки темы.
Как выбрать вариант для проекта
Для магазина с одной страной продаж начните с RUB как базовой валюты и ручного значения для дополнительных валют. Это проще откатить и легче объяснить бухгалтерии и службе поддержки.
Автоматический импорт выбирайте, когда частота ручных изменений уже стала проблемой. До включения задайте допустимое отклонение и правило остановки: например, не публиковать новый курс, если источник вернул пустое значение или резкий скачок.
Отдельные цены оправданы, когда валютный рынок для вас — не просто способ показать сумму, а самостоятельная коммерческая зона. Для такого решения заранее опишите, где хранятся цены, как работают скидки и какую сумму получает платёжный провайдер.
Что сделать дальше
После настройки создайте таблицу контрольных цен: один дешёвый товар, один дорогой, товар со скидкой, доставка и налог. Раз в день или после каждого обновления курса сравнивайте эти позиции в каталоге, корзине, оформлении заказа и письме.
Для рабочего магазина также настройте резервное копирование перед изменением валют и включите журналирование задания, которое обновляет курсы. Следующий показатель для мониторинга — не только ошибка импорта, но и расхождение между суммой заказа в OpenCart и суммой, которую подтверждает платёжный модуль.
Тест и проверочная: Быстрые ответы с объяснением, почему остальные варианты неверны
Спросить за 10 ₽Источники: OpenCart Documentation, Официальный репозиторий OpenCart
Частые вопросы
Какую валюту указать базовой в OpenCart?
Почему значение USD в OpenCart меньше единицы?
Можно ли просто включить автоматическое обновление курсов?
Что будет, если оставить неверный курс на несколько дней?
Почему валюта переключается на главной странице, но не сохраняется?
Поддерживает ли OpenCart 4.x те же поля и меню?
Что делать, если в заказе сумма отличается от суммы на странице товара?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.