В кассовом ПО Artix реализована возможность работы с банковскими платежными системами.

Для оплаты покупок банковскими картами на кассовом узле необходимо установить установить специальное банковское ПО и подключить ПИН клавиатуру.

Файлы, необходимые для функционирования модуля, после установки размещаются в директории /linuxcash/cash/paysystems/<название платежной системы>.

Файлы клиентского приложения предоставляются сотрудниками банка, которые осуществляют настройку работы процессинга.

Порядок работы с платежными системами

При использовании оплаты по безналу перед обращением к платежной системе выполняется проверка доступности ФР и модуля ЕГАИС. 

Ниже приведена общая схема взаимодействия с платежными системами. Конкретные платежные системы могут не поддерживать определенные функции.

Оплата

  1. Обращение к платежной системе. Выполняется автоматически при выборе типа оплаты, который связан с платежной системой. В качестве суммы оплаты передается текущая введенная сумма.
  2. Транзакция обрабатывается банком, результат возвращается кассовой программе.
  3. Печатаются квитанции об оплате или отказе в оплате по карте. Необходимость печати квитанций в случае отказа определяется платежной системой.
  4. В случае подтверждения операции банком, оплата добавляется в чек.
Добавление оплаты в чек выполняется только после списания денег с карты покупателя.

Количество печатаемых слипов

Количество печатаемых слипов регулируется параметром countPaymentProcessingSlips, который задается в секции [Check] конфигурационного файла /linuxcash/cash/conf/ncash.ini.

Максимальное количество слипов ограничивается клиентским модулем процессинга.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
countPaymentProcessingSlipsцелочисленный
  • 0 – слипы не печатаются,
  • -1 – печатаются все слипы,
  • 1 – печатается первый слип,
  • 2 – печатается первый и второй слип,
  • 3 – печатается первый, второй и третий слип

и т.д.

  • Если количество слипов, полученных от процессинга, равно количеству печатаемых слипов, указанных в настройке, то печатается это самое количество.
  • Если количество слипов, полученных от процессинга, больше количества печатаемых слипов, указанных в настройке, то печатается то количество слипов, которое указано в настройке.
  • Если количество слипов, полученных от процессинга, меньше количества печатаемых слипов, указанных в настройке, то печатается то количество, которое было получено от процессинга.
Пример 1

Процессинг присылает на кассу 2 (два) слипа, тогда если значение настройки countPaymentProcessingSlips:

  • 0 – слипы напечатаны не будут,
  • -1 – будут напечатаны все слипы (то есть два слипа, так как от процессинга получено два слипа),
  • 1 – будет напечатан только один слип (то есть только первый, так как в настройке задано печатать 1 – один первый слип),
  • 2 – будет напечатано два слипа (то есть первый и второй, так как в настройке задано печатать 2 – два первых слипа),
  • 3 – будет напечатано только два слипа, несмотря на то, что указано в настройке (так как от процессинга получено всего два слипа),
  • 4 – будет напечатано только два слипа, несмотря на то, что указано в настройке (так как от процессинга получено всего два слипа).
Пример 2

Процессинг присылает на кассу 1 (один) слип, тогда если значение настройки countPaymentProcessingSlips:

  • 0 – слипы напечатаны не будут,
  • -1 – будут напечатаны все слипы (то есть один слип, так как от процессинга получен один слип),
  • 1 – будет напечатан только один слип (так как от процессинга получен всего один слип и в настройке указано печатать 1),
  • 2 – будет напечатан один слип, несмотря на то, что указано в настройке (так как от процессинга получен всего один слип),
  • 3 – будет напечатан один слип, несмотря на то, что указано в настройке (так как от процессинга получен всего один слип),
  • 4 – будет напечатан один слип, несмотря на то, что указано в настройке (так как от процессинга получен всего один слип).
Максимальное количество печатаемых слипов процессинга

По умолчанию -1

Пример настройки
[Check]
...
; максимальное количество печатаемых слипов процессинга, по-умолчанию -1
; при значении -1 печатаются все слипы, при значении 0 слипы не печатаются
countPaymentProcessingSlips = 0
...

Запись слипов в БД

Разные банковские процессинги печатают отличное количество слипов с одинаковым или разным содержанием. В связи с этим предусмотрена возможность сохранять только первый слип (для тех процессингов, у которых слипы одинаковые) или сохранять все слипы (для процессингов, у которых слип для покупателя и продавца отличается). Запись слипов производится в БД Documents в таблицу Moneyitem в поле slip.

Количество сохраняемых слипов определяется параметром saveFirstPaymentProcessingSlip в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Check].

  • при значении true (значение по умолчанию) в БД записывается только первый слип,
  • при значении false в БД записываются все слипы, присылаемые банковским процессингом.
НаименованиеТип данныхВозможные значенияОписаниеПримечания

saveFirstPaymentProcessingSlip

логический
  • true
  • false
Настройка количества слипов, сохраняемых в БДПо умолчанию true
Пример настройки
[Check]
...
; сохранять в БД только первый слип процессинга
; при значении true сохраняется только первый слип, при значении false все слипы.
; если в БД пишутся все слипы, то между ними пишется разделитель "\n@\n" для последующей выборки.
; по умолчанию true
;saveFirstPaymentProcessingSlip = true

При необходимости печати всех банковских слипов в конце смены на основании данных продаж может быть создан отчет.

Пример

Пусть банковский процессинг присылает 2 слипа: первый – для покупателя, второй – для магазина. При печати чеков с целью сохранения времени производится печать только слипов для покупателя. Для внутренней отчетности магазина необходимо напечатать все слипы банка.

Для этого в главном меню необходимо настроить пункт для печати отчета с действием COMMAND_OPERATION с параметром url и значением report://slip2?out=print&shift=current, а также установить параметр roles для разграничения прав по ролям.

Шаблон отчета необходимо разместить в директории /linuxcash/cash/reports. Пример отчета можно скачать здесь.

Оплата с отказом

Начиная с версии 4.6.210  реализована возможность печатать слипы с отказом оплаты при значении 0 параметра countPaymentProcessingSlips

При оплате чека банковской картой могут возникнуть ситуации, когда оплата не проходит. В такой ситуации возможна печать слипа с отказом оплаты для клиента. Печать задается параметром printFailedPaymentProcessingSlips в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Check]:

  • при значении true, если во время оплаты чека возникла ошибка, то будет напечатан слип с отказом,
  • при значении false печать слипа с отказом не осуществляется.
НаименованиеТип данныхВозможные значенияОписаниеПримечания

printFailedPaymentProcessingSlips

логический
  • true
  • false
Печатать слипы с отказомПо умолчанию false
Пример настройки
[Check]
...
; Печатать слипы с отказом
; По умолчанию false
;printFailedPaymentProcessingSlips = false

При получении отказа оплаты данные слипа сохраняются в БД Documents в таблицу Failedmoneyitem.

При печати копии чека, в котором была оплата с отказом, также будет напечатан слип с отказом (при включенной настройке printFailedPaymentProcessingSlips).

Отмена оплаты

Отмена оплаты выполняется в обратном порядке относительно добавления. Сначала удаляется последняя оплата, затем – предпоследняя и так далее.
  1. При отмене оплаты автоматически выполняется обращение к платежной системе со всеми параметрами оплаты.
  2. Запрос обрабатывается банком, результат возвращается кассовой программе.
  3. Печатается квитанция об отмене оплаты.
  4. Оплата удаляется из чека, только если запрос одобрен банком.

Сверка итогов с банком

Сверка итогов выполняется при завершении смены на кассе и предназначена для подтверждения выполненных операций и сравнения данных, которые получены банком с данными кассовой программы.

  1. Кассовая программа инициирует операцию сверки итогов.
  2. Запрос отправляется на сервер банка.
  3. После завершения процесса печатается отчет о выполненных операциях.

Для проведения сверки итогов с банком в утилите администрирования Yuki на пункт меню необходимо настроить команду COMMAND_VERIFYTOTAL.

Возможность игнорирования ошибок при сверке итогов задается параметром ignoreErrors:

  • true – ошибки будут игнорироваться,
  • false – на экран будут выведены сообщения об ошибках, по умолчанию.

Код валюты, по которому будет производиться сверка итогов с банком, задается параметром valutcode.

Если параметры для действия "Сверка итогов по безналу" не указаны, то сверка итогов выполняется для всех настроенных процессингов до первой ошибки.

Использование одного пин-пада для нескольких организаций

Использование одного пин-пада для нескольких организаций необходимо в случаях, когда реализация товаров и услуг выполняется разными организациями-продавцами. 

Оплата на несколько юр.лиц

Для проведения расчета по нескольким юридическим лицам (отделам) через один пин-пад необходимо:

  1. Наличие пин-пада с поддержкой оплаты на несколько отделов (юридических лиц).
  2. Настроить соотнесение отделов на пин-паде и в кассовой программе в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [HW.PINPAD.DepartMapping] (см. Соотнесение отделов).

  3. Активировать настройку разбивки платежа по нескольким юридическим лицам через один пин-пад.

Расчет по нескольким юридическим лицам через один пин-пад регламентируется параметром splitPaymentToMerchants в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Check].

  • При значении параметра true осуществляется разбивка платежа по нескольким юридическим лицам. В БД Documents в таблице Moneyitem создается количество записей, равное количеству оплат с указанием merchantId для каждого отдела (юридического лица). Суммы платежей равны стоимости товаров в соответствии с указанными в товарах отделами.
  • При значении параметра false оплата по безналу через пин-пад проводится единым платежом без разбивки на отделы (юридические лица). В БД Documents в таблице Moneyitem будет произведена одна запись по платежу, в поле merchantId указывается значение NULL.
НаименованиеТип данныхВозможные значенияОписаниеПримечания

splitPaymentToMerchants

логический
  • true
  • false

Разбивать платеж по безналичному расчету по нескольким юридическим лицам

По умолчанию false
Пример настройки
[Check]
;
; Настройки чека
;
...
; Разбивать платеж по безналичному расчету по нескольким юридическим лицам
; По умолчанию – false
; splitPaymentToMerchants = false

Если данная настройка включена, то при оплате по безналичному расчету в одном чеке товаров из разных отделов, в процессинг отправляется единый запрос, содержащий несколько транзакций. У каждой транзакции указывается соответствующий merchantid. При оплате по безналу на пин-паде необходимо будет осуществить ввод пин-кода карты несколько раз, в соответствии с количеством транзакций в запросе.

Частный случай

Если в чеке присутствует несколько товаров из разных отделов и для одного из отделов сумма оплаты равна 0, например, на товар предоставляется скидка 100%, то оплачивается только ненулевой товар, независимо от порядка добавления в чек.

Соотнесение отделов на Pinpad и в кассе

Соотнесение отделов на пин-паде и в кассовом ПО Artix производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [HW.PINPAD.DepartMapping]. При оплате по безналу для каждого товара проверяется присвоенный ему отдел и оплата производится на юридическое лицо, заданное в указанной секции. 

Соответствие банковских и логических отделов задается в виде пар: <Номер отдела(код юридического лица) на PinPad> = <Номер отдела в кассе>, например, 1 = 3,4. Каждому банковскому отделу (юридическому лицу) может соответствовать один или несколько отделов в кассовой программе. 

Пример настройки
;[HW.PINPAD.DepartMapping]
;
; Соотнесение отделов(кодов юридических лиц) на PinPad и отделов в кассе
; <Номер отдела(код юридического лица) на PinPad> = <Номер отдела в кассе>
;
; соотнесение отделов
; на 1(первый) отдел в PinPad производится оплата из 3(третьего), 4(четвертого) отдела на кассе
;1=3,4

При подключении нескольких пин-падов с несколькими юридическими лицами требуется настроить соотнесение отделов для каждого пин-пада в секциях [HW.PINPAD.<Код валюты PinPad>.DepartMapping] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.

Чтобы оплата товаров из отделов 1 и 2 была осуществлена на первое юридическое лицо выбранного пин-пада, а оплата товаров из отдела 3 на второе юридическое лицо выбранного пин-пада, необходимо задать следующие настройки:

Пример настройки
[HW.PINPAD.1.DepartMapping]
1 = 1,2
2 = 3

[HW.PINPAD.2.DepartMapping]
1 = 1,2
2 = 3

Если для пин-пада не настроен ни один отдел, то на экран будет выведена ошибка "Невозможна оплата валютой: <название валюты>".

Если для пин-пада настроена только часть отделов, то на экран будет выведено предупреждение "Не настроена оплата на юридическое лицо для следующих отделов: <список отделов>. Сумма уменьшена до: <сумма для оплаты валютой>".

Если для пин-пада не указана отдельная секция, то соотнесение отделов для всех подключенных пин-падов будут применены из секции [HW.PINPAD.DepartMapping].

Печать слипов на разных ФР 

Начиная с версии 4.6.103 в кассовом ПО Artix реализована возможность печати слипов на разных фискальных регистраторах для различных юридических лиц. 

При оплате на несколько юридических лиц можно настроить печать слипов в чеке продажи на соответствующих юр. лицам фискальных регистраторах, настраивается это в файле шаблона чека продажи sale.xml, который находится в /linuxcash/cash/reports.

За настройку печати слипа в чеке продажи отвечает строка (по умолчанию – слипы печатаются от всех юридических лиц в каждом из чеков продажи):

<select query="SELECT slip FROM moneyitem WHERE documentid = $document.id$ and slip is not null and slip != ''">

Для печати слипа в sale.xml на соответствующем ФР необходимо изменить запрос выборки слипа на:

<select query="SELECT slip FROM moneyitem WHERE documentid = $document.id$ and slip is not null and slip != ''and frnum = $fr.num$ ">

, где frnum – номер ФР, на котором будет напечатан слип.

Более подробно о настройке шаблонов можно прочитать в статье Описание шаблона <report>.

После выполнения вышеописанных шагов, соответствующий отделу и юридическому лицу слип будет печататься на заданном ему ФР:

Пример
Продажа товаров производится от двух юридических лиц. При оплате безналичным платежом слипы, которые относятся к товарам первого отдела/юридического лица печатаются на первом ФР, слипы, относящиеся к товарам второго отдела/юридического лица – на втором. Также напечатается по одному слипу для различных юр.лиц внутри каждого из чеков продажи.

Автоматическое закрытие чека при оплате безналичным расчетом

Начиная с версии 4.6.107 реализовано автоматическое закрытие чека, если последняя оплата является безналичной.

За возможность автоматического закрытия чека отвечает параметр autoCloseCashless в файле конфигурации /linuxcash/cash/conf/ncash.ini в секции [Check].

  • При значении параметра true чек закрывается автоматически в случае оплаты:
    • полностью безналичным расчетом,
    • частичным безналичным расчетом, при условии, что последняя оплата была безналичной.
  • При значении параметра false после безналичной оплаты чек необходимо закрывать вручную.

Параметр autoCloseCashless используется только в кассах типа POS. На кассе-трансформере при переключении в режим SCO параметр autoCloseCashless должен быть выключен в секции [Check] файла /linuxcash/cash/conf/ncash.ini.d/sst-sco/sstsco.ini.

Наименование
Тип данных
Возможные значения
Описание
Примечания
autoCloseCashlessлогический
  • true
  • false
Автоматическое закрытие чека, если последняя оплата является безналичнойПо умолчанию false
Пример настройки
[Check]
...
; Автоматическое закрытие чека, если последняя оплата является безналичной
; По умолчанию false
; autoCloseCashless = false
...

Выполнение служебных операций

Для оплаты платежными картами достаточно выполнения операций оплаты и сверки итогов. Отдельные платежные системы предоставляют возможность выполнения дополнительных служебных операций, таких как печать отчетов. Информация для печати отчетов предоставляется банком и включает в себя информацию об операциях по безналичному расчету, произведенных с момента предыдущей инкассации до печати отчета.

Для печати отчетов по безналу в утилите администрирования Yuki на пункт меню необходимо настроить команду COMMAND_EMV_PRINTREPORT с параметром valutcode с указанием кода валюты, по которой необходимо выполнить печать.

  • No labels