Доставка · OpenCart

Ukrposhta — доставка Укрпочтой для OpenCart 2.3, 3.x и 4.x

Версия
v1.1.2 (OpenCart 4)
v1.1.1 (OpenCart 3.x)
v1.0.1 (OpenCart 2.3)
Совместимость
OpenCart 2.3.0.x · 3.0.2 – 3.0.5 · 4.0.2 – 4.1.x
Платформа
OpenCart
Ukrposhta — доставка Укрпочтой для OpenCart 2.3, 3.x и 4.x

Что внутри

  • Виджет выбора отделения Укрпочты: область → город → отделение
  • Данные из официального Адресного классификатора Укрпочты
  • Живой расчёт стоимости доставки через eCom API
  • Выбранное отделение фиксируется в заказе
  • Кеш справочников — чекаут не тормозит
  • Совместимость с OpenCart 4.x
  • Бесплатный

Ukrposhta Shipping для OpenCart 4 — модуль доставки Укрпочтой: виджет выбора отделения (область → город → отделение) в чекауте на базе официального Адресного классификатора и живой расчёт стоимости доставки по Украине через eCom API. Выбранное покупателем отделение фиксируется в заказе, поэтому менеджеру не приходится переспрашивать адрес в мессенджере.

Модуль бесплатный. Устанавливается как стандартное расширение OpenCart (ocmod) и не требует правок темы — виджет подключается через систему событий.

Как это работает — шаг за шагом

  1. Админ устанавливает расширение, нажимает «Установить» на странице настроек — модуль создаёт свои таблицы, события и cron-задания, — и синхронизирует области одним кликом.
  2. Вводятся Bearer eCom и индекс отправителя; кнопки «Проверить соединение» и «Тестовый тариф» сразу показывают, что ключ принят и API отвечает.
  3. Покупатель в чекауте выбирает доставку Укрпочтой — событие footer/after подключает виджет, и он ведёт по цепочке область → город → отделение.
  4. Модуль запрашивает тариф в eCom API по индексам отправителя и получателя; если API недоступен — показывается тариф по умолчанию из настроек.
  5. После оформления событие order.addOrder/after сохраняет выбранное отделение (индекс, город, название) вместе с заказом.
  6. Раз в неделю cron OpenCart обновляет кеш классификатора областей — справочник не устаревает.

Как это выглядит

Укрпочта — виджет выбора отделения в чекауте OpenCart
Покупатель выбрал «Доставка в отделение Укрпочты» — и сразу под контактами раскрывается виджет с выпадающим списком областей. Тариф уже учтён в итоге заказа.
Укрпочта — выбранное отделение подтверждено в чекауте OpenCart
Цепочка область → город → отделение завершена, выбор подтверждён отдельной строкой. Индекс можно ввести и вручную, если покупатель его знает.
Укрпочта — настройки модуля в админке OpenCart
Настройки: Bearer eCom (хранится зашифрованно, в форме только маска), индекс отправителя, тип услуги, тариф по умолчанию, гео-зона и налог, а также вид виджета.
Укрпочта — выбранное отделение в карточке заказа OpenCart
Выбор покупателя ложится прямо в адрес доставки заказа: отделение, город, индекс и область. Менеджеру не надо переспрашивать адрес в мессенджере.

Сколько стоит

Бесплатно. Скачиваете ukrposhta-1.1.2.ocmod.zip со страницы модуля и пользуетесь без подписок и платных версий.

Технические требования

  • OpenCart 4.0.2 – 4.1.x
  • PHP 7.4 и новее
  • Договор eCom с Укрпочтой: Bearer-ключ выдаётся в кабинете eCom после подписания договора — он нужен для классификатора адресов и расчёта тарифа
  • Для расчёта тарифа — почтовый индекс склада отправителя

Что под капотом

  • Bearer-ключ шифруется перед записью в базу; в форме настроек показывается только маска «сохранено», без открытого значения.
  • Классификатор кешируется в собственных таблицах (up_regions, up_cities, up_offices) — чекаут читает локальную базу, а не дёргает API на каждый запрос.
  • Интеграция через события OpenCart (footer inject, order added) — без OCMOD-патчей контроллеров и правок шаблонов темы.
  • Стандартные для методов доставки OpenCart настройки: гео-зона, класс налога, порядок сортировки.
  • Вид виджета настраивается: акцентный цвет, радиус скругления, тема (авто/светлая/тёмная).
  • Есть переключатель sandbox для работы с тестовой средой Укрпочты.

Как установить

  1. Скачайте ukrposhta-1.1.2.ocmod.zip и установите через «Расширения → Установка расширений».
  2. В «Расширения → Расширения → Доставка» найдите «Укрпочта — доставка» и нажмите Install.
  3. Откройте настройки, нажмите «Установить» — создадутся таблицы, события и cron-задания.
  4. Введите Bearer eCom и индекс отправителя, нажмите «Проверить соединение», затем «Синхронизировать области».
  5. Включите метод доставки и сохраните — виджет выбора отделения появится в чекауте.

История версий

1.1.2 (4.x) · 1.1.1 (3.x) · 1.0.1 (2.3) — август 2026
Живой тариф Укрпочты наконец считается. Оказалось, что запрос /domestic/delivery-price не проходил вообще: измерения надо слать в parcels, а индекс отправителя — строкой (01001 превращался в 1001, и API отклонял запрос). До этого на витрине всегда показывалась фиксированная ставка из настроек. Проверено вживую на всех трёх платформах: Киев → Дрогобыч, 3 кг — 55 грн, с объявленной ценностью — 67,50, комиссия за наложенный платёж — 65.
3.x 1.1.0 — 11 августа 2026
Сборка для OpenCart 3 подтянута до уровня 2.3 и 4.x. Виджет теперь прячет в шаге доставки только те поля, которые сам и заполняет: имя и фамилия получателя остаются на экране — раньше они прятались вместе с адресом, и «Продолжить» упиралось в ошибку на невидимом поле. Область в нативном списке проставляется надёжно: OpenCart перезагружает перечень областей после смены страны, поэтому выбор повторяется несколько секунд, пока список не осядет. Если покупатель переключается на другого перевозчика, нативная адресная форма возвращается (раньше она оставалась скрытой навсегда). Выбранное отделение теперь штампуется в адрес заказа на сервере, а черновик отправления больше не создаётся для заказов с другим способом доставки. Без ключа Укрпочты работает офлайн-список областей, город и 5-значный индекс вводятся вручную. Нулевой тариф подписывается «оплата при получении», а не «0 ₴». Защита адреса перенесена на события OpenCart 3 — ядровые файлы чекаута не патчатся.
1.1.0 — 5 августа 2026
Починен мёртвый полифил PHP 7.4: в файл полифилов был скопирован WordPress-гард ABSPATH, которого в OpenCart не существует никогда — поэтому подключение файла обрывало весь запрос, функции не объявлялись, и страница умирала пустой. Теперь модуль реально работает на PHP 7.4. Событие addOrder регистрируется одним правилом с * — оно покрывает и 4.0.x, и 4.1.x (раньше писалось две строки, и на 4.0.2 событие дублировалось); старая строка убирается при установке. В админке убран второй контейнер уведомлений, из-за которого тосты о сохранении выводились не туда, а подсказка «первый запуск — нажмите Установить» больше не висит на уже установленном модуле.
1.0.12 — 24 июля 2026
Виджет подскроливается в видимую зону, как только выбрана Укрпочта — на мобильном он рендерится выше селектора методов доставки, и его легко было не заметить.
1.0.11 — 24 июля 2026
Поиск города больше не падает молча без расширения mbstring: mb_strlen / mb_strtolower под гардом, автодополнение работает на любом хостинге.
1.0.10 — 23 июля 2026
Сохранение контактных данных больше не сбрасывает уже выбранный способ доставки и оплаты.
1.0.8–1.0.9 — 23 июля 2026
Адрес заказа заполняется точно тем, что выбрал покупатель (город из классификатора, область кириллицей, реальный индекс отделения), плюс ручной ввод индекса.
1.0.4 — 23 июля 2026
Исправлена фатальная ошибка в расчёте способов доставки: getQuote() загружал несуществующую в OpenCart 4.x catalog-модель localisation/geo_zone, из-за чего весь список способов доставки не появлялся («Требуется адрес доставки»). Гео-зона теперь проверяется прямым запросом к zone_to_geo_zone. Плюс: блок область → город → отделение появляется только после выбора метода «Укрпочта» (сначала метод — потом поля) и имеет демо-набор областей/городов/отделений для кликабельного теста без Bearer-ключа eCom.
1.0.0 — июль 2026
Первый публичный релиз: виджет область → город → отделение в чекауте, живой тариф по Украине через eCom API, шифрование ключа, еженедельная синхронизация классификатора через cron.

Частые вопросы

Нужен ли договор с Укрпочтой?

Да. Адресный классификатор и тариф авторизуются Bearer-ключом, который выдаётся после подписания договора eCom.

Надо ли править тему, чтобы виджет появился в чекауте?

Нет. Виджет подключается событием на footer/after — шаблоны темы не меняются, конфликтов с кастомными чекаутами по коду темы нет.

Создаёт ли модуль ТТН и наклейки?

Ещё нет. Создание отправления (ТТН) запланировано в следующем обновлении; текущая версия — выбор отделения и расчёт тарифа.

Что будет, если API Укрпочты недоступен?

Метод доставки не исчезнет из чекаута: покупателю покажется тариф по умолчанию, который вы задали в настройках.

Можно ли протестировать без боевого ключа?

Да, во вкладке «Ключи доступа» есть переключатель тестовой среды (sandbox).

Что произойдёт с данными после удаления модуля?

События и cron-задания убираются, а таблицы со справочником и сохранёнными выборами отделений намеренно сохраняются — после переустановки ничего не теряется.

Вопросы по модулю?

Пишите в Telegram — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.

@catcode_support

Не тот вариант, что искали?

Мы делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.

Заказать кастомный модуль