Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

API OpenCart: REST API, OCMOD, Event-система — полный гайд

API OpenCart: REST API, OCMOD, Event-система — гайд

Краткий ответ: OpenCart предоставляет три основных способа интеграции: REST API (стандартные эндпоинты для обмена данными с внешними системами), OCMOD (модификация файлов без правки ядра) и Event-система (хуки в OC4 для расширения логики). Какой способ выбрать — зависит от задачи: REST API для обмена данными, OCMOD для быстрых правок, Events для глубокой интеграции.

Обзор способов интеграции

Способ Что делает Когда использовать Версии OC
REST API Стандартные эндпоинты для CRUD-операций Обмен данными с 1С, CRM, маркетплейсами OC3, OC4
OCMOD XML-модификации файлов без правки ядра Быстрые правки шаблонов и контроллеров OC2, OC3
Event-система Хуки до/после выполнения функций Глубокая интеграция, расширение логики OC4

REST API в OpenCart 3

OC3 поддерживает REST API с аутентификацией по API-ключу. Эндпоинты доступны по URL вида /index.php?route=api/....

Настройка API

  1. В админке: Система → Пользователи → API.
  2. Нажмите «Добавить» и укажите IP-адрес, с которого будут приходить запросы (или * для всех).
  3. Скопируйте сгенерированный API-ключ.

Основные эндпоинты

Метод Эндпоинт Описание
GET /index.php?route=api/product Список товаров
GET /index.php?route=api/product&id=123 Конкретный товар
POST /index.php?route=api/cart/add Добавить товар в корзину
GET /index.php?route=api/order Список заказов
POST /index.php?route=api/order/history Обновить статус заказа
GET /index.php?route=api/customer Список клиентов

Пример запроса (cURL)

# Получить список товаров
curl -X GET "https://example.com/index.php?route=api/product&api_token=ВАШ_ТОКЕН" 
  -H "Accept: application/json"

# Добавить товар в корзину
curl -X POST "https://example.com/index.php?route=api/cart/add&api_token=ВАШ_ТОКЕН" 
  -H "Content-Type: application/json" 
  -d '{"product_id": 42, "quantity": 1}'

Подробнее об архитектуре OC4 и его API — в статье «OpenCart 4 под микроскопом: архитектура, Twig, REST API, Event-система».

REST API в OpenCart 4 (JWT)

В OC4 API полностью переработан: JWT-аутентификация, RESTful-эндпоинты, JSON-ответы. Ключевые отличия от OC3:

Параметр OC3 API OC4 API
Аутентификация API-токен в URL JWT Bearer-токен
Формат ответа JSON/XML Только JSON
Эндпоинты Базовые (товары, заказы, клиенты) Расширенные + кастомные
Документация Ограниченная Встроенная (Swagger)

Пример авторизации в OC4

# Получить JWT-токен
curl -X POST "https://example.com/api/login" 
  -H "Content-Type: application/json" 
  -d '{"username": "admin", "password": "пароль"}'

# Использовать токен в запросах
curl -X GET "https://example.com/api/product" 
  -H "Authorization: Bearer ВАШ_JWT_ТОКЕН" 
  -H "Accept: application/json"

OCMOD: модификации без правки ядра

OCMOD — система модификаций, которая позволяет менять PHP-файлы без их физического редактирования. При установке OCMOD-модуля создаётся XML-файл, который описывает, какие файлы изменить и как. OpenCart применяет модификации «поверх» оригинальных файлов.

Структура OCMOD-файла

<modification>
  <name>Моя модификация</name>
  <code>my_modification</code>
  <version>1.0</version>
  <author>Разработчик</author>

  <file path="catalog/controller/common/header.php">
    <operation>
      <search>
        <![CDATA[$this->load->view('common/header', $data);]]>
      </search>
      <add position="before">
        <![CDATA[
        // Мой код до вызова шаблона
        $data['custom_variable'] = 'значение';
        ]]>
      </add>
    </operation>
  </file>
</modification>

Установка OCMOD

  1. Загрузите XML-файл через Дополнения → Модификации → Загрузить.
  2. Нажмите Обновить (синхронизация).
  3. Очистите кеш: Дополнения → Модификации → Очистить кеш.

Важно: не злоупотребляйте OCMOD. Каждая модификация — это дополнительная обработка при каждом запросе. На большом количестве OCMOD-ов сайт замедляется. Если выбираете между OC3 и OC4 — смотрите сравнение OpenCart 3 и 4.

Event-система в OpenCart 4

Event-система — основной способ расширения OC4. Вместо модификации файлов вы подписываетесь на «события» (хуки) и выполняете свой код до или после стандартной функции.

Как работает Event-система

  • Ядро OpenCart генерирует события в ключевых точках (добавление товара, оформление заказа, рендер страницы).
  • Вы создаёте модуль, который «слушает» нужное событие.
  • Код модуля выполняется в нужный момент без изменения ядра.

Пример: изменение данных товара перед выводом

// catalog/controller/event/my_handler.php

class ControllerEventMyHandler extends Controller {
    public function index(&$route, &$args, &$output) {
        // Этот код выполнится после catalog/controller/product/product
        // $output — HTML страницы товара
        
        // Пример: добавить кастомный класс к body
        $output = str_replace(
            '<body',
            '<body class="custom-page"',
            $output
        );
    }
}

// Регистрация в admin/model/setting/event.php:
// trigger: catalog/controller/product/product/after
// action: catalog/event/my_handler

Типичные события

Событие Когда срабатывает Пример использования
catalog/model/*/addProduct/after После добавления товара Отправка в 1С, CRM
catalog/model/*/getProduct/after После получения товара Добавить кастомные поля
catalog/controller/checkout/*/before До обработки checkout Проверка данных
catalog/controller/*/before До любого контроллера Логирование, редиректы

Когда стандартного API недостаточно

Если REST API не покрывает ваши задачи — создайте кастомный модуль с собственными эндпоинтами. Это полный контроль над логикой:

  • Свой контроллер с уникальным маршрутом.
  • Своя аутентификация (JWT, API-ключи, IP-белый список).
  • Свой формат ответа (JSON, XML, CSV).
  • Интеграция с внешними API (1С, CRM, маркетплейсы).

Подробнее о структуре модуля — в статье «Структура модуля OpenCart 3: файлы, MVC-L и OCMOD».

Лучшие практики

  1. Используйте Event-систему вместо OCMOD в OC4 — чище, быстрее, проще обновлять.
  2. Не модифицируйте ядро напрямую — правки пропадут при обновлении.
  3. Тестируйте API на тестовом стенде перед запуском на продакшене.
  4. Логируйте API-запросы — это поможет при отладке интеграций. Подробнее: Error log в OpenCart: где смотреть журнал ошибок.
  5. Защищайте эндпоинты — авторизация, rate limiting, валидация входных данных.

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

Какой способ интеграции выбрать?

Для обмена данными с внешними системами (1С, CRM) — REST API. Для быстрых правок шаблонов — OCMOD. Для глубокой интеграции и расширения логики — Event-система (OC4). Подробнее об архитектуре: OpenCart 4 под микроскопом.

OCMOD и Event-система — в чём разница?

OCMOD модифицирует файлы через XML-правки (виртуальная файловая система). Event-система позволяет подписаться на хуки и выполнять код без модификации файлов. Event-система чище и рекомендуется для OC4.

Можно ли создать свой REST API?

Да. Создайте кастомный контроллер в catalog/controller/api/, зарегистрируйте маршрут и настройте аутентификацию. Полный контроль над логикой и форматом ответа.

Где найти документацию по API?

В OC4 — встроенная документация (Swagger) по адресу /api/. В OC3 — на официальном сайте OpenCart и в коде контроллеров.

← Предыдущая Руководство по OpenCart для начинающих: установка и настройка Следующая → OpenCart для ниш бизнеса: что настроить в каждой сфере

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.