Кассовый эквайринг Сбербанк
Посмотрите и покажите кассирам видео
Первичную настройку интеграции со сбером должны выполнять специалисты Сбербанка!
Касса напрямую не взаимодействует с пин-падом, всё общение производится через промежуточный софт Сбербанка: sbrf.dll
или pilot_nt.dll
- это библиотека, реализующая основные запросы к пин-паду:
- покупка (оплата)
- отмена транзакции
- возврат
- etc.
Если коротко, то Касса запрашивает у sbrf.dll
или pilot_nt.dll
проведение оплаты на заданную сумму, далее библиотека выполняет все необходимые действия с пин-падом и возвращает программе результат операции (в виде числового кода). Расшифровку числовых кодов нужно запрашивать у Сбербанка.
Настройки эквайринга со стороны Сбера
Ниже приведены рекомендуемые настройки, которые должны быть прописаны со стороны Сбера
Запросите со стороны Сбера следующие настройки:
- Укажите специалисту Сбербанка что терминал должен формировать один слип! В настройках процессинга же в админке Лайма для Сбербанка укажите число копий слипа- два
- Отключить требование ввода RRN при возврате
- Разрешить проведение отмены оплаты без чтения карты
Настройка
После установки и настройки sbrf.dll
или pilot_nt.dll
лежит где-то на диске C (C:\SBFR\
, C:\sc252
и т.п. где конкретно должен сказать специалист Сбера). Если всё настроено и «работает» то так же в этой папке должна быть программа loadparm.exe
- если при запуске она показывает окошечко, значит связь с пин-падом есть, иначе - нет.
Бывает что настройка выполнена не полностью, в этом случае придется что-то делать руками.
При подключении по USB: Запрет отключения устройства для экономии электропитания
pinpad.ini
pinpad.ini
- файл с настройками связи с пин-падом:
- ComPort - номер COM порта по которому подключен пин-пад. Обычно физически пин-пад подключен к компьютеру через USB, при этом устройство встает как виртуальный ком порт. Данная настройка должна совпадать с номером порта в системе. Если вы не можете определить какой из виртуальных портов пин-пад - выключите его, один из портов должен пропасть, потом включите, он снова должен появиться, используйте его номер для настройки
- ShowScreens - отвечает за то показывать ли диалоговое окно пин-пада при проведении операций. 1 - показывать, 0 - не показывать. Для касс рекомендуется показывать, т.е. 1
- PinpadLog - вести ли лог обмена с пин-падом. 0 - не вести, 1 - вести.
Регистрация sbrf.dll
Для того, что бы касса могла использовать sbrf.dll
ее необходимо зарегистрировать в системе! Это, по идее, должны так же делать специалисты Сбербанка, но они этого не делают… обычно. В любом случае повторная регистрация не навредит:
Настройки для pilot_nt.dll
Если используем pilot_nt.dll
необходимо на каждом рабочем месте настроить переменную среды SB_PILOT_NT_PATH
и указать в ней папку в которую установлена pilot_nt.dll
(после настройки кассовое приложение необходимо полностью перезапустить, если до момента настройки оно было запущено, в случае автокассы необходимо перезапустить службу Jade.Cashdesk.Service
).
Для настройки параметра нажмите «Пуск» и начните вводить «переменных среды» Или нажать клавиши Win+R на клавиатуре, ввести sysdm.cpl и нажать Enter.
Запустите приложение, нажмите «Переменные среды», в группе «Системные переменные» нажмите «Создать…»
В имени переменной укажите SB_PILOT_NT_PATH
, в значении папку с pilot_nt.dll
:
Процедура оплаты
Оплата производится с поддержкой аварийной отмены, т.е. при проведении платежа он переводится в «неподтвержденное» состояние, подтверждается платеж только после печати чека. В иных случаях операция буедт отменена и деньги вернутся на счет клиенту. Даже если программа/компьютер на мертво зависли, или вырубилось электричество, и т.п. - деньги будут возвращены при сверке итогов в конце дня.
Проблемы
В случае если при оплате/возврате возникает ошибка «Нет связи с пин-падом», или «Ошибка номер такой-то, смотрите подробности в таблице ошибок» - это означает что sbrf.dll
- вернула программе соответствующий код ошибки и программа считает операцию не выполненной.
Диагностические логи
В случае проблем для диагностики нужно сообщить и прислать:
- Дату, время, сумму и тип операции (покупка или возврат)
- Предоставить читаемые сканы любых отпечатанных документов (чеки слипы и т.п.)
- Заархивировать и прислать папку с логами и настройками кассы
C:\ProgramData\Lime-Soft\Jade.Cashdesk
- Прислать файл с логами Сбербанка:
sbkernel[yymm].log
(где: yy - две последних цифры года, mm - номер месяца, скажем логи за январь 2022 года будут называтьсяsbkernel2201.log
). Файлы логов хранятся в папке, рядом сsbrf.dll
(обычно что-то типаC:\SBFR\
,C:\sc252
,C:\sc525
)
Потеря связи с пин падом
При потерях связи с пин-падом:
- При подключении через USB проверьте, что устройству запрещено выключаться в целях экономии электроэнергии
- Включите ведение логов обмена с пин-падом: в
pinpad.ini
установите PinpadLog=0 - Фиксируйте время события
- Предоставьте специалистам Сбербанка и Лайма логи и времена событий (логи - все txt и log файлы из папки с библиотеками сбербанка)
Журнал операций
Эквайринг сбербанка поддерживает возможность просмотра журнала операций и отмены оных. Отмена транзакций протоколируется и выводится в специальном отчёте: Отмены транзакций эквайринга
Пример разбора лога sbkernel[yymm].log
sbkernel[yymm].log - лог операций библиотеки sbrf.dll
за yy - год, mm - месяц. Ведется библиотекой в случае установки параметра PinpadLog=1
в pinpad.ini
.
Ниже мы разберем две оплаты - успешную и сбойную. В логе красным приведены комментарии, некоторые комментарии приводятся единожды, при дальнейшем чтении лога следует держать их в голове, для понимания происходящего.
Пример успешной операции
12.12 18:47:41 SBRF: (PID 3400, thread 0x000019F8) Clear Начало обслуживания
12.12 18:47:41 SBRF: (PID 3400, thread 0x000019F8) SParam: Amount=36000 Сумма платежа в копейках
12.12 18:47:41 SBRF: (PID 3400, thread 0x000019F8) NFun: 4000 Вызов ф-ии оплаты
12.12 18:47:41 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:41 GATE: unlock:'00001788'
12.12 18:47:41 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:41 SBKRNL: Command = 4000, Amount = 360.00
12.12 18:47:41 SBKRNL: Open com 6 Здесь sbrf.dll по всей видимости начинает общение с пинпадом, т.к. тут открытие порта
12.12 18:47:52 SBKRNL: Close com 6 А здесь оно закончило общение (т.к. порт закрывается), ниже есть такие же моменты, отдельно я на них акцентироваться не буду
12.12 18:47:52 SBKRNL: Result = 0, Amount = 360.00, Card = '3886' Все прошло успешно (Result = 0)
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) Returns: 0 Здесь уже результат передается к нам в программу
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) NFun: 6003 Мы вызываем ф-ю 6003 (перевод платежа в неподтвержденное состояние) что бы если вдруг что, то при сверке итогов денежки человеку вернулись
12.12 18:47:52 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:52 SBKRNL: Command = 6003, Amount = 360.00, AuthCode = 278847
12.12 18:47:52 SBKRNL: Open com 6
12.12 18:47:52 SBKRNL: Close com 6
12.12 18:47:52 SBKRNL: Result = 0
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 GATE: lock:'00001788' 'UPOSWINMUTEX2'
12.12 18:47:52 GATE: unlock:'00001788'
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) Returns: 0 Выше опять таки работа с терминалом, а тут возврат результата нам
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) GParamString: RRN=934688849493
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) GParamString: Cheque1251 size=1284
12.12 18:47:52 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) Clear Здесь мы снова подключаемся к sbrf.dll после печати чека что бы передать подтверждение платежа (чуть ниже, ф-я 6001)
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) SParam: RRN=934688849493
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) SParam: Amount=36000
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) NFun: 6001
12.12 18:47:58 GATE: lock:'0000179C' 'UPOSWINMUTEX2'
12.12 18:47:58 GATE: unlock:'0000179C'
12.12 18:47:58 GATE: lock:'0000179C' 'UPOSWINMUTEX2'
12.12 18:47:58 SBKRNL: Command = 6001, Amount = 360.00
12.12 18:47:58 SBKRNL: Open com 6
12.12 18:47:58 SBKRNL: Close com 6
12.12 18:47:58 SBKRNL: Result = 0
12.12 18:47:58 GATE: unlock:'0000179C'
12.12 18:47:58 GATE: lock:'0000179C' 'UPOSWINMUTEX2'
12.12 18:47:58 GATE: unlock:'0000179C'
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) Returns: 0 sbrf.dll пообщалась с терминалом и вернула нам результат что всё хорошо
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) GParamString: RRN=934688849493
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:47:58 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:47:58 GATE: lock:'00000F2C' 'UPOSWINMUTEX2'
12.12 18:47:58 GATE: unlock:'00000F2C'
Описание
Если коротко то это сценарий оплаты с аварийной отменой, по сути мы даем в sbrf.dll три команды: 4000 (платеж), 6003 (перевести платеж в неподтвержденное состояние), 6001 (перевести платеж в подтвержденное состояние). Далее sbrf.dll общается с пинпадом сама, нам сообщая только результат операции (Result = 0, если не 0, то ошибка).
Пример сбойной операции
12.12 18:48:25 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:48:25 SBRF: (PID 3400, thread 0x000019F8) SParam: Amount=36000
12.12 18:48:25 SBRF: (PID 3400, thread 0x000019F8) NFun: 4000 Шлем оплату, после этого работает уже sbrf.dll
12.12 18:48:25 GATE: lock:'0000109C' 'UPOSWINMUTEX2'
12.12 18:48:25 GATE: unlock:'0000109C'
12.12 18:48:25 GATE: lock:'0000109C' 'UPOSWINMUTEX2'
12.12 18:48:25 SBKRNL: Command = 4000, Amount = 360.00
12.12 18:48:25 SBKRNL: Open com 6 Видим открытие порта, но дальше какой-то мрак, в логах нет ни закрытия порта, ни возвращения нам результата, ничего…
12.12 18:48:32 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:48:32 GATE: lock:'000011D8' 'UPOSWINMUTEX2'
12.12 18:48:32 GATE: unlock:'000011D8'
12.12 18:49:03 SBRF: (PID 3400, thread 0x000019F8) Clear
12.12 18:49:03 GATE: lock:'00001588' 'UPOSWINMUTEX2'
12.12 18:49:03 GATE: unlock:'00001588'
12.12 18:49:04 SBRF: (PID 3400, thread 0x000019F8) NFun: 6003 Тем не менее результат нам вернулся при чем был «успешным», т.к. здесь мы вызываем ф-ю 6003…
12.12 18:49:04 GATE: lock:'00000F34' 'UPOSWINMUTEX2'
12.12 18:49:04 SBKRNL: Command = 6003, Amount = 360.00
12.12 18:49:04 SBKRNL: Failed to open device \\.\COM6, err 5 И вот тут пошли проблемы с портом, sbrd.dll пытается его открыть, но не выходит (код ошибки 5, предположу что это код ошибки Windows, означает «доступ запрещен», т.е. 6 ком порт всё ещё открыт или не доступен по иным причинам).
12.12 18:49:04 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:05 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:05 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:05 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:06 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:06 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:07 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:07 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:07 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:08 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:08 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:09 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:09 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:09 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:10 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:10 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:11 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:11 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:12 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:12 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:12 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:13 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:13 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:14 SBKRNL: Failed to open device \\.\COM6, err 5
12.12 18:49:14 SBKRNL: Result = 99 Ну и под конец нам дают ошибку 99 — нет связи с пинпадом.
12.12 18:49:14 GATE: unlock:'00000F34'
Описание
В такой ситуации программа будет считать что операция не выполнена (даже если пинпад, на самом деле, её провёл). По сути данную проблему должны решать специалисты Сбербанка.