Онлайн-руководство разработчика NetCat
Новогодние скидки до 25%!
Подробнее
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Онлайн-кассы и электронные чеки

Начиная с версии 5.8, модуль «Приём платежей» содержит раздел «Кассы и чеки» для интеграции системы с различными сервисами аренды контрольно-кассовых машин (ККМ), появившимися в связи с началом действия закона 54-ФЗ с 1 июля 2017 года (подробнее об этом можно прочитать на сайте 54-fz.ru).

Кроме прямого взаимодействия системы управления с покупными или арендными кассами, возможен способ работы через платежные системы, поддерживающие онлайн-кассы. О настройке интеграций с платежными системами читайте в разделе Настройка платежей.

В меню модуля имеются пункты «Кассы» для настройки касс и «Чеки» для просмотра информации о чеках и операций с ними.

Кассы

На вкладке «Кассы — Настройки» предлагается задать общие настройки для кассовых сервисов.

  • Выставлять чеки  — использовать ли функционал интеграции с кассовыми сервисами. Поскольку с 1 июля 2017 года законодательство обязывает все интернет-магазины выписывать чеки при онлайн оплате, необходимо оставить настройку включенной, если только ваш магазин не находится вне правового поля Российской Федерации.
  • ИНН  — укажите ИНН.
  • Система налогообложения  — выберите систему налогообложения из представленных вариантов.
  • Используемый кассовый сервис  — выберите кассовый сервис, с которым Вы заключали договор и который хотите использовать для передачи данных платежей.

Если все настройки заполнены, вы увидите ссылку «К настройкам кассового сервиса». Пройдите по ней и укажите настройки в соответствии с данными, предоставленными сервисом.

На данный момент Неткэт поддерживает интеграцию со следующими кассовыми сервисами:
АТОЛ Онлайн, KKM Server, Штрих-М: Чекопечать, E-COM kassa, CloudKassir, КОМТЕТ Касса.

АТОЛ Онлайн

Сайт сервиса: online.atol.ru

Чтобы подключить сервис, необходимо оформить подключение к кассе или кассовой ферме на сайте АТОЛ онлайн и заполнить данные для подключения в настройках кассового сервиса.

Параметр Описание
Логин Логин в системе АТОЛ онлайн
Пароль Пароль в системе АТОЛ онлайн
Группа касс Идентификатор группы касс
Адрес места расчетов Доменное имя сайта (как указано при регистрации кассового аппарата)

Класс интеграции с сервисом: nc_payment_register_atol

KKM Server

Сайт сервиса: 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

E-COM kassa

Сайт сервиса: www.ecomkassa.ru

Чтобы начать пользоваться сервисом, необходимо зарегистрироваться на сайте www.ecomkassa.ru и приобрести онлайн-кассу (Штрих или Атол) в личное пользование.

Параметр Описание
URL сервиса Например, https://app.ecomkassa.ru/fiscalorder/
Логин Логин в системе
Пароль Пароль в системе
ID магазина Идентификатор (номер) магазина
Адрес места расчетов Доменное имя сайта

Класс интеграции с сервисом: nc_payment_register_ecomkassa

CloudKassir

Сайт сервиса: 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';
    }
});
Описание проекта