Skip to content
msRussianPost
msRussianPost
Расчёт доставки Почтой России для MODX 3 и MiniShop3
  • MODX 3
  • PHP 8.2
  • miniShop3
  • Vue 3
  1. Компоненты
  2. msRussianPost
  3. Системные настройки

Системные настройки ​

Все ключи относятся к пространству имён msrussianpost (префикс в БД: msrussianpost_).

Где изменить: Настройки → Системные настройки — фильтр по namespace msrussianpost.

Быстрый переход из менеджера: Extras → Почта России → Системные настройки — откроется список настроек MODX с фильтром по msrussianpost. Пункт создаётся при установке пакета и виден при наличии права settings.

Служебный ключ msrussianpost_core_path в списке основных настроек нет: пакет создаёт его только миграцией со старого точечного ключа msrussianpost.core_path при обновлении. Его читает контроллер страницы админки, чтобы найти файл шаблона. По умолчанию используется core/components/msrussianpost/templates/default/index.tpl. Создавать ключ вручную нужно, только если вы переносили шаблон в другое место.

Доставка и параметры расчёта ​

НастройкаОписаниеПо умолчанию
msrussianpost_delivery_idID доставок MiniShop3 через запятую. Пусто — авто: все доставки с классом msrussianpost\Delivery\RussianPostDelivery(пусто)
msrussianpost_sender_indexПочтовый индекс пункта отправления (6 цифр)101000
msrussianpost_object_codesКоды типов отправлений через запятую23030,27030
msrussianpost_object_labelsСвои подписи в виджете: строки код=текст (допустимы : | или таб между кодом и текстом), по одной на строку. Строки с # в начале — комментарий. Ручные подписи важнее подписи из ответа API(пусто)
msrussianpost_tariff_packЗначение параметра pack в запросе GET …/v2/calculate/tariff/delivery публичного API. Одно значение на все коды из object_codes; для 23030 обычно подходит 1. Пустая строка — не передавать pack: часть услуг без него не считается. Ключ кэша учитывает это поле1

Пакет не разбирает коды ошибок API по полю pack: он передаёт значение как есть и показывает текст ошибки из ответа Почты. Проверяйте реакцию API на конкретный код на вкладке «Тестовый расчёт» и в журнале запросов.

Популярные коды объектов (ориентир):

КодУслуга
23030Посылка онлайн
27030EMS RT
47030Курьер онлайн
4030Бандероль
2010Заказное письмо 1 класса

Полный перечень удобно смотреть во вкладке Extras → Почта России → Справочник объектов (нужен VueTools).

Для кода 2010 публичный API допускает вес не более 100 г. При большем весе корзины компонент не запрашивает тариф для этого кода (чтобы не получать ошибку 2003 в журнале). Не смешивайте коды писем с посылками без учёта лимитов.

Публичный API часто отдаёт одинаковый caption для разных кодов. Тогда в виджет подставляется название из справочника API по коду. Поле object_labels позволяет задать свои формулировки. После смены подписей очистите кэш на странице компонента (в ключ кэша входит содержимое object_labels).

Справочник кодов объектов расчёта для публичного API — в документации калькулятора Почты России (PDF).

Вес и габариты ​

НастройкаОписаниеПо умолчанию
msrussianpost_default_weightВес в граммах, если в корзине нет веса1000
msrussianpost_weight_coefficientМножитель веса (например 1000, если вес задан в килограммах)1
msrussianpost_dimensions_enabledПередавать в API габариты посылки0
msrussianpost_default_lengthДлина по умолчанию, см30
msrussianpost_default_widthШирина по умолчанию, см20
msrussianpost_default_heightВысота по умолчанию, см10
msrussianpost_product_length_keyИмя поля длины товара в данных корзины(пусто → length)
msrussianpost_product_width_keyИмя поля ширины(пусто → width)
msrussianpost_product_height_keyИмя поля высоты(пусто → height)

Для каждой позиции корзины читаются три оси (пустые подставляются из дефолтов), в расчёт уходит максимум по каждой оси среди позиций («ящик не меньше самого крупного товара»). Публичный API tariff принимает размеры в сантиметрах. API Отправки POST /1.0/tariff — в миллиметрах (внутри компонента выполняется перевод см × 10). Кэш и журнал учитывают переданные габариты.

API ​

НастройкаОписаниеПо умолчанию
msrussianpost_api_modetariff — публичный API. otpravka — персональный API с fallback на tariff при ошибкахtariff
msrussianpost_api_base_urlБазовый URL публичного APIhttps://tariff.pochta.ru
msrussianpost_otpravka_base_urlБазовый URL API Отправкиhttps://otpravka.pochta.ru
msrussianpost_otpravka_tokenBase64-значение для заголовка X-User-Authorization: Basic <token>(пусто)
msrussianpost_otpravka_keyAccessToken для заголовка Authorization: AccessToken <key>(пусто)

В режиме otpravka тарифы персональные (в т.ч. по договору), действуют лимиты порядка трети суточного объёма отправлений по данным личного кабинета. Режим tariff — публичные тарифы, отдельной авторизации не требует.

Таймаут HTTP-запросов к обоим API жёстко задан в коде: 10 секунд на запрос. Настройки для него в пакете нет. При недоступности Почты виджет показывает ошибку расчёта, а при включённом msrussianpost_log_enabled запрос попадает в журнал.

Где взять ключи для API Отправки (otpravka) ​

Персональный расчёт через otpravka.pochta.ru доступен при договоре с Почтой России и подключённом доступе к API в сервисе Отправка (личный кабинет организации). Без договора и активации API остаётся только публичный режим tariff.

  1. Зарегистрируйтесь или войдите в личный кабинет Отправки, оформите договорные отношения с Почтой России, если их ещё нет.
  2. В кабинете откройте раздел API → Настройки (или актуальный аналог в меню личного кабинета). Там выдают пару значений для авторизации запросов.
  3. Значение для Authorization: AccessToken … вставьте в msrussianpost_otpravka_key. Значение для X-User-Authorization: Basic … (как выдаёт кабинет) — в msrussianpost_otpravka_token. При расхождении подписей в интерфейсе с заголовками HTTP ориентируйтесь на официальную спецификацию API Отправки (раздел про авторизацию).
  4. В системных настройках MODX выставьте msrussianpost_api_mode в otpravka и сохраните настройки. Очистите кэш сайта и при необходимости кэш компонента (см. раздел про кэш ниже).

Если токен или ключ неверные, API вернёт 401 и компонент при включённом fallback доберёт варианты через публичный tariff (см. Интеграция и кастомизация → Режимы API).

В режиме otpravka, если токен и ключ пусты, расчёт выполняется только через публичный API. При ошибках по отдельным кодам недостающие варианты добираются через tariff.

Параметры тарифа ​

НастройкаОписаниеПо умолчанию
msrussianpost_isaviaПриоритетная доставка, уходит в публичный API как isavia. Значение приводится к целому и передаётся без проверки, допустимые значения задаёт Почта России0
msrussianpost_sumoc_enabledОбъявленная ценность (стоимость корзины в расчёте)1
msrussianpost_sumin_enabledНаложенный платёж / стоимость вложения1
msrussianpost_servicesДополнительные услуги — коды через запятую(пусто)

Кэш и журнал ​

НастройкаОписаниеПо умолчанию
msrussianpost_cache_ttlTTL кэша ответов API, секунды21600 (6 ч.)
msrussianpost_log_enabledПисать запросы и ответы в журнал раздела «Почта России» в MODX0

Кэш хранится в core/cache/msrussianpost/. Очистка — кнопка в разделе Extras → Почта России (панель управления MODX) или смена параметров, влияющих на ключ кэша.

Журнал запросов — обычный текстовый файл core/cache/msrussianpost_requests.log по строке на запрос. Панель показывает последние 100 строк, кнопка Очистить журнал удаляет файл. Путь и лимит выборки в коде заданы жёстко, настроек для них в пакете нет.

Ориентир по msrussianpost_cache_ttl:

СценарийTTL (сек.)
Обычный магазин21600 (6 ч.)
Частые изменения тарифов3600 (1 ч.)
Минимум запросов к API86400 (24 ч.)

Рекомендации ​

  • Для рабочего сайта задайте delivery_id, чтобы виджет не показывался при выборе курьера или самовывоза.
  • Начните с api_mode = tariff. Переключайтесь на otpravka, когда есть договор и ключи в личном кабинете Отправки.
  • log_enabled включайте точечно при диагностике — журнал может разрастаться.

Логотип доставки ​

В MiniShop3 в списке доставок колонка Логотип берётся из поля logo. При установке или обновлении пакета для всех доставок с классом msrussianpost\Delivery\RussianPostDelivery с пустым логотипом подставляется URL файла assets/components/msrussianpost/img/pochta-ru-logo.png (фирменный знак Почты России).