CRM и интеграции · OpenCart

SalesDrive Sync — CRM для OpenCart 2.3, 3.x и 4.x

Версия
v1.1.1 (OpenCart 4)
v1.1.1 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Совместимость
OpenCart 2.3.0.0 – 2.3.0.2 · 3.0.2 – 3.0.5 · 4.0.2 – 4.1.x
Платформа
OpenCart
SalesDrive Sync — CRM для OpenCart 2.3, 3.x и 4.x

Что внутри

  • Каждый заказ OpenCart автоматически становится заявкой в SalesDrive
  • Передаются покупатель, товары, доставка, оплата и комментарий
  • Триггер-статусы на выбор
  • Дедупликация заявок
  • Очередь повторных попыток при сбоях
  • Журнал обменов в админке
  • Отдельные сборки для OpenCart 2.3, 3.x и 4.x
  • Бесплатный

SalesDrive Sync для OpenCart — модуль, который соединяет магазин на OpenCart 2.3, 3.x или 4.x с CRM SalesDrive. Каждый заказ при оформлении (или при переходе в выбранный статус) автоматически становится заявкой в SalesDrive — с покупателем, товарами, стоимостью доставки и комментарием. Менеджер получает заявку в CRM за секунды после покупки, без ручного переноса данных из админки OpenCart.

Модуль полностью бесплатный. Скачать: cc_salesdrive.ocmod.zip для OpenCart 4.x или cc_salesdrive-oc3.ocmod.zip для OpenCart 3.0.2–3.0.5, либо cc_salesdrive-oc2.ocmod.zip для OpenCart 2.3.0.0–2.3.0.2 — без лицензионных ключей и ограничений по количеству заказов.

Что получает админ

Страница настроек SalesDrive Sync в админке OpenCart
Подключение: домен кабинета SalesDrive и API-ключ (хранится зашифрованным, в поле никогда не показывается). Кнопка «Проверить соединение» сразу говорит, видит ли модуль вашу CRM.
Общие настройки SalesDrive Sync: момент отправки, лимит попыток, cron-токен
Момент отправки — при оформлении или при переходе в выбранный статус, пропуск нулевых позиций, стоимость доставки, лимит повторных попыток и необязательный cron-токен для защиты публичного URL повторов.
Журнал синхронизации SalesDrive Sync в админке OpenCart
Журнал синхронизации: номер заказа, статус, ID заявки в SalesDrive, количество попыток и последняя ошибка — видно сразу, что доехало, а что нет.
Запись SalesDrive в истории заказа OpenCart
Результат синхронизации дублируется в историю заказа — менеджер видит номер заявки, не открывая журнал модуля.

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

  1. Покупатель оформляет заказ в вашем магазине OpenCart.
  2. Срабатывает событие catalog/model/checkout/order*addHistory — модуль реагирует на оформление или на переход заказа в статус-триггер.
  3. Формируется заявка: покупатель с телефоном в формате +380, товары с SKU, ценой и количеством, стоимость доставки, комментарий — и отправляется в SalesDrive через обработчик заявок (POST /handler/, заголовок X-Api-Key).
  4. Номер заявки фиксируется в журнале синхронизации. Журнал имеет уникальную запись на заказ, поэтому повторное событие никогда не создаст дубль — завершённая запись просто пропускается.
  5. Если SalesDrive недоступен — запись остаётся в очереди, и почасовой cron OpenCart повторяет отправку (по умолчанию до 5 попыток).
  6. Результат видно в админке: журнал показывает статус, ID заявки, количество попыток и последнюю ошибку, если она была.

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

Бесплатно. Скачивайте и пользуйтесь — без активаций, подписок и скрытых платежей.

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

  • OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5 или 2.3.0.0 – 2.3.0.2 — для каждой ветки отдельная сборка
  • PHP 7.4 или новее для сборок OC4 и OC3; сборка для OpenCart 2.3 работает начиная с PHP 5.6
  • Кабинет SalesDrive: домен вида yourshop.salesdrive.me и API-ключ базы заявок с правом «Заявки: добавление»
  • Включённый cron OpenCart — для автоматических повторных попыток при сбоях (сама отправка работает и без него)

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

  • Native-расширение для OpenCart 4.x — события (events) и отдельная таблица, без OCMOD-патчей чужих файлов. Событие регистрируется в формате OC4 с разделителем * перед методом — именно так ядро 4.x сопоставляет события моделей.
  • Идемпотентность на уровне БД: таблица cc_salesdrive_sync с UNIQUE-ключом по order_id — физически невозможно создать две заявки из одного заказа.
  • API-ключ шифруется перед сохранением в БД — в открытом виде в базе не лежит.
  • Retry-очередь через штатный cron OpenCart: задача cc_salesdrive_retry выполняется ежечасно и добирает заказы со статусом ошибки, а также те, что зависли в процессе отправки дольше часа. URL повторов можно закрыть собственным cron-токеном.
  • Журнал с excerpt-ами запроса и ответа — при разборе проблем видно, что именно модуль отправил и что ответила CRM.

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

  1. В админке OpenCart откройте Расширения → Инсталлятор и загрузите cc_salesdrive.ocmod.zip.
  2. Перейдите в Расширения → Расширения → Модули, найдите SalesDrive Sync и нажмите «Установить» — модуль создаст таблицу журнала, событие и cron-задачу.
  3. Откройте настройки модуля: введите домен кабинета SalesDrive и API-ключ.
  4. Нажмите кнопку проверки соединения — убедитесь, что CRM отвечает.
  5. Выберите момент отправки (при оформлении или при переходе в статус), сохраните — готово.

OpenCart 2.3. Штатный Инсталлятор 2.3 копирует файлы только по FTP: если FTP в магазине не настроен, распакуйте cc_salesdrive-oc2.ocmod.zip и залейте содержимое папки upload/ в корень магазина, а дальше так же — Расширения → Модули → SalesDrive Sync → «Установить».

Повторы в OpenCart 2.3. В 2.3 планировщика нет вообще, поэтому очередь повторов запускает обычный адрес витрины — добавьте его в crontab хостинга (обычно раз в 15 минут) и закройте собственным cron-токеном из настроек модуля:

curl -s "https://ВАШ-МАГАЗИН/index.php?route=extension/module/cc_salesdrive_cron/retry&token=ТОКЕН"

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

1.1.1 — август 2026
Суммы заявки и позиций отправляются в валюте заказа по его историческому курсу — раньше в SalesDrive ехали числа базовой валюты магазина (сборки 4.x и 3.x).
1.0.0 (OpenCart 2.3) — август 2026
Отдельная сборка под OpenCart 2.3.0.0–2.3.0.2 и PHP 5.6–7.x: шаблоны Bootstrap 3, событие addOrderHistory/after, очередь повторов как адрес витрины с cron-токеном (планировщика в 2.3 нет). Суммы в заявке переводятся в валюту заказа по его историческому курсу — магазин с базовой валютой, отличной от валюты продажи, больше не отправляет в CRM заниженные суммы. Названия товаров, способ оплаты/доставки и адрес декодируются из HTML-сущностей, в которых их хранит 2.3.
1.1.0 — август 2026
Исправлена отправка позиций: SalesDrive молча выбрасывал товары без поля id, и заявка приходила с пустым списком и нулевой суммой. Событие теперь регистрируется в формате OC4 с * перед методом (с точкой оно не срабатывало). Совместимость с PHP 7.4. В очередь повторов попадают заказы, зависшие в процессе отправки. Добавлен необязательный cron-токен для публичного URL повторов и префикс externalId для нескольких магазинов в одном аккаунте SalesDrive.
1.0.1 — июль 2026
Мелкие исправления регистрации события и маппинга позиций.
1.0.0 — июль 2026
Первый публичный релиз: отправка заказов в SalesDrive при оформлении или по статусу-триггеру, идемпотентный журнал синхронизации (UNIQUE по order_id), retry-очередь через почасовой cron, маппинг товаров/оплаты/доставки, шифрование API-ключа, проверка соединения, журнал с логом запросов и ответов.

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

Модифицирует ли модуль файлы OpenCart или тему?

Нет. Это событийное расширение для OC4: никаких OCMOD-патчей системных файлов, checkout и тема остаются нетронутыми. После удаления модуля магазин работает как раньше.

Откуда взять API-ключ SalesDrive?

Кабинет SalesDrive → Установки → Общие настройки и интеграции → Другие сервисы → API → API-ключи. Нужен ключ базы заявок с правом «Заявки: добавление».

Заказ меняет статус несколько раз — будет несколько заявок?

Нет. Журнал синхронизации имеет уникальную запись на заказ: если заявка уже создана, повторные события пропускаются.

Что будет, если SalesDrive «ляжет» в момент заказа?

Ничего не потеряется: попытка зафиксируется как ошибка, и почасовой cron будет повторять отправку (до 5 попыток по умолчанию). Заказ в OpenCart создаётся в любом случае.

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

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

Нужен ли постоянно работающий cron?

Только для автоматических повторов при сбоях. Основная отправка происходит сразу по событию заказа, без cron.

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

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

@catcode_support

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

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

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