Драйвер эквайринга Сбербанка. Web-версия для работы через сеть (например, при RDP)
Разработка представляет собой обертку Web-сервер для драйвера эквайринга от Сбербанка (+обработка торгового обслуживания). Протестировано на 1С:Управление торговлей 10.3.
Код обработки торгового обслуживания открыт.
- Описание
- Подробнее
Описание
После того как нам принесли новый терминал для работы с драйвером Сбербанка, который наотрез отказался работать с терминалом через проброшеный RDP порт, возникла идея, нужно было либо ставить сторонние программы для проброски порта, а такой опыт у нас был, но работало это тоже не всегда стабильно. Тогда возникла мысль написать свой драйвер или обертку для работы с 1С через сеть по протоколу HTTP.
Полазив по инету я нашел несклько точек входа в драйвер Сбербанка
— sbrf.dll — для обращения нужно вызывать методы COM
— sbrfcom.dll — обертка для 1С, но для обращения тоже нужно вызывать методы COM
— pilot_nt.dll — для обращения можно вызывать обычные экспортные функции, их много, документация достаточно запутанная
— sb_pilot.exe — еще одна обертка драйвера подходит для DOS и Windows программ принимает параметры во входящей строке, возвращает данные в виде файлов "e" и "p"
Хорошим языком для быстрого написания Web серверов является Go (GoLang). А он, как известно, не дружит с COM технологией от Microsoft. По крайней мере в течении пары часов не удалось его подружить даже используя наработки, которые есть в интернете. Изрядно помучав sbrf.dll и sbrfcom.dll, вдруг наткнулся на "pilot_nt.dll", который содержит уже обычные экспортные функции, к которым можно обратиться на Go. Но также был найден sb_pilot.exe и неплохая документация к нему, поэтому выбор в качестве точки входа пал на него.
На языке Go написан драйвер обертка sb_pilot_web.exe который поднимает web сервер на нужном порту, принимает команды вида http://localhost:8081/do?p1=…&p2=…&p3=…&p4=…. переадресует их sb_pilot.exe, ждет выполнения и возвращает ответ в формате JSON.
Обработка торгового оборудования SberBankES_v2.epf от Сбербанка, которая работает с sbrfcom.dll, исправлена для работы с новым веб сервисом-оберткой. Названа она sb_pilot_web.epf.
Порядок установки решения:
— установить и настроить драйвер от Сбербанка на клиентскую машину (это тот где loadparam.exe)
— убедиться, что в комплекте с драйвером есть обертка sb_pilot.exe (может быть в отдельном каталоге WinCLI), если ее нет, то нужно установить.
— скопировать в папку с sb_pilot.exe файлы sb_pilot_web.exe и sb_pilot_web.ini
— установить в 1С в качестве обработки торгового обслуживания sb_pilot_web.epf
— указать в 1С адрес и порт нашего веб сервера
— запустить на клиентской машине sb_pilot_web.exe
— у 1С должен быть доступ к клиентской машине по сети (например, через VPN)
Примечание:
Сервер использует HTTP, а не HTTPS. Никакой авторизации тоже нету. Подразумевается, что все работает в защищенной локальной сети (поднимайте VPN)
Список файлов:
— sb_pilot_web.exe — Обертка, которую нужно запустить
— sb_pilot_web.ini — тут прописывается порт, на котором нужно поднять сервер
— sb_pilot_web.epf — обработка торгового обслуживания для 1С
Список дополнительных файлов:
— TradeWareEpfTester.epf — обработка для отладки внешних обработок оборудования
— TradeWareEpfTester.ini — тут лежит путь к файлу обработки, который нужно отлаживать
— разная документация от Сбера, которую удалось найти в интернете.
Обработка проверена на конфигурации: "Управление торговлей", редакция 10.3 (10.3.88.3)
Релиз платформы: 1С:Предприятие 8.3 (8.3.24.1667)
