Модуль интеграции Dreamkas для OpenCart 3.0.2.0

Этот пост был опубликован мной более года назад. Информация, описанная ниже, уже могла потерять актуальность, но всё ещё может быть полезна.

Доброго дня, читатель. Редко я захожу сюда, ещё реже что-то пишу. Сейчас один из тех случаев, когда я считаю, что это просто необходимо.

Введение

Те, кто сталкивался с сервисом Dreamkas (онлайн-кассы, фискализация чеков, сканеры, терминалы и вот это вот всё по 54-ФЗ), могут иметь интернет-магазин на базе OpenCart.

Дримкас предоставляет модули для интеграции с кучей CMS. Такие надстройки необходимы для отслеживания статусов фискализации чеков по заказу на сайте. Есть такой модуль и для OpenCart.

Проблема

Сервер вертится на классическом LAMP-стеке, причём PHP версии 7.2. На сервере стоит OpenCart 3.0.2.0 — на текущий момент это самая актуальная версия.

С сайта Dreamkas были скачаны оба модуля, т. к. там не указано какой из них для какой версии OC. Установка модуля dreamkas-f opencart.ocmod.zip проходит успешно, но попытка включить это расширение оборачивается ошибкой «Internal server error». Второй даже не устанавливается.

Очевидно, модули устаревшие и на новый ОС не подходят. Но из-за чего сбой — PHP или сам ОС?

Быстрый гуглёж показал, что больше никаких модулей Dreamkas для OC нет. Так как предоставленные не работают на моей версии, я обратился в техподдержку. Сутки спустя пришла замечательная отписка:

«Вам надо, вы и делайте»

При этом обращу твоё внимание на дату обращения и на дату релиза этой версии OpenCart:

У меня не было опыта разработки и модификации модулей для OpenCart, но поняв, что помощи ждать неоткуда, таки полез в код, по пути изучая логи.

Причина

В процессе изучения проблемы я нашёл её причину.

Неработоспособность модуля, который нам предлагают, объясняется изменениями в путях к моделям, которые произошли в последних версиях OpenCart.

Когда CMS начинает установку модуля, он пытается подгрузить модели по старым путям, где их нет. Возникает Internal server error с записью ошибки в стандартный лог php.

Решение

По итогу нескольких часов родилось то, чем я делюсь с тобой.

Изменения:

  1. За основу взят dreamkas-f opencart.ocmod.zip
  2. Шаблон:
    1. переписан с языка php на язык шаблонизатора Twig
    2. изменено расширение с .tpl на .twig
      файл upload/admin/view/template/extension/module/dreamkas.twig
  3. Страница настроек:
    1. удалены большие куски закомментированного и нерабочего кода
    2. исправлено получение списка установленных платёжных систем
    3. форматирование кода
      файл upload/admin/controller/extension/module/dreamkas.php
  4. Мелкое форматирование и исправление ссылки на сайт разработчика
    файл install.xml

Модуль устанавливается на OpenCart 3.0.2.0, настройки сохраняются, всё вроде гуд.

Но у меня нет возможности проверить насколько качественно работает этот модуль, так как работа с Дримкас у предпринимателя ещё не началась: нет никаких продаж в оффлайне и заказов в онлайне.

Вся основная логика модуля прописана здесь:

upload/catalog/controller/extension/module/dreamkas.php

Этот файл я не трогал. Я лишь восстановил возможность установить, удалить и настроить модуль. Но у меня есть большие планы на допилинг этого модуля для других целей.

Скачивай, ставь. Если это тебе помогло — буду рад узнать от тебя об этом в комментариях


UPDATE 07.03.19: судя по всему, модуль действительно рабочий.


UPDATE 20.03.19:


UPDATE 24.04.19:


Полезные ссылки

Открытая документация к Dreamkas API: kabinet.docs.apiary.io

Как подключить интернет-магазин к кассе: help.dreamkas.ru/hc/ru/articles/115005007709

Подключить кассу к OpenCart: help.dreamkas.ru/hc/ru/articles/115005504689

Чат для разработчиков: @apidreamkas

8 комментариев

  1. Добрый день.
    Столкнулся с аналогичной проблемой «вам надо — вы и дорабатывайте». Скачал вашу адаптацию, поставил на тестовый OC 3.0, настроил… контрольная закупка….. в ЛК кассы платеж прошел, чек из ОФД упал на почту. Модуль работает!!!
    Единственное, пропал статус фискализации в админке, который есть на версии 2.3.
    Хотел уточнить, не поменялись ли ваши планы на счет допилить модуль?

    1. Добрый день. Сори за поздний ответ. Рад знать, что кому-то помог этот пост. И жаль осознавать, что сами DreamKas *до сих пор* не потрудились как-то на это отрегировать и актуализировать инфу на своих ресурсах.

      Увы, за это время мои планы поменялись. Я больше не работаю над тем проектом на OpenCart. С тех пор у меня не возникало необходимости работы с DreamKas. Плюс судя по тому, что я видел, пока разбирался с проблемой, пришлось бы повыдёргивать добрую часть волос.

      1. Очень жаль. Однако, имя ваше и старания увековечены на странице поддержки DK и OC :). Большое Вам спасибо за проделанную работу от всех страдальцев связки Дримкас-ф и opencart 3.x
        https://help.dreamkas.ru/hc/ru/articles/115005504689-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C-%D0%BA%D0%B0%D1%81%D1%81%D1%83-%D0%BA-OpenCart

        1. Благодарю вас за то, что достучались до них.
          Немного удивлён, что они разместили ссылку на мой блог. Учитывая довольно прямой негатив в их сторону относительно поддержки – мой и не только – это смело. Тем не менее, благодарен и им – за лояльность к сторонним решениям.
          В ближайшее время выложу модуль на github, добавлю ссылку в этот пост и в комментарий под тем материалом. Надеюсь, на мне развитие модуля не остановится.

  2. Подскажите, если оплата проходит (интернет эквайрингом альфы, и тинькова), но касса это все не чувствует, куда хоть копать? Все логи пустые, зацепиться даже не за что..
    Настройки прописаны, все с виду хорошо..
    Смутило что в install.xml весь код явно не для 3.0.. ничего не перепутали?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *