1

Тема: Робота з еквайринг терміналами

Добрий шановне Панство.
Підскажіть може хто працював з терміналами, як от приватбанк через делфу. як правильно передавати команди та отримувати відповіді.
Буду вдячний.

2

Re: Робота з еквайринг терміналами

cinimvse написав:

Добрий шановне Панство.
Підскажіть може хто працював з терміналами, як от приватбанк через делфу. як правильно передавати команди та отримувати відповіді.
Буду вдячний.

В якому розумінні правильно?

3

Re: Робота з еквайринг терміналами

не можу зрозуміти як передати команду Json на термінал через ip клієнт

4

Re: Робота з еквайринг терміналами

Там же мабуть якийсь REST. Для нього є стандартна бібліотека: https://docwiki.embarcadero.com/RADStud … nt_Library

Подякували: leofun011

5

Re: Робота з еквайринг терміналами

Так є опис протоколу. Потрібно передавати і отримувати команди через ір протокол. Але момент в тому що передача через бінарний потік. Відправляти потрібно потік байт а не текст. Переформатувати запит в потік не проблема як і трансформувати в зворотньому напрямку. А от відправити і почитати не знаю як.

6

Re: Робота з еквайринг терміналами

cinimvse написав:

не можу зрозуміти як передати команду Json на термінал через ip клієнт

Ви робите по документації до якоїсь API? Якщо так то давайте посилання, так буде легше зрозуміти що вам треба зробити.

Подякували: leofun011

7

Re: Робота з еквайринг терміналами

Якщо бінарний протокол, то можна скористатись бібліотекою Indy. Кидаєте на форму TIdTCPClient, прописуєте параметри, і потім десь один раз робите IdTCPClient1.Connect. А кожного разу, коли треба відправити команду, робите IdTCPClient1.IOHandler.Write(...) і IdTCPClient1.IOHandler.WriteBufferFlush. Параметри Write залежно від ваших вподобань. Це може бути потік, буфер, будь що. Зчитування можна повісити на таймер, типу такого:

while IdTCPClient1.IOHandler.Readable(1) do
  ... := IdTCPClient1.IOHandler.ReadByte;

Зчитування безперервним потоком байт є трохи проблематичним, бо за один раз ви можете прочитати лише частину пакету інформації, або одразу кілька пакетів. Вам треба буде самому розбиратися, де там кінець одного пакету, а де початок наступного, і склеювати шматочки. Хоча якщо протокол зроблений нормально, то у кожного пакету є обов'язковий заголовок, в якому прописана його довжина, тому розібратись не важко. Також можна аналізувати затримку з часу отримання останніх даних. Приміром, якщо пройшло уже п'ять хвилин з останнього читання, то напевне кінець попереднього пакету загубився, і щойно отримані дані це уже новий пакет.
Якщо протокол простий, то можна використати TIdCmdTCPClient, який допоможе вам парсити команди та їх аргументи.
Також зверніть увагу на події цих компонентів. Вони допоможуть правильно опрацювати неочікуваний обрив зв'язку і таке інше.

8

Re: Робота з еквайринг терміналами

Дякую спробую