Как мы подключали онлайн-кассу в Modstore/Modhost

Привет, друзья!
Сегодня мы расскажем о нашем опыте внедрения онлайн-кассы в маркетплейсе modstore.pro и хостинге modhost.pro.
Опишем всю цепочку — от выбора кассы и заключения договора до интеграции и первых пробитых чеков.
Зачем нам понадобилась онлайн-касса?
Чтобы нас не оштрафовали и не закрыли.Думаю, все уже в курсе, что онлайн-касса нужна практически каждому продавцу, занимающемуся розницей.
Поскольку мы не занимаемся продажей газет, лимонада, ремонтом обуви (из перечня видов деятельности, где касса не нужна), а продаем дополнения и хостинг физлицам через интернет — нам положено с 1 июля работать через кассу. Конечно, формулировку «изготовление и ремонт [...] ключей» можно применить к ключам репозитория modstore.pro, но только лишь с большой натяжкой, явно от штрафа не уберегающей.
Что мы сделали в первую очередь?
Собрали всю возможную информацию.Изучили законодательную базу, следили за начавшими появляться еще зимой подробными разборами нововедений и алгоритмами действий.
Кроме того, связались с нашими эквайерами (Яндекс.Кассой, RBK Money и тд.). Яндекс в итоге разработал решение, однако для нас, работающих с 4-мя эквайерами, оно не подошло.
Собрав информацию, вывели подзадачи: купить/арендовать кассу, разместить, заключить договор с ОФД (оператор фискальных данных — осуществляет приём, обработку, хранения и передачу фискальных данных (чеков) в ФНС), зарегистрировать кассу, сделать интеграцию с miniShop2.
Покупка кассы
Или аренда? Решили покупать — дешевле.
Аренда кассы (Атол Онлайн, к примеру) обходится минимум в 3000 рублей в месяц. При том, что цена кассы колеблется в диапазоне от 25 до 40 тысяч рублей. Мы же собираемся не один год работать, поэтому решили — покупаем. Но куда ее поставить? Дома держать неохота — придется протягивать лишний патч-корд, платить за интернет и держать подключенной к сети.
Обзвонили наши датацентры — коллеги смогли предложить только аренду стойки под сервер, что еще дороже.
Услугу размещения кассы в ЦОД за 500 рублей в месяц, как оказалось, предоставляет Lifepay. Вообще говоря, в основном они занимаются эквайрингом, но помимо этого продают и размещают кассы.
Схожих по стоимости решений найти не удалось (напишите в комментах, если знаете).
Что касается самого железа (кассы), то на рынке куча решений для розницы — работают с планшетами, телефонами, сканерами штрих-кодов, денежными ящиками и пр.
Нам был нужен самый простой аппарат — просто коробка для отправки чека в налоговую. К слову, я его так и не увидел — покупка и установка обошлись без личного присутствия. Говорят, касса выглядит так:

Итого:
- касса — 27 000
- фискализация, ПО и техподдержка — 10 000 в год
- размещение в ЦОД — 5 000 в год
ОФД
Данные о продажах должны поступать в налоговую через ОФД (оператора фискальных данных). Надо в обязательном порядке заключать с ним договор.Все ОФД предлагают одинаковую стоимость услуг — 3 000 рублей за годовое обслуживание одного кассового аппарата (кто-то из менеджеров сказал мне, что это законодательное требование, однако при беглом поиске подтверждения не нашел).
Поскольку мы давно пользуемся продуктами компании «СКБ-Контур», выбрали их предложение. Здесь тоже удалось немного сэкономить, заказав одновременно с услугами ОФД электронную подпись (для регистрации кассы на сайте ФНС и прочих операциях с налоговой). Вместо 6 000 рублей заплатили 5 000. Уровень сервиса — самый высокий во всей цепочке. Меньше суток прошло с момента оставления заявки на сайте до получения договора с ОФД и флешки для ключа подписи.
Регистрация в налоговой
Сперва выпустили сертификат электронной подписи. По нашим законам, зайти в ЛК юридического лица или ИП на сайте налоговой можно только через IE. Помимо этого, нужно установить миллиард защитных плагинов и настроек. СКБ-Контур автоматизировал цепочку — жмешь «Пуск» и все устанавливается, требуется только в течение 20 секунд хаотично двигать мышью и беспорядочно стучать по клавишам для генерации ключа :-)По этому ключу можно зайти в ЛК nalog.ru, узнать информацию по задолженностям и переплатам, написать заявления и, в том числе, зарегистрировать кассу.
Регистрация многоступенчатая:
- Вбиваем модель и заводской номер кассы, свои данные и данные ОФД в форму заявления, отправляем в ФНС.
- Если все в порядке, в этот же или на следующий рабочий день ФНС присваивает Регистрационный номер ККТ (контрольно-кассовой техники).
- Касса «прошивается», используя этот номер (этим занимались сотрудники Lifepay; судя по всему это тестовая отправка данных в ФНС и печать тестового чека).
- Результат прошивки (дата и цифры с тестового чека) вносятся в форму окончания регистрации кассы. Все готово.
У нас затянулось на 4.
Интеграция с miniShop2
Для интеграции предусмотрено простое и понятное API LifePay, которое мы и реализовали в своём новом дополнении mspLifePay.В ходе тестирования выяснилась пара особенностей, которые пришлось отдельно доработать.
Первая — в ms2 не предусмотрена колонка для скидки из коробки — разные платёжные дополнения делают это по своему, так что передачу полной цены и скидки реализовать не вышло.
Передаётся сразу цена со скидкой, как она хранится в таблице заказов. Исправить это пока что не представляется возможным, разве что предусмотреть такую колонку в miniShop3 (когда он будет).
Вторая — согласно требованию закона, в обработку не должны попадать безналичные оплаты через расчётные счета организаций (налоговая видит их без дополнительных уведомлений).
Мы выставляем такие счета вручную, уведомляя менеджера при создании заказа по почте. Соотвественно, у метода оплаты «Банковский перевод» нет класса-обработчика платежа, так как нет и самого платежа через какую-либо систему.
Полагая, что примерно такая логика будет у всех магазинов, из передачи в LifePay информации были исключены все платёжные методы с пустым полем class.

Если вам по какой-то причине нужно будет отправить данные своего кастомного метода без class, можно сделать это свои плагином:
<?php
/** @var modX $modx */
switch ($modx->event->name) {
case 'msOnChangeOrderStatus':
/** @var mspLifePay $mspLifePay */
$mspLifePay = $modx->getService('mspLifePay', 'mspLifePay', MODX_CORE_PATH . 'components/msplifepay/model/');
/** @var int $status */
/** @var msOrder $order */
if ($mspLifePay && $status == 2 && $order->payment == 15) {
$mspLifePay->sendData($order);
}
break;
}Здесь данные будут переданы для всех оплаченных заказов с платежным методом 15.Как уже говорилось, mspLifePay предоставляет и услуги эквайеринга, но нам они не были нужны, так что и реализовывать в дополнении мы их пока не стали — для этого нужны дополнительные логины-пароли на сервисе. Как только кому-то это понадобится, и он предоставит все нужные данные — мы допишем этот функционал и выпустим обновление.
Пакет уже доступен в магазине по цене 990 рублей. [UPDATE] Пакет бесплатный с 1 ноября 2017.

Процесс затянулся на неделю, поскольку техподдержка Lifepay не справлялась с потоком клиентов. К концу недели вал утих, в выходные все настроили окончательно.
Регистрация в ОФД
Нужно зайти на сайт своего ОФД (опять-таки, по ключу электронной подписи через IE), там ввести все данные кассы. Занимает 5 минут.После этого мы провели пару тестовых оплат, увидели чек в ЛК ОФД (а это значит, что он ушел в налоговую), убедились, что чек приходит клиенту на почту. Обрадовались! Вот так он выглядит:

Теперь после покупки клиент получает письмо, содержащее такой вот чек. Проверить чек можно на специальном сайте.
Интеграция с бухгалтерией
У Lifepay есть интеграция с Эльбой и другими бухгалтерскими сервисами. Однако, она работает только для поступлений наличных денег. Для нас это неактуально, а вот для торговых точек очень даже полезно видеть график поступления наличных в кассу.Заключение
Мы заплатили 27 000 единовременно и будем суммарно тратить 1500 рублей в месяц (ЦОД, ОФД, поддержка) на онлайн-кассу.Дает ли это нам что-то? Нет, не дает ничего. Это нужно исключительно государству для контроля за уплатой налогов. Но мы их всегда платили, и без такой формы контроля.
Что обрадовало? Объем затраченных сил и количество времени. Ожидалось, что потратим гораздо больше. Но сервисы в цепочке, в том числе государственные, работают довольно быстро и позволяют практически все сделать удаленно.
Надеюсь, наш рассказ кому-нибудь пригодится, буду рад ответить на вопросы в меру своей компетенции. Пишите о своем опыте в комментариях!
Комментарии: 36
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Малый бизнес по-всякому имеют, а на словах всячески поддерживают…
Вот вам 2 недели мучений, 30000 разовых расходов, ежемесячные расходы, и это все с сотен тысяч организаций!
И да, стоит учесть, что в modstore работают айтишники, хорошие специалисты, которые смогли все сделать сами, тогда как подавляющему большинству компаний придется кого-то нанимать для выполнения этой работы.
Программное решение для интеграции с miniShop2 мы написали и выложили в магазин, там нужно всего 3 настройки поменять. Полагаю, для других популярных CMS что-то такое уже или есть, или скоро будет.
Что не отменяет, конечно, самого факта ужесточения контроля честных предпринимателей на фоне истечения срока давности хищений на 2.6 млрд рублей у кое-каких нечестных. Мир несправедлив.
Всем благ, держитесь :)
А закон о кадастровой оценке недвижимости. Всех коснулось и граждан и бизнес. А с последним вообще песня. Мы купили участок за 3 млн. руб. Кадастровая палата оценила в 18 млн. руб (???). С неё налоги платятся. Мы провели независимую оценку и с этим пошли в суд. Но суд согласился снизить оценку только до 9 млн. Супер?
****
Отличие от 90х — вроде значительное, да, почти все автоматизировано, типа прозрачно, нет тех мешков из под картошки с деньгами, которые приходилось в багажнике возить))), но ощущения что вот такой же период наступает не покидают меня, с той разницей, тогда было много надежд и иллюзий, а сейчас, увы, как то все забавненько.
Извиняюсь за флуд.
Это всё Леонид, провокатор :)
Не так я представлял себе будущее 30 лет назад. «Перестройка, гласность, плюрализм мнений — главное начать!» Вот теперь точно: "… а у кого нет миллиарда тот идет в ****"
До сих пор не по себе после прочтения рассказа Леонида :(
У него очень сезонная торговля, прям вот 2 недели перед праздниками, весь остальной год можно ничего не делать, т.к. будет 2 клиента.
Он тоже под большим вопросом с этими кассами и думает, не закрыться ли, хотя у него авторский товар, интересный и не обычный. Вот такой пинк от государства.
Кроме того, проблема не в самих кассах, а в дефиците фискальных накопителей для них, которые делает только один завод, одного из владельцев которого недавно расстреляли в Лондоне. Ставки очень высокие за возможность подоить народ.
Я не подстрекаю, и ни чего не пропагандирую. Просто цифры хочется сравнить, ибо как раз продажа софта, онлайн-услуг, тот же хостинг — выгодно ли бизнесу и потребителю играть в офшорную трансграничную торговлю при таком положении дел?
Вряд ли это по теме топика, но если кто нароет что-то, просто киньте ссылку на интересный материал…
Но можно купить патент, и не платить эти 6%, тогда останется только злосчастный 1% и пенсионные взносы. Лично я его купил на этот год — тоже вполне доволен.
Стоимость патентов на один и тот же вид деятельности тоже отличается в зависимости от места получения патента (по месту жительства), что нелогично, для осуществляющих деятельность онлайн, например. (законодатель по прежнему рассматривает работающего по патенту как сапожника в конкретной будке или мясника).
Мою продукцию продают перекупщики. Я свожу концы с концами, бьюсь с проверяюшими, утопаю в бумагах — пепекупщики меняют личные автомобили раз 3-5 месяцев и хихикают надо мной.
Обидно! Я труженник, они барыги — налоговая ответственность одна и таже.
Надоело, я за майдан)))
Дочь офицера или просто не туда повернул?
— 1900 р. в месяц за аренду ккт + сюда же включены услуги ОФД;
— 6000 р. один раз в год за замену ФН.
Итого за год: 28800 р.
Отдельно КЭП для регистрации кассы в налоговой — 2600 р.
Суммарно это дешевле, чем покупать свою кассу и ставить ее в ДЦ.
Ну и да, пришлось допиливать механизм счетов. Так, чтобы в счет на оплату включались конкретные товарные позиции из заказа.
Отправил им запрос, планирую добавить поддержку в onlineKassa.
в журнале ошибок ничего нет. изменил настройку mspLifePay что режим не тестовый, опять купил и оплатил товар и опять тишина и в журнале ошибок и в ЛК LifePay
Какой смысл в этом модуле? И как она вообще работает?
Как получить тех.поддержу по бесплатному модулю? Понятное дело что никак. но всё же, как сделать так чтобы он заработал?