Модуль интеграции 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 не будет опубликован. Обязательные поля помечены *