Ops ini файл настроек операций
Важно. Перед прочтением данной статьи, рекомендуется ознакомиться с основной статьей по использованию и настройке связки банковских терминалов с кассами RK6. Основная статья находится здесь - Настройка связи с банковскими терминалами авторизации кредитных карт (пинпады) и Настройка связи кассы Rk6 с пинпадами ОАО "Сбербанк"
- Данные в статье предоставлены техническими специалистами ОАО "Сбербанк".
- Для успешной связки кассового ПО 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.
Проблемы
Специальные предложения
Подтверждаю, что решение рабочее:) Сам таким же способом в результате долгих мучений пару лет назад подключал свою конфигурацию к сбербанку по рдп. Причем в сбербанке сами ничего не знают как это сделать и документации такой нет.
Только я в общем файле pinpad.ini прописывал
WorkingDir=%UserProfile%\sbrf
TlvDir=%UserProfile%\sbrf
а ком-порт указывал уже в каждой папке пользователя свой тоже в файле pinpad.ini, но там уже в нем только одна строка например
ComPort=2
(1) tvixeg, с COM-портами я не заморачивался, так как сисадмин заверил, что набор виртуальных портов у каждого сеанса RDP индивидуальный. У всех COM9 и работает))
(2) Tarlich, не представляю зачем оно мне так подключать. У Вас именно так подключено и есть проблема? Или к чему Вы свой вопрос задали?
(3) Такой вариант возможен есть организация использует 2 юр. лица (ООО и ИП) . И тут сталкиваемся с проблемой :) . а вообще на стороне 1с как решили данную проблему ? указывали конкретную папку для каждого пользователя?
Добрый день!
Работа двух терминалов через rdp с разных компьютеров реализована - все хорошо! Но висят на одном Com. Далее осталась касса, где к одному ПК подключено два ФР, два Юр.лица и два терминала. Мультимерчант - не подходит из соображений бухгалтерии. Никто так и не решил вопрос (2).
Делали аналогично.
Но для того чтобы все настройки были в одном месте, а не распиханы по профилям пользователей, в pinpad.ini прописали следующее:
Столкнулись с проблемой. Если пользователи имеют русские наименования (например, в нашем случае "Пушкина 1"), то не работает. Проблема скорее всего сводится к тому что драйвер сбера не поддерживает кодировку текста. Чтобы не переименовывать пользователей, случайно нашли другое решение. Под каждым профилем запустили из-под 1С УТ 10.3 сверку итогов. При этом автоматически создались папки с наименованием типа "ЏгиЄЁ 1". Ну а дальше просто раскидали по папкам нужные файлы.
Всем доброго дня. Мой первый пост - надеюсь кому-то поможет, просто времени на все это потрачено неимоверно.
Проблема как у всех - с этим пресловутым "p" файлом при работе через терминальную сессию RDP с сервером, с терминалами сбербанка (заодно и с ККМ - у нас стоят АТОЛ 30Ф).
1.Кассы. Нормальную работу и приемлемую скорость печати удалось получить только реализовав проброс портов через VSPE.
На локальных станциях - все ККТ подключены на 10 и 11 порты, в клиентской части VSPE ставится для каждого компьютера уникальный порт - например 5001, 5002 и т.д., на сервере VSPE слушает их же. В 1с (у нас КА1.1) создается для каждой кассы свое устройство и выбирается нужный порт. Т.е. в торговом оборудовании много ККТ. Немного доработана конфа, чтобы была привязка конкретного экземпляра ККТ к подразделению.
2. Эквайринг. (сразу выскажу незачот Сберу и той конторе, которая занимается наладкой и обслуживанием оборудования). С самого начала задача стояла так, чтобы продавцы не могли руками вводить цифры на терминал, а данные для операции поступали из 1с. Эквайрер был один - Сбер, т.к. онлайн ККТ еще не планировались - необходимы были интегрированные (управляемые извне) терминалы с принтером чека. Нам на все точки (около 100) поставили аппараты Ingenico IPP480. На сервер было установлено ПО - папка sc552, из нее зареганы dll, в 1с создано одно оборудование с 1 фиксированным com портом (7). Проброс идет средствами RDP - в каждой сессии ком порт свой, путаницы нет. После установки ККМ никаких проблем не возникло - эквайринговый чек печатался на терминале, а кассовый - на кассе.
Через какое-то время я примерно половину терминалов перевел на другой банк (по причине полной неклиентоориентированности банка - по полгода (это не преувеличение) - они меняли мне юрлицо, на котором работает точка. У меня ИП давно закрыто - а на р/с деньги поступают от эквайринга. ) У нового эквайрера - система Arcus2 терминалы Ingenico IPP320 без принтера. Поковырявшись - добились нормальной печати эквайринговых чеков на ККТ. С одним нюансом - эта система по аналогии со сбером создает в директории сервера C:\Arcus2\ файлы cheq.out и chek.out - которые содержат текст для печати чека, обработка оборудования цепляет их и передает на ККТ для печати. Обычно файлы появляются при проведении платежа и потом сами удаляются. Понятно что при одновременном обращении будет ошибка (они и есть - но редко), также иногда файл подвисает и не удаляется по непонятной причине. Все терминалы перестают работать из-за ошибки доступа к файлу. Для таких случаев написан батник, который каждые 10 минут проверяет время текущее и время создания cheq - если разница больше 10 минут - значит файл завис и батник удаляет cheq.out. В 20% случаев - не удаляет и его приходится удалять руками. Плохо - но работает.
Возникла потребность еще в 3х терминалах именно сбера - IPP480 сказали больше не производят, привезли 3 Verifone VX820 без принтера естественно. Работа установщиков конечно умиляет - ставят папку SC552 на локальный комп, USB драqвер на устройство запускают loadparm - сверка итогов - видишь окошечки пробежали, сверка прошла? видишь файлик "p" появился? Ну все - готово!! А то что 1с их терминал в упор не видит и мне надо не 9 com а 7й, и то что чек на ККТ не печатается - им глубоко фиолетово.
Дальше собственно по теме:
На клиентском компе в нашей ситуации - работа через RDP с терминальным сервером - нужно установить только USB дрова на сам аппарат. SC552 нужна только для первичного (или дальнейшего) тестирования самого терминала без 1с. Т.е. ее можно смело удалять и никакие библиотеки регистрировать не надо. Даже если эта папка существует на локальном компе - никаких обращений к ней не происходит при работе с RDP - т.е. например файл pinpad.ini там редактировать бесполезно - при запуске с сервера - работает только папка на сервере C:\SC552\ и настройки читаются оттуда. Никаких разбрасываний папок SC552 по папкам пользователей и регистраций библиотек оттуда делать не надо. Все делается из 1й папки на сервере.
Т.к. у нас папка на сервере уже была - первый терминал стартанул успешно - создал на сервере в папке C:\SC552\p файл. Сверка прошла, оплаты прошли - не было чека на RRN/
На сервере стояла версия DLL примерно 23 - а новые терминалы заточены под 29 (версия их прошивки должна совпадать с версией DLL - это в теории, на практике - как пойдет - может работать, а может и нет). Рискнули - обновили DLL на сервере - боялись старые терминалы перестанут работать. Нет, повезло - работают. И новый VX820 начал печатать чеки на ККТ.
Но оказалось, что после того как один терминал создал файл p - при попытке провести операцию на другом - доступа к этому файлику не было. Немного увеличили права для всех юзеров на папку SC552 - и доступ появился - поочередно терминалы проводили операции, создавали p файл и выдавали чек на ККТ.
Старые терминалы, которые с принтером - им на этот файлик по барабану - они его не используют.
Далее работа с pinpad.ini на сервере:
Вот так выглядел наш файл изначально.
Если закомментировать PrinterFile=p - печати чека на ККТ не будет.
Если написать что-то другое - например PrinterFile=p22 - будет создан файл p22.
Задача - развести эти файлы - каждому терминалу - свой.
Установлено, что %UserProfile% у нас не работает - причина почти сразу стала очевидна - у нас юзеры заданы кириллицей.
Например прописав PrinterFile=Ваня1 - я получил файл "1".
Почитав про системные переменные windows я начал пробовать разные варианты - чтобы файлы как-то могли отличаться друг от друга.
Наткнулся на %CLIENTNAME% - имя компа, подключенного к RDP сессии. У нас оно во-первых задано латинскими буквами и уникально - т.е. каждый терминал можно идентифицировать по %CLIENTNAME%. И это взлетело. Теперь строка выглядит так:
Вместо гемороя со всякими SUBST, созданием каждому пользователю папок SC552 по пути %UserProfile% и переименования пользователей в латинские имена - в одной папке все печатные файлы, но с разными именами.
Еще бы в Arcus так сделать - но там пока не вышло.
PS - и еще момент - есть программка TLvEdit - которая читает и пишет параметры прошивки самого терминала - так вот там есть настройка - порядок взаимодействия с ККТ - там обязательно должна стоять правильная галка - на пункте (не помню дословно) - "Печать чека на ККТ" - если галка не стоит - чека на кассе не дождетесь.
Банковские терминалы авторизации карт (БКАТ) - это устройства используемые для авторизации банковских карт и поведения транзакций при оплате.
БКАТ связываются с кассовой станцией РК7 используя один из поддерживаемых и описанных ниже протоколов.
В зависимости от протокола, банковская карта может быть считана при помощи собственной читалки БКАТ(в большинстве случаев) или считывателя, подключенного к кассовой станции РК7.
БКАТ позволяют производить оплату заказов при помощи банковских карт с автоматическим запросом транзакций к кассе RK7.
- для выбранного типа карты должно быть разрешено использование терминала (Валюты->Кредитные карты->Использовать терминал)
- соответствующее устройство должно быть добавлено в конфигурацию (Сервис -> Станции и устройства-> Устройства)
- создано логическое устройство на закладке Принтеры (Сервис -> Станции и устройства-> Принтеры)
- логическое устройство, созданное в пункте 3, надо выбрать в качестве Терминала Авторизации (Сервис -> Станции и устройства-> Свойства -> Назначения принтеров)
Общими настроечными параметрами для терминалов (Verifone vx510 и Ingenico 5100) являются следующие:
DebugLogFile – имя файла, в который будет выводиться отладочная информация
LogLevel – уровень детализации отладочной информации (1..3, 3 — самый высокий)
Драйвер vx510, кроме того, имеет настроечный параметр CmdRetries. Он определяет количество попыток исполнить команду авторизации в случае, если терминал не даёт на нее ни положительного, ни отрицательного ответа.
Поддерживаемые протоколы
Работа авторизационного модуля (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, по которым и будут работать терминалы при обслуживании международных карт и карт Сберкарт.
Пример успешной операции
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, то ошибка).
Передача результатов работы программы
Если код результата равен "0", то для платежной операции последующие строки файла e содержат параметры совершенной операции. Например:
Образец содержания файла
Номер карты (маскированный)
Срок действия карты
Внутренний номер операции
Название типа карты
Признак карты Сбербанка (1)
Дата-время операции (ГГГГММДДччммсс)
Ссылочный номер операции (может быть пустым)
Хеш от номера карты
Второй файл с именем "p" (имя может быть изменено) является образом чека для вывода на принтер. Вызывающая программа должна самостоятельно передать этот файл на принтер. Файл чека формируется только в том случае, если код результата равен 0. Имя файла чека устанавливается в конфигурационном файле программы и обычно имеет значение "p". В исключительных случаях можно назначить файлу чека имя "prn" — тогда он будет печататься сразу, до завершения работы программы.
Конфигурационный файл - 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-порта, а через номер прерывания и базовый адрес. Эти реквизиты требуется предварительно уточнить.
Arcus2 - протокол эквайринга компании Ingenico, поддерживается подавляющим числом Банков.
Описание настройки авторизационного модуля на работу поверх 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)
cashreg.ini
Файл должен быть расположен в C:\Arcus2\ini\ , содержит основные настройки соединения с пин-падом:
PORT - имя COM порта, по которому подключен пин-пад. Обычно физически пин-пад подключен к компьютеру через USB, при этом устройство встает как виртуальный ком порт. Данная настройка должна совпадать с номером порта в системе. Если вы не можете определить какой из виртуальных портов пин-пад - выключите его, один из портов должен пропасть, потом включите, он снова должен появиться, используйте его номер для настройки.
Требования к программному обеспечению
- Версия MS-DOS не ниже 3.01.
- Объем свободной оперативной памяти не менее 230 K.
- Наличие русификатора клавиатуры/дисплея.
- Наличие сетевой оболочки FTP Software PCTCP, либо Novell TCPIP.
Конфигурация и настройка 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-терминалов Сбербанка России».
Arcus
ops.ini
Ниже представлен пример конфигурационного файла - ops.in обычно настраиваемого со стороны банковского ПО. некоторые параметры из него могут использоваться при настройке свойств драйвера arcus.dll в Менеджерской RK7:
Как пример использования, - в свойствах подключенного на кассе для работы с пинпадом драйвера arcus.dll может быть настроено автоматическое выполнение сверки итогов при закрытии смены на кассе, т.е. в поле "CmdClose" прописать значение "7" - см.раздел "отчеты и закрытие смены" в ops.ini.
EFTPos
Работа авторизационного модуля (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-терминала. Причина неизвестна.
Настройки в менеджерской станции для терминала Arcus
Inpas
Информация по данному протоколу авторизации находится в отдельной статье.
Схема взаимодействия
Принципиальная схема взаимодействия терминала авторизации и r_keeper_7
ПО банка может отсутствовать.
Представление документов можно найти в Схемах печати. Нужное представление — Авторизация карточек.
Установка
Arcus2 должен быть установлен строго в директорию C:\Arcus2
В ином случае интеграция работать не будет!
Версия Arcus2 не ниже 2.0.0.37
Установка и настройка производится специалистами банка!
Для интеграции используется утилита командной строки: CommandLineTool.exe , по сути приложение запускает ее с нужными параметрами и считывает выходные файлы:
Все файлы считываются в кодировке Windows 1251!
Используемый код валюты: 643
Реализуемые операции
Arcus2 настраивает кассовые операции в файле C:\Arcus2\ini\ops.ini (консольной утилите передается код операции, далее по этому коду уже всё выполняется пин-падом). Касса при первом обращении к пин-паду считает данный файл и определит из него настройки операций. Если данного файла нет, или в нем нет требуемой операции, то будет использовано значение по умолчанию. Ниже приведены реализованные операции в мнемонике: =, .
Фактически это означает, что касса «подстроится» под текущие настройки Arcus2. В случае если, в C:\Arcus2\ini\ops.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:
Пример сбойной операции
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'
Описание
В такой ситуации программа будет считать что операция не выполнена (даже если пинпад, на самом деле, её провёл). По сути данную проблему должны решать специалисты Сбербанка.
В один прекрасный день установили терминал оплаты СБРФ. И всё прекрасно работало, пока не понадобилось установить такой же в ещё одном магазине. Тут и началось: танцы с бубном у сисадминов (настройка COM-портов, их проброс на сервер); мучения программистов 1С с обработкой подключения эквайринговой системы СБРФ. Но работать вместе эти терминалы на одном сервере отказывались. Работал только тот, который первый подключился к серверу, второй же при попытке провести оплату говорил, что настройки не верны, либо что пин-пад не подключен.
1. Добавить строки
WorkingDir=%UserProfile%\SC552
TlvDir=%UserProfile%\SC552
в \\serv_name\C$\sc552\pinpad.ini
2. На сервере скопировать каталоги "sc552" в каталоги пользователей:
\\pc_name\C$\sc552\*.* -> \\serv_name\C$\users\username\sc552\*.*
3.Скопировал каталоги
\\client01\C$\sc552\*.* -> \\serv\C$\Users\kassir01\sc552\*.*
\\client02\C$\sc552\*.* -> \\serv\C$\Users\kassir02\sc552\*.*
Требования к оборудованию
- IBM-совместимый компьютер на базе процессора не ниже 80286 (POS-терминал).
- Объем оперативной памяти не менее 1 МБ.
- Объем свободного дискового пространства не менее 5 МБ.
- Наличие свободного порта RS-232 для подключения ПИН-клавиатуры VeriFone SC5000 или аналогичной (предоставляется Сбербанком бесплатно).
- Сетевая карта Ethernet.
Заголовок
Номер порта должен быть меньше 9! Если он больше, смените в настройках системы его номер на другой!
Смена настройки порта:
В диспетчере устройств находим нужное устройство в разделе «Порты COM и LPT»
Выбрать устройство, открыть его свойство и на вкладке «Параметры порта» нажать «Дополнительно»
В открывшемся окне выбрать новый порт
Пример разбора лога sbkernel[yymm].log
sbkernel[yymm].log - лог операций библиотеки sbrf.dll за yy - год, mm - месяц. Ведется библиотекой в случае установки параметра PinpadLog=1 в pinpad.ini .
Ниже мы разберем две оплаты - успешную и сбойную. В логе красным приведены комментарии, некоторые комментарии приводятся единожды, при дальнейшем чтении лога следует держать их в голове, для понимания происходящего.
Журнал операций
Arcus2 не поддерживает возможности просмотра журнала операций пин-пада.
Работа авторизационного модуля (SB_PILOT.EXE) поверх Novell IPX/SPX network client for DOS
Приведем файл настройки Novell IPX/SPX network client for DOS (обычно расположен в каталоге POS-терминала C:\NET)
pinpad.ini
pinpad.ini - файл с настройками связи с пин-падом:
ComPort - номер COM порта по которому подключен пин-пад. Обычно физически пин-пад подключен к компьютеру через USB, при этом устройство встает как виртуальный ком порт. Данная настройка должна совпадать с номером порта в системе. Если вы не можете определить какой из виртуальных портов пин-пад - выключите его, один из портов должен пропасть, потом включите, он снова должен появиться, используйте его номер для настройки
ShowScreens - отвечает за то показывать ли диалоговое окно пин-пада при проведении операций. 1 - показывать, 0 - не показывать. Для касс рекомендуется показывать, т.е. 1
Для того, что бы касса могла использовать sbrf.dll ее необходимо зарегистрировать в системе! Это, по идее, должны так же делать специалисты Сбербанка, но они этого не делают… обычно. В любом случае повторная регистрация не навредит:
Запустите командную строку с правами администратора
Смените текущую директорию на папку с библиотекой сбербанка
Деньги с карты списались, но программа сочла это ошибкой
После списания денег с карты программа выдала ошибку, с текстом 992: УСПЕШНО (цифра может быть другой, текст тоже, но семантически мы понимаем что якобы списание прошло успешно, или же клиент нам показывает, что деньги списались). Это значит, что пинпад вернул программе статус 992 , который он по каким-то причинам считает успехом, а программа - нет.
В протоколе Arcus2 успешным считается только статус операции 000 , все остальные - ошибка. Поэтому все операции со статусом отличным от 000 программа считает ошибочными, т.е. списания средств по ним быть не должно.
В этом случае следует обратиться в банк эквайер для разъяснения ситуации по спорной транзакции. В случае если деньги всё же списаны вернуть их через личный кабинет юридического лица банка эквайера или через его службу поддержки!
Для справки
Информация ниже приведена для справки, не настраивайте эквайринг самостоятельно!
В настройках Arcus2 (которые должен делать банк) есть два файла:
rc_conv.ini - этот файл отвечает за преобразование статусов (т.е. он позволяет сказать что тот или иной статус является по сути успехом), так вот в этом файле в таком случае должна быть запись 992=000 .
В эти файлы лезть категорически нельзя! Нужно что бы банк разобрался с настройками Arcus2 в соответствии со своими правилами.
Первичную настройку интеграции со сбером должны выполнять специалисты Сбербанка!
Укажите специалисту Сбербанка что терминал должен формировать один слип! В настройках процессинга же в админ панели для Сбербанка укажите число копий слипа- два
Касса напрямую не взаимодействует с пин-падом, всё общение производится через промежуточный софт Сбербанка: sbrf.dll или pilot_nt.dll - это библиотека, реализующая основные запросы к пин-паду:
Если коротко, то Касса запрашивает у sbrf.dll или pilot_nt.dll проведение оплаты на заданную сумму, далее библиотека выполняет все необходимые действия с пин-падом и возвращает программе результат операции (в виде числового кода). Расшифровку числовых кодов нужно запрашивать у Сбербанка.
Порядок приема работ от поставщика пинпада\эквайринга
В ходе подключения пинпада, со стороны его поставщика должны быть выполнены следующие работы:
Выполнение тестовых операций при помощи утилиты CommandLineTool.exe входящей к комплект ПО заказчика:
cheq.out - в файле должен быть текст банковского слипа, с информацией об успешно проведенной оплате или отмене
Ниже перечислены пути и файлы которые должны существовать после установки Arcus2
Файлы ответа ( chek.out , output_ex.dat и output_ex.txt ) должны формироваться в C:\Arcus2
Настройка
После установки и настройки sbrf.dll или pilot_nt.dll лежит где-то на диске C ( C:\SBFR\ , C:\sc252 и т.п. где конкретно должен сказать специалист Сбера). Если всё настроено и «работает» то так же в этой папке должна быть программа loadparm.exe - если при запуске она показывает окошечко, значит связь с пин-падом есть, иначе - нет.
Бывает что настройка выполнена не полностью, в этом случае придется что-то делать руками.
Вызов программы
Синтаксис вызова программы следующий:
- где параметр может принимать значения:
Операция
тип
Назначение
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".
Параметр - считанный с магнитной карточки Track2, без заголовочных и хвостовых символов. Номер карты отделяется знаком ‘=‘.
Как правило, этот параметр не указывается при вызове программы. В этом случае программа сама выдаст оператору запрос на ввод карточки. При этом карта может быть считана через устройство VeriFone SC5000 (VX 820), либо через встроенный клавиатурный ридер ККМ.
Параметр - поддерживаются следующие ключи:
Потеря связи с пин падом
При потерях связи с пин-падом:
Предоставьте специалистам Сбербанка и Лайма логи и времена событий (логи - все txt и log файлы из папки с библиотеками сбербанка)
Определение RRN
В ходе тестирования выявлено, что в файлах ответа не всегда появляется идентификатор операции (RRN), т.е. он банально не заполнен. Данный идентификатор обязателен для корректной отмены операции (и/или возврата в течение текущего дня).
В случае если в файлах ответа не содержится RRN, программа будет искать в чеке первую строку вида «RRN 123456789012» и цифровое значение следующее после «RRN», длиной не менее 6 символов будет считаться как RRN операции.
Настройка
Выполняемые функции
Платежный терминал поддерживает две группы функций:
- Первая группа - предназначена для проведения платежей по картам.
- Вторая группа - Это служебные функции.
Для проведеня платежей по картам поддерживаются следующие функции:
- Оплата покупки (услуги).
- Возврат покупки.
Служебные функции включают в себя:
Настройка терминала без встроенного принтера
В этом случае настраивать также, как и в п.3.1, но:
- в копии макета "результат авторизации" добавить мемо [SlipToPrint] в созданный бэнд , или в бэнд "Заголовок отчета";
- вместо назначения "терминал авторизации" выбрать то назначение принтера , которое используется для печати чеков/отчетов;
- макет добавить в используемую схему печати.
Настройки для pilot_nt.dll
Если используем pilot_nt.dll необходимо на каждом рабочем месте настроить переменную среды SB_PILOT_NT_PATH и указать в ней папку в которую установлена pilot_nt.dll (после настройки кассовое приложение необходимо полностью перезапустить, если до момента настройки оно было запущено, в случае автокассы необходимо перезапустить службу Jade.Cashdesk.Service ).
Для настройки параметра нажмите «Пуск» и начните вводить «переменных среды»
Запустите приложение, нажмите «Переменные среды», в группе «Системные переменные» нажмите «Создать…»
В имени переменной укажите SB_PILOT_NT_PATH , в значении папку с pilot_nt.dll :
Журнал операций
Эквайринг сбербанка поддерживает возможность просмотра журнала операций и отмены оных. Отмена транзакций протоколируется и выводится в специальном отчёте: Отмены транзакций эквайринга
TrPosX
Настройки в менеджерской станции для терминала ГазПромБанка
Для работы терминала в менеджерской станции выполните настройте:
Диагностические логи
В случае проблем для диагностики нужно сообщить и прислать:
Прислать файл с логами Сбербанка: sbkernel[yymm].log (где: yy - две последних цифры года, mm - номер месяца, скажем логи за январь 2022 года будут называться sbkernel2201.log ). Файлы логов хранятся в папке, рядом с sbrf.dll (обычно что-то типа C:\SBFR\ , C:\sc252 , C:\sc525 )
Проблемы
В случае если при оплате/возврате возникает ошибка «Нет связи с пин-падом», или «Ошибка номер такой-то, смотрите подробности в таблице ошибок» - это означает что sbrf.dll - вернула программе соответствующий код ошибки и программа считает операцию не выполненной.
Конфигурационный файл - PROTOCOL.INI
Читайте также: