Sb pilot linux команды

Обновлено: 06.07.2024

- Данные в статье предоставлены техническими специалистами ОАО "Сбербанк".

- Для успешной связки кассового ПО RK6 с банковскими терминалами ОАО "Сбербанк" необходимо иметь представление о том, как реализован обмен данными между кассой RK6, банковским терминалом и процессинговым центром Сбербанка при проведении транзакции по банковской карте. Используется следующее оборудование и программные модули:

  • DOS-RKCLIENT (версия 6.102 и выше) - кассовая программа (UCS). На POS-терминале (под управлением OS DOS, например DrDOS v7.03).
  • Терминал авторизации банковских карт - VeriFone VX 820 с прошивкой от Сбербанк. Подключается на свободный COM-порт (RS-232) кассового POS-терминала. Предоставляется банком.
  • SMPAUTH.DLL - драйвер (производства UCS) для взаимодействия кассовой программы с модулем авторизации SB_PILOT.EXE. Копируется в рабочий каталог кассовой программы (C:\RKCLIENT) и настраивается в C:\RKCLIENT\RKEEPER6.INI.
  • Модуль авторизации для взимодействия с пинпадом - SB_PILOT.EXE. Устанавливается на POS-терминал паралельно с кассовой программой. Через данный модуль может быть настроена связь с процессинговым центром банка, если на POS-терминале настроен прямой выход в интернет. Иначе, для связи с процессинговым центром будет использоваться дополнительный сервис - PSERVER.EXE. Предоставляется и настраивается техническими специалистами банка.
  • Дополнительный модуль для взаимодействия с процессинговым центром - PSERVER.EXE. Используется по необходимости, например, если на кассовом POS-терминале нет прямого выхода в интернет. Устанавливается на дополнительном ПК (OS Windows) находящимся в общей ЛВС с кассой и имеющим выход в интернет. Предоставляется и настраивается техническими специалистами банка.

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

- Ответ от центра происходит соответсвенно по цепочке в обратном порядке.

Интегрируемый программный модуль sb_pilot.exe используется совместно с программным обеспечением контрольно-кассовых машин для проведения платежей по банковским картам. Продукт предназначен для работы под управлением MS-DOS и обычно устанавливается в отдельный каталог системного диска ККМ. Например, - C:\UPOS.

Требования к оборудованию

  • IBM-совместимый компьютер на базе процессора не ниже 80286 (POS-терминал).
  • Объем оперативной памяти не менее 1 МБ.
  • Объем свободного дискового пространства не менее 5 МБ.
  • Наличие свободного порта RS-232 для подключения ПИН-клавиатуры VeriFone SC5000 или аналогичной (предоставляется Сбербанком бесплатно).
  • Сетевая карта Ethernet.

Требования к программному обеспечению

  • Версия MS-DOS не ниже 3.01.
  • Объем свободной оперативной памяти не менее 230 K.
  • Наличие русификатора клавиатуры/дисплея.
  • Наличие сетевой оболочки FTP Software PCTCP, либо Novell TCPIP.

Выполняемые функции

Платежный терминал поддерживает две группы функций:

  • Первая группа - предназначена для проведения платежей по картам.
  • Вторая группа - Это служебные функции.

Для проведеня платежей по картам поддерживаются следующие функции:

  • Оплата покупки (услуги).
  • Возврат покупки.

Служебные функции включают в себя:

Состав программного обеспечения

Установленное программное обеспечение имеет следующий состав файлов:

Вызов программы

Синтаксис вызова программы следующий:

- где параметр <тип операции> может принимать значения:

Операция

тип

Назначение

1

Оплата

3

Возврат покупки

7

Сверка итогов

9

Печать контрольной ленты (без сверки итогов)

11

12

Повтор последнего документа

14

Загрузка TLV-файла

19

Загрузка TLV-файла с предварительным удалением старых настроек

20

Чтение номера карты и хеш-значения от него

21

Удаленная загрузка обновлений

Параметр <сумма операции> - указывается в копейках;

Параметр <тип карточки> - может принимать значения:

0

Определять автоматически (рекомендуется)

1

Visa, Visa Electron

2

MasterCard

3

Maestro

4

Amex

5

Diners Club

9

СБЕРКАРТ

Если, в данной операции сумма не используется, она должна быть равной "0". Если в данной операции тип карточки не используется, он должен быть равен "0".

Параметр <данные 2-й дорожки> - считанный с магнитной карточки Track2, без заголовочных и хвостовых символов. Номер карты отделяется знаком ‘=‘.

Как правило, этот параметр не указывается при вызове программы. В этом случае программа сама выдаст оператору запрос на ввод карточки. При этом карта может быть считана через устройство VeriFone SC5000 (VX 820), либо через встроенный клавиатурный ридер ККМ.

Параметр <дополнительные параметры> - поддерживаются следующие ключи:

Передача результатов работы программы

Если код результата равен "0", то для платежной операции последующие строки файла e содержат параметры совершенной операции. Например:

Образец содержания файла

Номер карты (маскированный)

Срок действия карты

Внутренний номер операции

Название типа карты

Признак карты Сбербанка (1)

Дата-время операции (ГГГГММДДччммсс)

Ссылочный номер операции (может быть пустым)

Хеш от номера карты

Второй файл с именем "p" (имя может быть изменено) является образом чека для вывода на принтер. Вызывающая программа должна самостоятельно передать этот файл на принтер. Файл чека формируется только в том случае, если код результата равен 0. Имя файла чека устанавливается в конфигурационном файле программы и обычно имеет значение "p". В исключительных случаях можно назначить файлу чека имя "prn" — тогда он будет печататься сразу, до завершения работы программы.

Конфигурация и настройка SB_PILOT.EXE

Настроечные параметры программы необходимо подготовить в виде TLV-файла с помощью программы TlvEdit, работающей под OS Windows. Настройка параметров описана отдельно.

Сформированный TLV-файл необходимо поместить в каталог с программой sb_pilot. После этого необходимо запустить программу с параметром 11:

И в открывшемся меню выбрать пункт «Служебные операции \ Настройки \ Техобслуживание \ Пароль 878787 \ Загрузка параметров». При наличии в каталоге нескольких TLV-файлов программа предложит выбрать нужный.

В случае, если после этого возникает необходимость изменить значение какого-либо параметра, для этого можно воспользоваться программой updoscf.exe. Эта программа редактирует не сам TLV-файл, а импортированные из него параметры (файлы *.d).

В большинстве случаев в ЛВС ТСТ используются следующие сетевые протоколы для организации обмена ПО ККМ, работающего под управлением MS DOS, с сервером БД ТСТ

  • MicroSoft network client for DOS (TCP/IP, NetBEUI, IPX)
  • Novell IPX/SPX network client for DOS
  • Novell IP network client for DOS
  • PC/TCP client for DOS (IP на базе пакетного драйвера

Программа через которую происходит взаимодействие с терминалом SB_PILOT.EXE может работать со всеми перечисленными протоколами напрямую, или с использованием протокола более высокого уровня (netbios, named pipes). В документе в качестве примера будут описываться настройки авторизационного модуля для DOS из состава «Универсального ПО POS-терминалов Сбербанка России».

Описание настройки авторизационного модуля на работу поверх MicroSoft network client for DOS.

Сетевые протоколы от компании MicroSoft особенны тем, что напрямую с ними приложения не работают – для передачи данных между прикладными процессами приходиться использовать протоколы более высокого уровня (netbios, named pipes). Обмен может проводиться через общие папки, созданные при помощи средств сетевого клиента, или напрямую, между прикладными программами с использованием описанных в документации функций для работы с NetBIOS (основная система сетевого ввода-вывода), Named pipes (именованные каналы).

Для более четкого понимания настроек MicroSoft network client for DOS рассмотрим несколько файлов из состава сетевого клиента: protocol.ini и system.ini (обычно расположены на POS-терминале в каталоге C:\NET или С:\NETIP)

Конфигурационный файл - PROTOCOL.INI

Конфигурационный файл - SYSTEM.INI

При запуске сетевого клиента в основной конфигурации т.е. в system.ini:

Будет невозможен вход в домен (что практически никогда и не используется для работы POS-терминала со своим сервером) и работа по "named pipes", но при этом экономится около 80 Кбайт основной памяти, что немаловажно т.к. использование ресурсов в ОС DOS сильно ограничено.

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

preferredredir=basic или full

autostart=basic или full

preferredredir=basic или full

autostart=basic или full

С учетом представленных файлов настройки сетевого клиента (system.ini, protocol.ini) выполняются коммуникационные настройки авторизационного модуля (SB_PILOT.EXE) на работу по NetBIOS:

Работа авторизационного модуля (SB_PILOT.EXE) через NETBIOS


В случае, если параметр «Номер LANA для NetBIOS» не указан, то по умолчанию он приравнивается "0". Если при указанных выше параметрах сетевого клиента изменить номер LANA с 0 на 2, то работа по NetBIOS будет происходить поверх NetBEUI (на компьютере с ПО PSERVER должен быть установлен протокол NetBEUI с включенной поддержкой NetBIOS). Номер LANA, равный 0, указывает на работу поверх TCP/IP (на компьютере с PSERVER должен быть установлен и настроен протокол TCP/IP с включенной поддержкой NetBIOS).

Коммуникационная прогарамма PSERVER для приема запросов от авторизационного модуля по протоколу NetBIOS должна быть настроена, например, следующим образом:


Настройки указывают PSERVER-у на то, чтобы он при старте зарегистрировал в сети NetBIOS-имена PSRV12 и PSRV13, через которые пойдет связь авторизационного модуля при обслуживании международных карт и карт Сберкарт соответственно.

Необходимо отметить, если при всех прочих правильных настройках невозможно установить соединение по NetBIOS c PServer, то в таком случае:

  • В секции [TCPIP] файла PROTOCOL.INI сетевого клиента на POS-терминале установите параметр DefaultGateway0 равным IP-адресу того ПК на котором запущен и работает сервис PSERVER.EXE, перезагрузите POS-терминал и проверьте связь между приложениями SB_PILOT.EXE и PSERVER.EXE. Если выполненых действий оказалось недостаточно, перейдите к п.2.
  • Укажите в настройках сетевых карт на POS-терминале и ПК с PSERVER скорость обмена в сети. Например:

POS-терминал → c:\net\protocol.ini → [Имя адаптера] → Speed = 10

ПК с Pserver → "Свойства подключения по ЛВС" → свойства сетевого адаптера (к примеру):


Примечание: Также, в случае, если PSERVER запущен на компьютере, работающем под управлением MS Windows NT 4.0 Server/WorkStation, то наблюдается следующая коллизия: авторизационный модуль (SB_PILOT.EXE) успешно связывается по протоколу NetBIOS с PSERVER 18 раз, после чего связь установить невозможно без перезапуска ОС POS-терминала. Причина неизвестна.

Работа авторизационного модуля (SB_PILOT.EXE) через Named Pipes

Для работы в сети MicroSoft по протоколу named pipes сетевой клиент должен запускаться в расширенной конфигурации, т.е. в system.ini:

Приведем коммуникационные настройки авторизационного модуля на работу по named pipes:


В настройках терминала необходимо указать «Имя сервера для связи через Named Pipes» - сетевое имя компьютера, на котором работает PSERVER. Далее, PSERVER нужно настроить на прием запросов по Named Pipes. К примеру:


PSERVER, работающий на ПК с сетевым имененем (ServerNetName), при такой настройке зарегистрирует в сети именованные каналы \\ServerNetName\PIPE\PSRV12 и \\ServerNetName\PIPE\PSRV13, по которым и будут работать терминалы при обслуживании международных карт и карт Сберкарт.

Работа авторизационного модуля (SB_PILOT.EXE) поверх Novell IPX/SPX network client for DOS

Приведем файл настройки Novell IPX/SPX network client for DOS (обычно расположен в каталоге POS-терминала C:\NET)

Конфигурационный файл - NET.CFG

Авторизационный модуль должен быть настроен следующим образом:


Порт хоста 33001 в настройках авторизационного модуля соответствует шестнадцатиричному 0x80E9, 33002 – 0x80EA (номера сокетов, которые будут указаны в настройках PSERVER для приема запросов по SPX).

Параметр «MAC-адрес сервера для связи по IPX» - mac-адрес сетевой карты компьютера с PSERVER, на которой ожидаем запросы от POS-терминала (для уточнения mac-адреса из командной строки дайте команду ipconfig.exe - all).

Примечание: для приема запросов по SPX на компьютере с Pserver потребуется установить NWLink IPX/SPX-совместимый протокол, при установке которого обычно автоматически включается и поддержка NetBIOS поверх транспорта IPX/SPX.

Для связи по IPX/SPX может иметь значение тип сетевого кадра по умолчанию, используемый сетевым клиентом на POS-терминале. В настройках NWLink IPX/SPX-совместимого протокола на компьютере с PSERVER обычно стоит автоопределение типа сетевого кадра. Возможны ситуации, когда для успешной работы авторизационного модуля (SB_PILOT.EXE) придется подобрать тип сетевого кадра по-умолчанию в сетевом клиенте на POS-терминале. При этом нужно быть крайне аккуратным, т.к. изменение типа сетевого кадра по-умолчанию может привести к проблемам связи между POS и сервером БД ТСТ. В настройках NWLink IPX/SPX-совместимого протокола на ПК с PSERVER тип кадра должен определяться или автоматически, или быть эквивалентным типу сетевого кадра по-умолчанию, установленному в настройках сетевого клиента на POS-терминале.

Настройки PSERVER могут быть такими:


  • В случае, если связь по IPX/SPX с PSERVER установить не удается можно попытаться использовать протокол NetBIOS поверх Novell IPX/SPX (на машине с PSERVER должна быть включена поддержка NetBIOS поверх NWLink IPX/SPX-совместимого протокола). Для этого в файле autoexec.bat на POS-терминале после запуска IPX/SPX-клиента необходимо прописать запуск программы netbios.exe (обычно поставлялся компанией Novell вместе с IPX/SPX-клиентом, в коде данного файла есть строчка Novell NetBIOS Emulation Package). Авторизационный модуль и PSERVER настраиваются на работу по NetBIOS как было описано выше, параметр «Номер LANA для NetBIOS» в настройках авторизационного модуля можно не указывать, т.к. он в данном случае равен 0.
  • В случае, если в сети ТСТ на ККМ используется Novell IP network client for DOS или PC/TCP client for DOS (второй протокол обычно используют магазины, работающие на ККМ с ПО «Кристалл-УКМ» от питерской компании «Кристалл-Сервис»), разворачивать в сети магазина коммуникационную программу Pserver не обязательно. Это может потребоваться для решения сопутствующих проблем (безопасность работы из сети ТСТ через Интернет, использование единственной телефонной линии для связи с хостом, ограничение листа доступа на маршрутизаторе единственным адресом из сети магазина и т.п.)

Пример настройки авторизационного модуля для работы через с хостами обслуживания банковских карт через Интернет:


Если непосредственно с ККМ выход в Интеренет организовать нет возможности, то можно использовать PServer, настроенный на прием запросов по TCP/IP от авторизационного модуля (тогда в настройках модуля должен фигурировать IP-адрес компьютера с PServer):


А с Pserver уже можно посылать запросы через Интернет:



В состав «Универсального ПО POS-терминалов Сбербанка России» начиная с версии 10.92 входит два варанта авторизационного модуля для MS DOS - UP_DOS2.EXE и UP_DOS3.EXE. Первый предназначен для работы с ПИН-клавиатурами SC5000, Ingenico 3500. Второй может работать так же и с клавиатурами SC552. Так как UP_DOS3.EXE по размеру намного превосходит UP_DOS2.EXE, то весьма вероятно, что на ККМ может не хватить свободной основной памяти для его запуска из под ПО ККМ. В ПИН-клавиатуры должно быть загружено «Универсального ПО POS-терминалов Сбербанка России» актуальной версии.

Для работы с ПО ККМ исполняемый модуль должен быть переименован в SB_PILOT.EXE.

Важно. Для установки модуля на ККМ необходимо заранее подготовить файл с настройками (использовать tlvedit.exe) и полжить его в необходимый каталог на ККМ вместе с sb_pilot.exe. Первый запуск sb_pilot.exe без параметров позволит через соответствующее меню загрузить подготовленный файл с параметрами для данного POS-терминала. (F1 → Служебные операции → Настройки → Техническое обслуживание → Пароль → Загрузка параметров).

После успешной загрузки параметров терминал готов к работе в составе ПО ККМ, которое, кстати, так же необходимо предварительно настроить на работу с нашим модулем.

Доступ к COM-порту с ПИН-клавиатурой авторизационный модуль для DOS осуществляет не через номер com-порта, а через номер прерывания и базовый адрес. Эти реквизиты требуется предварительно уточнить.

Плагин предназначен для интеграции с терминалами сбербанка через систему/утилиты sb_pilot для приёма оплаты через банковские карты на рабочих местах кассиров.

Плагин, по большей части, работает на клиентской стороне. Взаимодействие с терминалами производится через утилиты и настройки сбербанка на компьютере, где установлен клиент биллинга (рабочее место кассира). Серверная часть плагина используется для ведения истории платежей. Работа осуществляется через обращение к утилите через командную строку. Путь до неё на текущем локальном компьютере и до файлов, которые она генерирует, прописываются в настройках. Основная конфигурация производится в файле настройки клиента биллинга (файл client[_ru_RU].properties):

sbpilot.cashcheckserver.connector= 127 . 0 . 0 . 1 : 9876

Для распечатки чека используется сервер печати cashcheck. Необходимо установить и настроить его согласно инструкции, приведённой в соответствующем разделе.

Необходим лишь сервер печати — приложение BGCashcheckServer. Сам плагин cashcheck устанавливать не нужно, если вы не собираетесь использовать его функционал.

Настройка утилиты производится сотрудниками сбербанка и в данном руководстве не рассматривается. Помимо настройки связи с банком необходимо уточнить в какие места и под каким именем сохраняются выходные файлы (см. настройку в клиенте). Также нужно попросить настроить ширину генерируемого чека в соответствии с шириной ленты в используемом вами принтере чека. Для Linux имена файлов обычно e и cheque.txt, для windows — e и p. Также есть версия утилиты, которая вместо файла e пишет лог операций в файл sbkernel.log.

Донастройка утилиты для биллинга заключается в том, чтобы вместить в один скрипт вызов утилиты с каким-то настройками окружения под каждую систему, и передать в утилиту переданные этому скрипту параметры (не менее четырёх). Скрипт должен запустить утилиту с параметрами, отобразить на экране в приличном виде, ожидать завершения утилиты, а после её завершения - закрыться (передать управление). Это распространённая ошибка: утилита корректно не запускается через этот скрипт, надо отдельно проверить запуск какой-либо командой с параметрами. Ниже приведены примеры (не стоит рассматривать их как конечные решения).

Используется консольная linux-версия утилиты. Для справки: в каталоге этой версии программы находятся файлы sb_pilot, config, upnixmn.out и прочие.

Скрипт можно написать совершенно любой под любой эмулятор терминала. Суть скрипта заключается в том, чтобы корректно отобразить на экране утилиту sb_pilot. Окно должно ожидать завершения каких-либо действий, а после завершения работы утилиты — закрываться. Также скрипт должен передавать не менее четырёх параметров утилите sb_pilot, т.е. необходимы переменные $1 $2 $3 $4 в командной строке утилиты.

В линуксе при использовании gnome-terminal скрипт dowindow.sh может иметь, например, такой вид:

export LANG =ru_RU. KOI8 - R ; gnome-terminal --disable-factory -e "/home/bill/sb-pilot/sb_pilot $1 $2 $3 $4" --hide-menubar -t "SB-Pilot" --working-directory=. --profile=sbpilot

В этом примере в профиле с названием sbpilot (см. настройки терминала) можно указать любые размеры и цвета окна терминала. Новый gnome-terminal настраивается по-другому, есть проблемы с ожиданием запущенного в нём процесса.

При использовании эмулятора терминала xterm:

Под эмулятор терминала kde не получилось написать корректный скрипт, выполняющий вышеобозначенные требования (при вызове из стороннего приложения окно закрывается сразу).

Используется консольная win32-версия (иногда она называется у сотрудников сбербанка почему-то DOS). Работа происходит через командную строку, аналогичную командной строке linux-версии. Для справки: в каталоге этой версии программы находятся файлы SB_PILOT.EXE, pinpad.ini, updoscf.exe и прочие. Некоторая настройка также необходима для указания рабочих каталогов. Файл dowindow.bat может выглядеть так:

, либо каким-то другим образом. При этом обратите внимание на корректное указание рабочего каталога утилиты, без этого она не будет корректно работать (ищет свои файлы около себя) и файлы выходные тоже потеряются (пишет тоже в рабочий каталог). Кодировка выходных файлов — cp866.

После этого не забудьте прописать в файле client.properties полные пути до файлов dowindow.bat, e, p.

Имеются данные, что конкретно эта утилита не работает корректно в 64-битной версии windows.

При установке и активации плагина в диалоге добавления платежа появляется галка "принять оплату по карте".

images/download/attachments/1607406/sbpilot-1.jpg

При попытке добавления платежа с установленной галочкой активируется диалог работы с утилитой и сама утилита.

images/download/attachments/1607406/sbpilot-2.jpg

После завершения работы утилиты успешно или же с ошибкой диалог можно закрыть.

images/download/attachments/1607406/sbpilot-3.jpg

На второй вкладке "Log" можно увидеть более подробную информацию о взаимодействии с утилитой. Если работа была завершена с ошибкой, то платёж не совершается и мы по-прежнему имеем дело с диалогом добавления платежа. Если оплата проведена успешно, то платёж совершается, диалог закрывается, в историю платежей заносится запись. В истории платежей (Плагины->SbPilot) также имеется возможность совершения дополнительных действий - отмены, повторы, некоторые отчёты итп.

images/download/attachments/1607406/sbpilot-4.jpg

Также обратите внимание на одну особенность: если пользоваться распределением средств на зависимых договорах (т.е. одним платежом инициировать занесение в разные договоры), то в логе припишется только к одному из платежей, а оплата и чек пробьётся на всю сумму изначального платежа.

Плагин предназначен для интеграции с терминалами сбербанка через систему/утилиты sb_pilot для приёма оплаты через банковские карты на рабочих местах кассиров.

Плагин, по большей части, работает на клиентской стороне. Взаимодействие с терминалами производится через утилиты и настройки сбербанка на компьютере, где установлен клиент биллинга (рабочее место кассира). Серверная часть плагина используется для ведения истории платежей. Работа осуществляется через обращение к утилите через командную строку. Путь до неё на текущем локальном компьютере и до файлов, которые она генерирует, прописываются в настройках. Основная конфигурация производится в файле настройки клиента биллинга (файл client[_ru_RU].properties):

Для распечатки чека используется сервер печати cashcheck. Необходимо установить и настроить его согласно инструкции, приведённой в соответствующем разделе.

Необходим лишь сервер печати — приложение BGCashcheckServer. Сам плагин cashcheck устанавливать не нужно, если вы не собираетесь использовать его функционал.

Настройка утилиты производится сотрудниками сбербанка и в данном руководстве не рассматривается. Помимо настройки связи с банком необходимо уточнить в какие места и под каким именем сохраняются выходные файлы (см. настройку в клиенте). Также нужно попросить настроить ширину генерируемого чека в соответствии с шириной ленты в используемом вами принтере чека. Для Linux имена файлов обычно e и cheque.txt, для windows — e и p. Также есть версия утилиты, которая вместо файла e пишет лог операций в файл sbkernel.log.

Донастройка утилиты для биллинга заключается в том, чтобы вместить в один скрипт вызов утилиты с каким-то настройками окружения под каждую систему, и передать в утилиту переданные этому скрипту параметры (не менее четырёх). Скрипт должен запустить утилиту с параметрами, отобразить на экране в приличном виде, ожидать завершения утилиты, а после её завершения - закрыться (передать управление). Это распространённая ошибка: утилита корректно не запускается через этот скрипт, надо отдельно проверить запуск какой-либо командой с параметрами. Ниже приведены примеры (не стоит рассматривать их как конечные решения).

Донастройка в Linux

Используется консольная linux-версия утилиты. Для справки: в каталоге этой версии программы находятся файлы sb_pilot, config, upnixmn.out и прочие.

Скрипт можно написать совершенно любой под любой эмулятор терминала. Суть скрипта заключается в том, чтобы корректно отобразить на экране утилиту sb_pilot. Окно должно ожидать завершения каких-либо действий, а после завершения работы утилиты — закрываться. Также скрипт должен передавать не менее четырёх параметров утилите sb_pilot, т.е. необходимы переменные $1 $2 $3 $4 в командной строке утилиты.

В линуксе при использовании gnome-terminal скрипт dowindow.sh может иметь, например, такой вид:

В этом примере в профиле с названием sbpilot (см. настройки терминала) можно указать любые размеры и цвета окна терминала. Новый gnome-terminal настраивается по-другому, есть проблемы с ожиданием запущенного в нём процесса.

При использовании эмулятора терминала xterm:

Под эмулятор терминала kde не получилось написать корректный скрипт, выполняющий вышеобозначенные требования (при вызове из стороннего приложения окно закрывается сразу).

Донастройка в Windows

Используется консольная win32-версия (иногда она называется у сотрудников сбербанка почему-то DOS). Работа происходит через командную строку, аналогичную командной строке linux-версии. Для справки: в каталоге этой версии программы находятся файлы SB_PILOT.EXE, pinpad.ini, updoscf.exe и прочие. Некоторая настройка также необходима для указания рабочих каталогов. Файл dowindow.bat может выглядеть так:

, либо каким-то другим образом. При этом обратите внимание на корректное указание рабочего каталога утилиты, без этого она не будет корректно работать (ищет свои файлы около себя) и файлы выходные тоже потеряются (пишет тоже в рабочий каталог). Кодировка выходных файлов — cp866.

После этого не забудьте прописать в файле client.properties полные пути до файлов dowindow.bat, e, p.

Имеются данные, что конкретно эта утилита не работает корректно в 64-битной версии windows.

При установке и активации плагина в диалоге добавления платежа появляется галка "принять оплату по карте".


При попытке добавления платежа с установленной галочкой активируется диалог работы с утилитой и сама утилита.


После завершения работы утилиты успешно или же с ошибкой диалог можно закрыть.


На второй вкладке "Log" можно увидеть более подробную информацию о взаимодействии с утилитой. Если работа была завершена с ошибкой, то платёж не совершается и мы по-прежнему имеем дело с диалогом добавления платежа. Если оплата проведена успешно, то платёж совершается, диалог закрывается, в историю платежей заносится запись. В истории платежей (Плагины->SbPilot) также имеется возможность совершения дополнительных действий - отмены, повторы, некоторые отчёты итп.


Также обратите внимание на одну особенность: если пользоваться распределением средств на зависимых договорах (т.е. одним платежом инициировать занесение в разные договоры), то в логе припишется только к одному из платежей, а оплата и чек пробьётся на всю сумму изначального платежа.

В случае использования tlv-файла (уже редко, где используется), необходимо в секции «Параметры для терминалов на базе РС» Установить параметры:



детальная настройка "Взаимодействие с кассой":

Устройство для печати чеков – строчная латинская буква «р» Для применения настроек tlv-файла выполнить:

Перейти в директорию с файлами банка командой:
cd /home/tc/storage/crystal-cash/banks/sberbank/linux

Запустить файл программы sb_pilot командой:

Откроется меню настройки банковского терминала.
В открывшемся меню перейдите по путит «Служебные операции -> Настройки -> Техобслуживание -> Пароль 878787 -> Загрузка параметров».
При наличии в каталоге нескольких TLV-файлов программа предложит выбрать нужный. Выберите tlv-файл, подтвердите и ожидайте завершения загрузки параметров ( После 100% необходимо дождаться приглашения командной строки! Окно загрузки на 100% будет отображаться какое-то время, после чего появиться командная строка, но окно загрузки так и останется).

Банковский терминал настроен согласно файла настройки .tlv.


В случае использования tlv-файла (уже редко, где используется) , необходимо в


детальная настройка "Взаимодействие с кассой":

Устройство для печати чеков – строчная латинская буква «р». Для применения настроек tlv-файла выполнить:

Перейти в директорию с файлами банка командой:

Запустить файл программы sb_pilot командой:

Откроется меню настройки банковского терминала.
В открывшемся меню перейдите по путит «Служебные операции -> Настройки -> Техобслуживание -> Пароль 878787 -> Загрузка параметров».
При наличии в каталоге нескольких TLV-файлов программа предложит выбрать нужный. Выберите tlv-файл, подтвердите и ожидайте завершения загрузки параметров ( После 100% необходимо дождаться приглашения командной строки! Окно загрузки на 100% будет отображаться какое-то время, после чего появиться командная строка, но окно загрузки так и останется).

НАУКА И ЖИЗНЬ

НАУКА И ЖИЗНЬ

НАУКА И ЖИЗНЬ запись закреплена

Сбербанк или туда и обратно

ГЛАВА 1. Нежданные гости

Все началось в то злополучное утро, когда Project Manager сообщил, что сроки реализации проекта должны быть быстро и решительно сокращены на месяц. Точнее говоря проект должен быть готов через 4 дня. Нет, наш PO не зверь, и ничуть не похож на сову (разве что чуть-чуть на ворона), просто так сложилось. Ну раз надо, так надо, тем более что команде (а я являюсь ведущим разработчиком команды «С») было обещано что-то вкусное. На часах и календаре был четверг, 11:00, к понедельнику проект должен быть готов.

Для начала, чем мы вообще занимаемся. Мы занимаемся автоматизацией кинотеатров — автоматическим и дистанционным управлением оборудования, автоматизацией кинопоказа, мониторингом, видеопанелями, а теперь еще и терминалами продажи билетов и бара. Конкретно последнему пункту и посвящена данная статья.

Сам проект, который нужно было завершить до понедельника представляет из себя некую прослойку между основным сервером на Scala и железным терминалом оплаты VeriFone VX 820 (на самом деле терминалов больше, но для примера возьмем только его). Понятно, что просто так проводить через него транзакции нам никто не даст, поэтому используются утилиты и библиотеки Сбербанка/Arcus и UCS. Таким образом схема работы в итоге должна быть следующей:

Внешне он выглядит вот так:

Также данная подсистема должна использоваться на стандартных кассовых машинах которые все видели в любом кинотеатре у кассиров.

Согласно внутренней традиции каждый проект нашей команды мы называем именем из древнескандинавской мифологии, для данной подсистемы было выбрано имя Gefjon — Имя богини плодородия и изобилия (неплохое название для сервера оплаты, разве нет? Ну и легенда о быках отрезающих остров идеально ложится на текущую архитектуру, отрезая работу с оборудованием от высокоуровневого языка).

Зеленым покрашены блоки, которые нам нужно было сделать, синим — те, которые нельзя поменять и которые предоставляет банк.

Так как основные проблемы возникли только с ПО от Сбербанка, то статья в целом будет посвящена подводным камням, которые мы пересчитали своей ладьей.

ГЛАВА 2. Баранье жаркое

… выглядит примерно так. Примерно так же выглядел код того прототипа, который был написан несколько месяцев назад для того, чтобы дать понять всем вышестоящим людям, что мы можем работать с банковскими приложениями.

char buf[BUF_KB * 2];
char * null;
char * grep;

Понятное дело, что для Production варианта это не годилось, поэтому нужно было по сути написать все заново.

Каждый банк, который предоставляет библиотеки для работы с терминалом обычно предоставляет два варианта подключения: через функции библиотеки (.so/.dll) или посредством готовой утилиты, которой всего-то нужно передать два значения — тип операции и сумму (когда нужно). В теории ничего сложного, всего-то

char buff[100];
sprintf(buffer, "%d %d", atoi(argv[1]), atoi(argv[2]));
system(buffer);

Но эта статья не вышла бы, если бы все было так просто.

ГЛАВА 4. Через гору и под горой

Все это прекрасно работало, пока в один прекрасный момент нам не сообщили, что…

… это не работает под Windows.

Ну точнее у самого Windows проблем нет (кроме того, что слип генерируется в кодировке Cp-1251, а консоль работает в CP866). Просто не генерировался «е» файл. Запустили банковскую утилиту напрямую:

04.02.2019 12:28 <DIR> .
04.02.2019 12:28 <DIR> ..
31.01.2019 17:12 10 832 F12X24.BIN
31.01.2019 17:12 128 000 gate.dll
31.01.2019 17:12 72 192 loadparm.exe
31.01.2019 17:12 36 204 OPT0.R
31.01.2019 17:12 20 716 OPT1.R
31.01.2019 17:12 1 806 OPT3.R
31.01.2019 17:12 388 608 pilot_nt.dll
31.01.2019 23:06 463 pinpad.ini
31.01.2019 17:12 91 136 posScheduler.exe
31.01.2019 17:12 418 printers.ini
01.02.2019 16:51 91 646 sbkernel1902.log
31.01.2019 17:12 653 312 sbrf.dll
31.01.2019 17:12 840 192 SBRFCOM.dll
31.01.2019 17:12 3 142 656 sb_kernel.dll
01.02.2019 16:51 9 SESS.D
01.02.2019 16:51 715 SPLC.D
31.01.2019 17:12 72 192 upwin.exe
20 файлов 5 659 718 байт
2 папок 37 567 004 672 байт свободно

04.02.2019 12:28 <DIR> .
04.02.2019 12:28 <DIR> ..
04.02.2019 12:28 216 commerr.log
31.01.2019 17:12 10 832 F12X24.BIN
31.01.2019 17:12 128 000 gate.dll
31.01.2019 17:12 72 192 loadparm.exe
31.01.2019 17:12 36 204 OPT0.R
31.01.2019 17:12 20 716 OPT1.R
31.01.2019 17:12 1 806 OPT3.R
01.02.2019 18:51 1 349 p
31.01.2019 17:12 388 608 pilot_nt.dll
31.01.2019 23:06 463 pinpad.ini
31.01.2019 17:12 91 136 posScheduler.exe
31.01.2019 17:12 418 printers.ini
04.02.2019 12:28 92 218 sbkernel1902.log
31.01.2019 17:12 653 312 sbrf.dll
31.01.2019 17:12 840 192 SBRFCOM.dll
31.01.2019 17:12 3 142 656 sb_kernel.dll
01.02.2019 16:51 9 SESS.D
01.02.2019 16:51 715 SPLC.D
31.01.2019 17:12 72 192 upwin.exe
19 файлов 5 659 029 байт
2 папок 37 567 008 768 байт свободно

Ага, результат можно получить из лога sbkernelГГММ.log. Неудобно, плюс нет хеша карты чтобы впоследствии прикрутить «Спасибо» от сбербанка. Не годится.

ГЛАВА 5. Загадки в темноте

Сбербанк — компания крупная, большинство программных решений производятся по ГОСТам и формальным документам. Залезаем в каталог, который поставляет Сбербанк вместе с библиотеками:

Куча добра, однако нас интересует только каталог для разработчиков:

Много макулатуры, на всякий случай еще раз перечитаем pilot_nt, из которой узнаем следующее:
Таблица 1. Поддерживаемые sb_pilot ОС.
ОС Разрядность Имя модуля
Windows 32 sb_pilot.exe
Linux 32 sb_pilot
DOS 16 sb_pilot.exe

По окончании работы программы формируются два текстовых файла — файл обмена и файл чека.

Лениво кидаем еще один камень и начинаем изучать документацию на подключение библиотеки напрямую.
Порядок вызова функций библиотеки

При оплате (возврате) покупки по банковской карте кассовая программа должна вызвать из библиотеки Сбербанка функцию card_authorize(), заполнив поля TType и Amount и указав нулевые значения в остальных полях. По окончании работы функции необходимо проанализировать поле RCode. Если в нем содержится значение «0» или «00», авторизация считается успешно выполненной, в противном случае отклоненной. Кроме этого, необходимо проверить значение поля Check.

int main(void) return 0;
>

In file included from main.c:1:0:
pilot_nt.h:525:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */
^
pilot_nt.h:544:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */
^
pilot_nt.h:567:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */
^
pilot_nt.h:590:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */
^
pilot_nt.h:627:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */
^
pilot_nt.h:668:3: error: unknown type name ‘auth_answer’
auth_answer ans; /**< [in, out] . . ::auth_answer */

Эммм… Что? Открываем pilot_nt.h:

Сразу, не глядя камень за комментарии на русском в кодировке CP1251.

Ну и самый серьезный камень: дорогие разработчики на С++. Если вы пишете extern «C» — это означает, что код внутри блока должен компилироваться С-компилятором. Если вы НЕ сделали `typedef` структуры, то при каждом ее упоминании в качестве указания типа необходимо писать ключевое слово `struct`.

Патчим файл для разработчиков, подставляя везде, где нужно слово `struct`. Линкуемся с библиотекой `pilot_nt.dll`. Победа, не? Запускаем наше приложение.

ГЛАВА 6. Из огня да в полымя

0xc0000096? А разве GetLastError не должна возвращать адекватный код ошибки?
For a complete list of error codes provided by the operating system, see System Error Codes.
Ага, открываем статью по ссылке:
The following

Читайте также: