Курсы ЦБ РФ

Курсы валют по данным Банка России для OpenCart 4: расширение типа «Курсы валют», обновление по планировщику и кнопкой, рублёвая или любая другая основная валюта.

Назначение и совместимость

Штатные источники курсов OpenCart 4 (Европейский центробанк, fixer.io) не публикуют курс рубля, поэтому магазину с основной валютой RUB курсы взять неоткуда. Расширение берёт ежедневные официальные курсы Банка России (www.cbr.ru/scripts/XML_daily.asp) и пересчитывает значения всех валют магазина относительно основной.

ИсточникЕжедневный XML Банка России: более сорока валют, нужны только те, что заведены в магазине.
Любая основная валютаRUB, USD, EUR, CNY — любая из списка Банка России. Остальные валюты пересчитываются через рубль.
НаценкаПроцент, на который курс для покупателя отличается от официального. По умолчанию 0.
ОбновлениеЗадание планировщика «currency», кнопка «Обновить сейчас», а также штатные события: добавление и изменение валюты, сохранение настроек.

Проверено на OpenCart 4.1.0.4 и PHP 8.2 (нужны расширения PHP cURL и DOM, они есть в любой обычной сборке PHP). Другие версии OpenCart 4 не проверялись. Ядро не меняется: расширение использует штатный механизм «движка курсов валют».

В сборке OCM Store расширение установлено и выбрано движком курсов сразу после установки магазина. Настройки — Расширения → Расширения → Курсы валют → Курсы ЦБ РФ.

Установка

  1. Расширения → Установщик → «Загрузить», файл cbr_rates_oc4.ocmod.zip (имя не менять: OpenCart 4 берёт из него код расширения).
  2. В строке «Курсы ЦБ РФ» — зелёная кнопка «Установить».
  3. Расширения → Расширения, тип «Курсы валют» → «Установить» у «Курсы ЦБ РФ», затем «Редактировать»: включите статус и сохраните.
  4. Система → Настройки → Локализация → «Движок курсов валют» → «Курсы ЦБ РФ», сохраните. Сразу после сохранения курсы обновятся.

Права получает группа пользователя, который нажал «Установить». Другим группам — Система → Пользователи → Группы пользователей, маршрут extension/cbr_rates_oc4/currency/cbr.

Валюты заводятся как обычно в Система → Локализация → Валюты: код валюты (USD, EUR, CNY…) должен совпадать с кодом в списке Банка России. Значение курса можно оставить любым — его заменит первое обновление.

Настройки

Расширения → Расширения → Курсы валют → Курсы ЦБ РФ → Редактировать.

НастройкаПо умолчаниюСмысл
СтатусвключеноВыключенное расширение курсы не меняет, даже если выбрано движком
Наценка, %0Прибавляется к курсу каждой валюты, кроме основной. При 2 покупатель платит в иностранной валюте на 2 % больше, чем по официальному курсу. Допустимы отрицательные значения и дробные (2,5)
Записывать успешные обновления в журналвыключеноПосле каждого успешного обновления строка в журнале ошибок магазина. Ошибки записываются всегда

Ниже настроек — блок «Последнее обновление»: время, дата курсов Банка России и перечень обновлённых валют либо текст ошибки; кнопка «Обновить сейчас» и ссылка на список валют.

Как считаются курсы

OpenCart хранит у каждой валюты «значение» — сколько единиц этой валюты даёт одна единица основной валюты магазина. Расширение берёт у Банка России курс каждой валюты к рублю (с учётом номинала: для 100 казахстанских тенге — цена ста тенге) и считает значение как отношение рублёвого курса основной валюты к рублёвому курсу данной валюты, умноженное на (1 + наценка/100). Основная валюта всегда получает значение 1. Валюты, которых нет в списке Банка России, не меняются.

Пример: основная валюта RUB, доллар по Банку России 80 ₽, наценка 0 — значение USD = 0,0125 (товар за 8000 ₽ стоит 100 $). При наценке 2 % значение USD = 0,01275 (102 $). Если основная валюта USD, то значение RUB = 80 (при наценке 2 % — 81,6).

Когда обновляются курсы

Переключатель «Автоматическое обновление валют» в настройках магазина OpenCart 4.1.0.4 ни на что не влияет: ядро его не читает, обновление идёт, пока включено задание планировщика.

Журнал и ошибки

Каждая неудачная попытка (сайт Банка России недоступен, ответ не разобран, основной валюты магазина нет в списке Банка России) записывается в журнал ошибок магазина (Система → Обслуживание → Журнал ошибок) строкой CBR rates: … и показывается в блоке «Последнее обновление». Курсы при ошибке не меняются — остаются прежние значения.

Удаление

Сначала выберите другой движок (или пустое значение) в Система → Настройки → Локализация. Затем Расширения → Расширения → Курсы валют → «Удалить» у «Курсы ЦБ РФ» и Расширения → Установщик → удалить пакет. Настройки и событие расширения удаляются; значения валют остаются такими, какими были на момент последнего обновления.

Типовые вопросы