Подключение эквайрингового терминала ПриватБанка к 1С по протоколу JSON

28.07.21

Интеграция - Эквайринг/ридер магнитных карт

Подключение Ээквайрингового терминала ПриватБанка к 1С по протоколу JSON с помощью WebSocket. Все тестирование проводил на 1С:Предприятие 8.3 (8.3.10.2561).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Подключение Эквайрингового терминала ПриватБанка по протоколу JSON:
.epf 10,58Kb
65 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Доброго времени суток, уважаемые читатели!

Я хотел бы поделиться опытом совмещения 1с из Эквайринговым терминалом ПриватБанка по протоколу JSON. При подключении магазинов использовались терминал Ingenico, Verifon и один магазин с терминалом PAX A930 из ОС Андроид. 

Данный тип совмещения работает через WebSocket. WebSocket сервером выступает программка "genericDriverJson", которую предоставляет сам банк. В виде WebSocket клиента выступает 1с, из которой отправляются JSON запросы на WebSocket сервер, а он в свою очередь слушает порт (2000) терминала и отправляет/принимает с него информацию. 

Для меня основной сложностью реализации данного совмещения оказалось, то что 1с не умеет напрямую работать с WebSocket и для этого необходимо использовать внешнюю компоненту. К счастью, мир оказался не без добрых людей и внешнюю компоненту я скачал из публикации:

Внешняя компонента для работы по Web-socket протоколу x32 x64 //infostart.ru/public/808432/ 

1. Как запустить работать WebSocket сервер?

Как я уже писал ранее этим сервером выступает программа genericDriverJson. Если Вы используете подключение терминала по USB, то необходимо использовать genericDriverJsonUSB, для Ethernet  -> genericDriverJsonETH. Для отладки запускать программу лучше в командной строке под администратором. Для постоянной работы на торговой точке (ТТ) можно создать службу в ручную.

Чтоб создать службу необходимо взять программу из папки ...\genericDriverJsonETH_27012021 скопировать на компьютер ТТ. Я копировал в корень диска С. Дальше запустить командную строку от имени администратора и в ней выполнить команду
sc create genericDriverJsonETH binPath= "c:\genericDriverJsonETH -ip xxx.xxx.xxx.xxx" DisplayName= "genericDriverJsonETH" type= own start= auto
binPath это пусть к файлу, где вы его скопировали, ip - это айпи адрес терминала в сети.

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

c:\genericDriverJsonETH -ip xxx.xxx.xxx.xxx -wsp 3001

c:\genericDriverJsonETH -ip xxx.xxx.xxx.xxx -wsp 3002

 

 

Текст успешной работы сервера из командной строки

 

 

2. Как запустить работать WebSocket клиент

Клиентом выступает программа 1с, к которой подключается внешняя компонента для работы с WebSocket. Для этого была написана обработка. В обработке при открытии происходит подключение внешней компоненты и потом подключение WebSocket-а.

Внешний вид формы. При успешном подключении светится зеленым цветом "Терминал подключен", если подключение неудачное красным "Подключите терминал" 

 

 

Обработку прикреплю в низу статьи, но без самой компоненты (внешнюю компоненту можете скачать в публикации  по тексту выше) и добавить в ОбщийМакет.WebSocket.

Когда вводим сумму и нажимаем кнопку Оплата, формируется JSON запрос такого формата:

 

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

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
	
	Если Источник = "WssExt2" Тогда
		Если Событие = "Ошибка" Тогда
			
		ИначеЕсли Событие = "Подключено" Тогда
			Подключено = Истина;
			ПоказатьОповещениеПользователя("Подключение", , "Подключено к " + Данные);
			УстановитьДоступность();
		ИначеЕсли Событие = "Отключено" Тогда
			Подключено = Ложь;
			ПоказатьОповещениеПользователя("Отключение", , "Отключено (код " + Данные + ")");
			УстановитьДоступность();
		ИначеЕсли Событие = "Сообщение" Тогда
			
			Результат = Новый Структура("СоответствиеДанных, ОписаниеОшибки", Новый Структура, "");
			
			//Данные = ПодтасоватьДанные(); // для тестирования оплаты без фактической оплаты по терминалу
			
			РазобратьОтвет(Данные, Результат);		
			ОбработатьРезультат(Результат);
		КонецЕсли;
	КонецЕсли;
	
	Если Подключено Тогда
		Элементы.Статус.Заголовок = "Терминал подключен";
		Элементы.Статус.ЦветТекста = Новый Цвет(50, 205, 50);
	Иначе
		Элементы.Статус.Заголовок = "Подключите терминал";
		Элементы.Статус.ЦветТекста = Новый Цвет(255, 0, 0);
	КонецЕсли;
	
КонецПроцедуры


 

Вступайте в нашу телеграмм-группу Инфостарт

ПриватБанк совмещение JSON WebSocket

См. также

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

19520 руб.

21.03.2023    21793    155    32    

120

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Мастера заполнения Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки, и оно автоматически применится при загрузке выписки, экономя ваше время (Можно настроить отбор по любому реквизиту или по регулярному выражению). Решение позволяет автоматически заполнять расшифровку платежа, исключать загрузку ненужных документов (дублей) из банка, заполнять комиссию за эквайринг и многое другое. Вам не нужно доплачивать за алгоритмы, они уже включены в решение. Автоматическая обработка применяется при загрузке данных как из файлов клиент банка, так и через DirectBank. Доступен AI чат бот который умеет консультировать по функционалу решения.

15250 руб.

20.12.2024    14497    63    27    

60

Эквайринг/ридер магнитных карт Пользователь 1С 8.5 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Абонемент ($m)

Решает проблему необходимости вручную открывать панель управления эквайринговым терминалом и производить сверку итогов.

1 стартмани

16.03.2026    225    0    Stasyao1C    2    

3

Кассовые операции Эквайринг/ридер магнитных карт Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Внешнее расширение для конфигурации Управление торговлей ред. 11.5 при создании новых документов "Приходный кассовый ордер" и "Эквайринговая операция" в поля "касса", "договор подключения" и "терминал" поставит значения по умолчанию для текущего пользователя, которые определяются из его настроек Рабочее место кассира (РМК). Аналог персональных настроек.

5 стартмани

24.02.2026    292    0    plkt2    0    

2

Эквайринг/ридер магнитных карт Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Абонемент ($m)

Предлагаю решение для API-интеграции с эквайринговыми терминалами Сбербанка (Kozen).

3 стартмани

04.12.2025    1139    0    Alexez    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. it.m.msv 18.10.21 15:45 Сейчас в теме
Добрый день. Сможете помочь с Подключение эквайрингового терминала ПриватБанка к BAS Розница, если да то как с Вами связаться?
2. Ditron 164 11.11.21 20:18 Сейчас в теме
(1)для подключения к типовым, как драйвер торгового оборудования, нужно писать компоненту, такой вариант (в публикации) хорош для самостоятельной интеграции, ну или переписывать типовые механизмы! Автору респект и спасибо за рекламу моего вебсокет-клиента ))). Но слишком много прослоек на пути к железяке: служба, компонента; там есть прямой интерфейс…
3. Timow 26.11.21 19:18 Сейчас в теме
(2) Подскажите как можно подключить без прослоек, какой интерфейс имеется ввиду?
4. Ditron 164 26.11.21 19:20 Сейчас в теме
(3)написать компоненту работающую напрямую по протоколу JSON
6. Kaldor_Drago 20.12.21 18:15 Сейчас в теме
(4) Железяка работает с байтами, а не с JSON. Прослойка собственно умеет парсить текст JSON в читаемый формат терминала (массив байт с окончанием байта 0x00) и наоборот. Ваша же компонента получает строку ответа от сервера, и вот вопрос что компонента делает с этими байтами?
7. Ditron 164 20.12.21 18:55 Сейчас в теме
(6)я вас огорчу, есть прошивка, которая парсит без "прослойки", отправляется строка json null терминированный прямо в порт...

(6)
Ваша же компонента получает строку ответа от сервера, и вот вопрос что компонента делает с этими байтами?
вот тут вообще не понятно о чем речь
8. Kaldor_Drago 20.12.21 20:36 Сейчас в теме
(7) Вы же сами написали что нужна другая компонента , работающая по протоколу json, тогда по какому протоколу работает ваша компонента? И вообще нет такого протокола, если мы говорим о прикладном уровне.

Вы имеете ввиду прошивку терминала, которая сама умеет преобразовать json текст?

В любом случае нужна компонента, можно получить демо версию вашей и какие у нее ограничения?
10. Ditron 164 20.12.21 21:20 Сейчас в теме
(8)я разве писал о том что не нужна или нужна компонента? Я написал что можно напрямую отправлять пакеты на устройство, минуя вебсокеты!
Компонента нужна не в любом случае! Например если вы собираетесь написать свой рмк, то БПО можно не использовать, и отправляйте себе на Здоровье в порт устройства и читайте из него прямо из 1с, обмен на терминалах всегда запрос-ответ(подтверждение-ответ). Если хотите подключать по БПО, тогда пишите или покупайте готовую. Что такое «протокол» мне известно).
И та компонента, которая указана в публикации (моя) никакого отношения к пос терминалам не имеет, это просто универсальный инструмент для обмена 1с-websocket… автор удачно прикрутил ее как промежуточное звено, но проблема как раз в том что при таком раскладе речи о БПО и быть не может)
У меня есть библиотека для пос по ecr bpos1, здесь же ведётся речь о другой версии прошивки Приватбанка
12. Kaldor_Drago 20.12.21 23:20 Сейчас в теме
(10) Не хотел умничать или упрекнуть в чем-то, просто хочу для себя понять так есть в планах реализовать похожее решение.

Не совсем понял что означает "БПО". Какой использовать механизм отправки данных прямо в порт устройства?
Приват дает разъяснение: "Библиотека JSON протокола вшита в ПО терминала. Работать с терминалом напрямую через WebSocket можно при любом подключении. При совмещении напрямую с терминалом - кассовое ПО работает по порту (при USB подключении) или по TCP. Там не нужен ни websocket ни http. JSON конвертируется в массив байтов, добавляется байт 0x00 и отправляется прямо в порт или по сети"
Насколько я понял можно подключаться напрямую к терминалу и отправлять запросы через сторонние библиотеки Windows по типу "MSCOMMLib.MSComm" для подключения через USB или использовать внешнюю компоненту для работы с WS при Ethernet подключении. И я так понял, что для Ethernet подключения ваша компонента также должна подойти как для подключения напрямую к терминалу так и для работы через промежуточное ПО "genericDriverJson", которое просто ретранслирует запрос к терминалу по средством WebSocket.

Вот собственно я и ищу готовую компоненту для реализации подключения через WebSocket для tcp протокола. Спасибо за содействие)
13. Ditron 164 21.12.21 08:29 Сейчас в теме
(12)капец, я об этом и написал изначально! БПО - библиотека подключаемого оборудования. Уже есть- тестировать не на чем(
19. just86 13.07.23 21:18 Сейчас в теме
(10)Как можно из 1с отправлять на порт устройства строку json null терминированный?
Я написал что можно напрямую отправлять пакеты на устройство, минуя вебсокеты! - как это сделать средствами 1с без ВК?
20. Ditron 164 13.07.23 22:06 Сейчас в теме
(19) если в ком порт то проблем нет «Строка» + Символ(0), а вот если на ip то без ВК никак
21. just86 17.07.23 11:07 Сейчас в теме
(20) ну мне кажется, что вся затея в том, чтоб от ком отказаться
5. z86 56 06.12.21 13:54 Сейчас в теме
а можна два термилала одновлемено подключить ?
9. Kaldor_Drago 20.12.21 20:46 Сейчас в теме
(5) В теории можно, только надо порты разные указать у терминалов и возможно каждый раз переподключаться к каждому из них или использовать два экземпляра компоненты для подключения.
А вот для подключения нескольких клиентов к терминалу этот метод не будет работать.
11. Ditron 164 20.12.21 21:24 Сейчас в теме
(5)установите несколько служб с разными параметрами подключения терминала и портов вебсокета, и подключайтесь на Здоровье, сколько терминалов столько и служб (серверов)
16. пользователь 12.02.22 14:46
Сообщение было скрыто модератором.
...
17. пользователь 31.08.22 17:34
Сообщение было скрыто модератором.
...
14. Kaldor_Drago 27.12.21 01:44 Сейчас в теме
Вопрос к автору, Версия 1 компоненты подойдет для реализации подлкючения, на нем велась реализация?
15. user1740641 08.02.22 16:27 Сейчас в теме
Добрый день! Подскажите можете ли вы помочь в подключении кассы IRAS A930 (PAX А930) к 1С:Розница (базовая) 2.3.10.43. Чтобы чеки печатались именно с 1с?

Прошу написать на электронный адрес natusik_mihalva@mail.ru
18. Bassgood 1496 20.06.23 22:17 Сейчас в теме
Разве JSON является протоколом???
22. romanagatiy 2 06.02.25 11:13 Сейчас в теме
Александр, как с Вами можно связаться? Есть аналогичная задача по подключению эквайринговых терминалов
Для отправки сообщения требуется регистрация/авторизация