Зміст

Інтеграція з сервісом фіскалізації Dreamkas

Варто відразу обмовитися, що для користувачів, які працюють і приймають оплати за межами мордора, цей модуль - НЕ НУЖЕН.

Итак - что это за штука? Чи варто перекладати на українську?

Эта штука призвана обеспечить тесное взаимодействие с российским сервисом фискализации Dreamkas и поможет операторам и провайдерам строго следовать букве закона 54-Ф3, особенно его поправкам и изменениям, вступившим в силу с 01.07.2019.
Ещё одно важное замечание заключается в том, что работать это всё будет только при условии наличия у вас ККТ "Дримкас Ф" или "Касса Ф".

И зачем оно мне? Что оно вообще умеет делать конкретно?

Этот модуль позволит вам фискализировать(то есть - выбить чек на вашем ККТ) оплаты принятые от Интернет или УКВ пользователей прямо из их профиля в момент внесения оплаты. Так же модуль позволяет гибкий выбор настроек фискализации: выбор ККТ, типа налогообложения, типа денежных средств и, конечно же, наименование торговой позиции. И все это прямо в момент непосредственного внесения абонплаты. Вот как это выглядит на примере профиля УКВ юзера:

Но, конечно же, это - не самое главное. Самое главное - это возможность очень плотного взаимодействия с модулем “Обработка банковских выписок 2” aka banksta2.

Какая "banksta2"? Почему я о ней до сих пор не слышал?

Модуль Обработка банковских выписок 2 создан для импорта оплат из различных выписок различных банков от пользователей Интернет и УКВ.

Допустим, мне интересно - что нужно сделать, чтобы все это “взлетело”?

Настройка, включение, нюансы

Для “запуска” этого всего нам будет необходимо конечно же включить работу с API в личном кабинете Dreamkas, а так же нам понадобятся 2 основные опции alter.ini: DREAMKAS_ENABLED и DREAMKAS_AUTH_TOKEN. Первая, как несложно догадаться, включает или выключает, собственно, модуль, а вторая должна содержать строку-token для авторизации по API, полученную в том же личном кабинете сервиса Dreamkas. После чего мы должны лицезреть вот такую кнопку на панели задач:

нажав которую мы увидим следующее:

Как видите - там всё вполне себе наглядно(ну, на сколько оно может быть таковым) и каких-либо объяснений не требует. Единственное, пожалуй, что стоит отметить - никакие сущности редактированию не подлежат. То есть, если вы рассчитывали на копию личного кабинета Dreamkas в вашем биллинге - то ваши ожидания не оправдались. А мы плавно переходим к мало очевидным деталям.

Нюансы и тонкости

Первым стоит отметить очень важный момент который, на первый взгляд, имеет мало отношения к деньгам и фискальным операциям в частности. Но это только на первый взгляд. Заключается этот момент в том, что абсолютно каждый ваш юзер, деньги которого вы планируете фискализировать, ОБЯЗАТЕЛНЬНО ДОЛЖЕН иметь заполненное поле мобильного телефона у себя в профиле. Да, именно мобильного телефона и никакого другого. Да, это именно затем, чтобы сервис знал, куда вашему клиенту отправить фискальный чек о прошедшей оплате(или ссылку на него). Да, для пользователей Интернета можно указать ещё и e-mail.

Вторым мало очевидным нюансом может стать привязка определенной торговой позиции к конкретно взятому сервису(Интернет или УКВ), что позволяет в момент фискализации оплаты автоматически выбирать торговую позицию. И если для оплат, фискализируемых при внесении денег из профиля пользователя это можно расценивать чисто как маленькое удобство, то для банковских выписок это можно считать обязательным, дабы избежать мазохизма с выбором торговой позиции для каждой из 10 или 20 или 50 оплат в выписке. Делается это в разделе “Торговые позиции”(предпоследний скрин выше) с помощью вот этих нехитрых элементов управления:

По тонкостям вроде все - поговорим о некоторых фичах

Пожалуй, есть всего пара-тройка фич, о которых стоит упомянуть вот прям отдельно. Это оповещения о всяческом происходящем в духе FWTBT, кэширование и веб-хуки. Скорее всего вы не могли не заметить кучку необязательных DREAMKAS_* опций в alter.ini. Вот с их помощью мы и можем влиять на вышеописанные фичи. Итак - поехали:

Кэширование

Для того, чтобы веб интерфейс профилей Интернет и УКВ пользователей всегда оставался таким же плавным, быстрым и отзывчивым как раз и была применена подсистема кэширования. Чтобы ваш биллинг не ломился на сервер Dreamkas за данными для заполнения формы фискализации каждый раз, когда вы открываете профиль пользователя. Или тем более - открываете импортированную банковскую выписку. Да и вообще - чтобы дергать сервер Dreamkas по минимуму, ибо он этого не любит(так вскользь было упомянуто где-то у них в документации). Время жизни кэша управляется опцией DREAMKAS_CACHE_LIFETIME и по умолчанию равняется 1800 секунд или полчаса. Так же предусмотрена кнопка для мануального управления и принудительного обновления кэша Dreamkas.

Оповещения

Задуманы работать только в паре с веб-хуками. Умеют уведомлять обо всем, что “прилетает” от сервера Dreamkas. Носят скорее отладочный характер и будут больше полезны админам для разбора полетов, чем бухгалтеру/кассиру, у которого и так хватает задач, кроме того, чтобы разбирать какие-то там сообщения от какого-то там сервиса. Потому для этих целей предусмотрено включение уведомлений только для конкретных админ-юзеров с помощью опции DREAMKAS_ADMINS_ALLOWED в которую нужно через запятую записать логины админ-юзеров, которым мы хотим показывать эти оповещения. Так же имеются и другие опции управления уведомлениями:

Выглядит это все примерно вот так:

А на последнем скриншоте мы можем лицезреть самое верхнее уведомление ярко демонстрирующее, что произойдет при попытке фискализации оплаты для пользователя у которого НЕ ЗАПОЛНЕНО поле мобильный телефон в профиле.

Веб-хуки

Очень полезная вещь крайне рекомендуемая к включению и использованию. Призвана избавить нас от рутины собственноручного поллинга(опроса, то бишь) сервера Dreamkas с помощью cron или иных аналогичных механизмов, чтобы узнать статус той или иной сущности. Вся прелесть заключается в том, что сервер Dreamkas сам проинформирует нас о том или ином событии или изменении, как только оно произойдет. Наша основная и, пожалуй, единственная задача - дать ему URL, на который он и будет сообщать о всяком разном. Ну и да - есть возможность указать, о каком именно всяком мы хотели бы узнавать. Базируется эта штука на вызове функции-обработчика из RemoteAPI, но не требует никаких манипуляций с cron. Выглядит примерно вот так:

То есть, по сути, вся настройка сводится к тому, чтобы создать какой вам хочется/можется URL, который указывается в верхней строке на последнем скриншоте и выбрать события, о которых мы бы хотели узнавать. Ну и конечно же не забыть добавить это все в конфиг хостов нашего веб-сервера. Мы юзаем Apache и у нас это выглядит как-то примерно так:

<VirtualHost *:54321>
    ServerName billing.webhooks.net
    ServerAlias www.billing.webhook.net
    DocumentRoot /var/www/billing
 
    RewriteEngine On
    RewriteCond  %{QUERY_STRING} !^\/\?module=remoteapi&key=.+
    RewriteCond  %{QUERY_STRING} !.+&action=dreamkas&param=.+$
    RewriteRule ^.* - [F,L]
 
    LogLevel info
    LogLevel info rewrite:trace7
 
    ErrorLog /var/log/apache2/billing_webhook_error.log
    CustomLog /var/log/apache2/billing_webhook_access.log common
</VirtualHost>

Повторюсь - это только пример и вы вольны настроить свой веб-сервер как вам заблагорассудится. Кроме того, у вас ведь может быть даже и не Apache.

В заключение

Ну вот, пожалуй, и все по нюансам и настройкам. Разве что стоит ещё кратко упомянуть опции aletr.ini, оставшиеся за кадром:

    'DEFAULT'   => 'Общая',
    'SIMPLE'    => 'Упрощенная доход',
    'SIMPLE_WO' => 'Упрощенная доход минус расход',
    'ENVD'      => 'Единый налог на вмененный доход',
    'PATENT'    => 'Патентная система налогообложения'