Начиная с версии 5.8, модуль «Приём платежей» содержит раздел «Кассы и чеки» для интеграции системы с различными сервисами аренды контрольно-кассовых машин (ККМ), появившимися в связи с началом действия закона 54-ФЗ с 1 июля 2017 года (подробнее об этом можно прочитать на сайте 54-fz.ru).
Кроме прямого взаимодействия системы управления с покупными или арендными кассами, возможен способ работы через платежные системы, поддерживающие онлайн-кассы. О настройке интеграций с платежными системами читайте в разделе Настройка платежей.
В меню модуля имеются пункты «Кассы» для настройки касс и «Чеки» для просмотра информации о чеках и операций с ними.
На вкладке «Кассы — Настройки» предлагается задать общие настройки для кассовых сервисов.
Если все настройки заполнены, вы увидите ссылку «К настройкам кассового сервиса». Пройдите по ней и укажите настройки в соответствии с данными, предоставленными сервисом.
На данный момент Неткэт поддерживает интеграцию со следующими кассовыми сервисами:
АТОЛ Онлайн, KKM Server, Штрих-М: Чекопечать, E-COM kassa, CloudKassir, КОМТЕТ Касса.
Сайт сервиса: online.atol.ru
Чтобы подключить сервис, необходимо оформить подключение к кассе или кассовой ферме на сайте АТОЛ онлайн и заполнить данные для подключения в настройках кассового сервиса.
Параметр | Описание |
---|---|
Логин | Логин в системе АТОЛ онлайн |
Пароль | Пароль в системе АТОЛ онлайн |
Группа касс | Идентификатор группы касс |
Адрес места расчетов | Доменное имя сайта (как указано при регистрации кассового аппарата) |
Класс интеграции с сервисом: nc_payment_register_atol
Сайт сервиса: kkmserver.ru/KkmServer
Чтобы подключить сервис, необходима подключенная и настроенная касса, которая поддерживается сервисом (список поддерживаемых устройств на официальном сайте), а также установленная и настроенная на работу с этой кассой программа «ККМ web-сервер», последнюю версию которой можно скачать на официальном сайте.
На компьютере, к которому физически подключена касса, устанавливается программа «ККМ web-сервер». С сервера на компьютер с кассой прокладывается соединение так, чтобы магазин, расположенный на сервере, мог отправлять «ККМ web-серверу» запросы на печать чеков.
Если у компьютера, к которому подключен кассовый аппарат, нет постоянного публичного IP-адреса, а также для безопасности можно о настроить подключение через VPN-туннель между сервером и кассовым компьютером (например, при помощи программы SoftEther VPN).
Настройки кассового сервиса:
Параметр | Описание |
---|---|
Название организации для заголовка чека | Юридическое наименование продавца |
Адрес KKM сервера | Адрес компьютера, к которому подключена касса, например, http://205.31.55.178:5893 |
Логин | Логин для авторизации на KKM сервере, по умолчанию - admin |
Пароль | Пароль для авторизации на KKM сервере, по умолчанию пустой (обязательно установите пароль в настройках KKM Server) |
Номер устройства | Если не заполнено, то первое не блокированное на сервере |
ИНН ККМ | Если не заполнено, то ККМ ищется только по номеру устройства, если он равен 0, а заводской номер ККМ заполнен, то ККМ ищется только по ИНН |
Заводской номер ККМ | Если не заполнено, то ККМ ищется только по номеру устройства |
Время (сек) ожидания выполнения команды | По умолчанию 30 секунд |
ФИО кассира (тег ОФД 1021) | Имя продавца (например, фамилия и инициалы), которое будет отпечатано на чеке |
Время снятия Z-отчёта и открытия новой смены (в формате ЧЧ:ММ) | В указанное время будет отправлена команда на закрытие текущей и открытие новой смены (по правилам работы с ККМ длительность смены не должна превышать 24 часа). Если поле не заполнено, или не настроен запуск скрипта управления задачами, открытие новой смены должно производиться ежедневно вручную или другими средствами автоматизации, иначе будут нарушены правила работы с ККМ. Если при попытке регистрации чека KKMServer сообщит, что смена открыта более 24 часов, будет предпринята попытка открытия новой смены. |
Класс интеграции с сервисом: nc_payment_register_kkmserver
Сайт сервиса: shtrih-m.ru
Чтобы подключить сервис, необходима подключенная и настроенная касса, которая поддерживается сервисом (сервис поддерживает кассы как моделей Штрих, так и Атол), установленная и настроенная на работу с этой кассой программа "Штрих‑М: Чекопечать".
Принцип работы программы в том, что она обращается к указанной в настройках папке, ищет в ней файлы с данными для печати чеков и печатает их.
Для ее корректной работы необходима настроеная папка, общая между сервером, где установлен интернет-магазин, и компьютером, к которому подключена касса. Сделать это можно настроив туннель соединения между сервером и кассовым компьютером через VPN, например, при помощи программы SoftEther VPN
Если вы выбрали печать чеков при помощи кассового сериса Штрих, данные для печати чеков будут сохраняться в папке /netcat_files/checks/. Именно она и должна быть настроена как общая.
Класс интеграции с сервисом: nc_payment_register_shtrih
Сайт сервиса: www.ecomkassa.ru
Чтобы начать пользоваться сервисом, необходимо зарегистрироваться на сайте www.ecomkassa.ru и приобрести онлайн-кассу (Штрих или Атол) в личное пользование.
Параметр | Описание |
---|---|
URL сервиса | Например, https://app.ecomkassa.ru/fiscalorder/ |
Логин | Логин в системе |
Пароль | Пароль в системе |
ID магазина | Идентификатор (номер) магазина |
Адрес места расчетов | Доменное имя сайта |
Класс интеграции с сервисом: nc_payment_register_ecomkassa
Сайт сервиса: cloudkassir.ru
Порядок подключения: https://developers.cloudkassir.ru/#poryadok-podklyucheniya
Параметр | Описание |
---|---|
Идентификатор сайта | Публичный идентификатор сайта из панели управления CloudPayments |
Секретный ключ | Пароль для API из панели управления CloudPayments |
Класс интеграции с сервисом: nc_payment_register_cloudkassir
Сайт сервиса: kassa.komtet.ru
Сервис предоставляет возможность работать с кассами в собственности от разных производителей и предоставляет услуги по аренде касс.
Ознакомиться с доступными вариантами решений можно в разделе «Интеграция».
Параметр | Описание |
---|---|
Идентификатор магазина | Shop ID |
Секретный ключ магазина | Shop Secret |
Идентификатор очереди | 4 цифры (ID очереди) |
Печать бумажного чека (Да/Нет) | укажите 1 или Да , чтобы включить печать бумажных чеков на кассах в собственности |
Класс интеграции с сервисом: nc_payment_register_provider_komtetkassa
На странице «Чеки» можно увидеть список всех проведённых чеков.
При нажатии на ID чека вы сможете просмотреть все имеющиеся данные по нему. При нажатии на ID заказа вы перейдёте на страницу полного отображения заказа, к которому относится этот чек.
Чеки, проведенные с ошибками, выделены в таблице красным цветом. Текст ошибки и другие данные, которые вернул сервер кассового сервиса, можно уточнить на странице просмотра информации о чеке или вкладке «Журнал событий».
На вкладке «Журнал событий» представлен список всех событий, относящихся к проведению чеков. События, относящиеся к ошибкам проведения чеков, подсвечены красным цветом, а сообщение содержит полный ответ сервера.
В системе существует возможность добавления собственных кассовых сервисов. Чтобы это сделать, необходимо:
nc_payment_register_provider
, и организовать его подключение при необходимости.my_register_provider_test
.Classificator_PaymentRegister
), указав в поле Дополнительное значение имя класса для интеграции с кассовым сервисом (например, my_register_provider_test
).Структура класса:
<?php class my_register_provider_test extends nc_payment_register_provider { /** * @var array массив с перечислением параметров кассового сервиса * [ название_настройки => описание ] * Для названий настроек (ключ массива) используйте префикс * 'MyCompany_PaymentRegister' (вместо 'MyCompany' подставьте префикс * разработчика класса). * Указанные в self::$settings параметры можно будет настроить в панели * управления. Значения можно получить внутри класса при помощи метода * get_setting(), например: * $this->get_setting('MyCompany_PaymentRegisterTestFirstParam'); */ static protected $settings = array( 'MyCompany_PaymentRegisterTestFirstParam' => 'Параметр 1', 'MyCompany_PaymentRegisterTestAnotherParam1' => 'Параметр 2', ); /** * Обработка нового чека (отправка запроса на создание чека в ККМ) * * @param nc_payment_receipt $receipt */ public function process_receipt(nc_payment_receipt $receipt) { // Метод должен отправить в кассовый сервис данные чека. // Получение типа операции: $operation = $receipt->get('operation'); if ($operation === nc_payment::OPERATION_SELL) { echo 'признак расчёта: приход'; } else if ($operation === nc_payment::OPERATION_SELL_REFUND) { echo 'признак расчёта: возврат приход'; } // Получение счёта, по которому осуществляется оплата: $invoice = $receipt->get_invoice(); // Получение информации о покупателе: // — адрес электронной почты, а если его нет — номер телефона; // если нет никаких контактных данных, то адрес unclaimed-receipts@домен.сайта $customer_contacts = $invoice->get_customer_contact_for_receipt(); // — адрес электронной почты $customer_email = $invoice->get('customer_email'); // — телефон в нормализованном международном формате (E.164 — с «+», без пробелов) $customer_phone = $invoice->get('customer_phone'); // Получение списка позиций в счёте (чеке): $items = $receipt->get_items(); /** @var nc_payment_invoice_item $item */ foreach ($items as $item) { echo 'Название: ' . $item->get('name'); echo 'Цена за 1 шт.: ' . $item->get('item_price'); // с учётом скидок, включая НДС echo 'Количество: ' . $item->get('qty'); echo 'Стоимость: ' . $item->get('total_price'); echo 'Ставка НДС, %: ' . $item->get('vat_rate'); // NULL, если не облагается echo 'Сумма НДС: ' . $item->get('total_vat_amount'); } } /** * Обработка обратного запроса от кассового сервиса */ public function process_callback() { // Если кассовый сервис выполняет обратный запрос (например, для подтверждения // создания чека), используйте в качестве адреса для него скрипт // /netcat/modules/payment/register/callback.php с необходимыми параметрами // (например, идентификатором чека). При запросе на данный адрес // будет выполнен метод process_callback() класса выбранного для сайта // кассового сервиса. } /** * Выполнение задач при периодическом запуске скрипта из планировщика: * например, закрытие и открытие смены, запрос статуса */ public function execute_cron_tasks() { } }
Пример добавления автозагрузки класса в /netcat/modules/default/function.inc.php
:
<?php // Файл /netcat/modules/default/function.inc.php // (класс кассового сервиса — my_register_provider_test, находится в // файле /netcat/modules/default/my_register_provider_test.php) spl_autoload_register(function($class) { if ($class == 'my_register_provider_test') { include __DIR__ . '/my_register_provider_test.php'; } });