Тема: Робота з еквайринг терміналами
Добрий шановне Панство.
Підскажіть може хто працював з терміналами, як от приватбанк через делфу. як правильно передавати команди та отримувати відповіді.
Буду вдячний.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Pascal/Delphi → Робота з еквайринг терміналами
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Добрий шановне Панство.
Підскажіть може хто працював з терміналами, як от приватбанк через делфу. як правильно передавати команди та отримувати відповіді.
Буду вдячний.
Добрий шановне Панство.
Підскажіть може хто працював з терміналами, як от приватбанк через делфу. як правильно передавати команди та отримувати відповіді.
Буду вдячний.
В якому розумінні правильно?
не можу зрозуміти як передати команду Json на термінал через ip клієнт
Там же мабуть якийсь REST. Для нього є стандартна бібліотека: https://docwiki.embarcadero.com/RADStud … nt_Library
Так є опис протоколу. Потрібно передавати і отримувати команди через ір протокол. Але момент в тому що передача через бінарний потік. Відправляти потрібно потік байт а не текст. Переформатувати запит в потік не проблема як і трансформувати в зворотньому напрямку. А от відправити і почитати не знаю як.
не можу зрозуміти як передати команду Json на термінал через ip клієнт
Ви робите по документації до якоїсь API? Якщо так то давайте посилання, так буде легше зрозуміти що вам треба зробити.
Якщо бінарний протокол, то можна скористатись бібліотекою Indy. Кидаєте на форму TIdTCPClient, прописуєте параметри, і потім десь один раз робите IdTCPClient1.Connect. А кожного разу, коли треба відправити команду, робите IdTCPClient1.IOHandler.Write(...) і IdTCPClient1.IOHandler.WriteBufferFlush. Параметри Write залежно від ваших вподобань. Це може бути потік, буфер, будь що. Зчитування можна повісити на таймер, типу такого:
while IdTCPClient1.IOHandler.Readable(1) do
... := IdTCPClient1.IOHandler.ReadByte;
Зчитування безперервним потоком байт є трохи проблематичним, бо за один раз ви можете прочитати лише частину пакету інформації, або одразу кілька пакетів. Вам треба буде самому розбиратися, де там кінець одного пакету, а де початок наступного, і склеювати шматочки. Хоча якщо протокол зроблений нормально, то у кожного пакету є обов'язковий заголовок, в якому прописана його довжина, тому розібратись не важко. Також можна аналізувати затримку з часу отримання останніх даних. Приміром, якщо пройшло уже п'ять хвилин з останнього читання, то напевне кінець попереднього пакету загубився, і щойно отримані дані це уже новий пакет.
Якщо протокол простий, то можна використати TIdCmdTCPClient, який допоможе вам парсити команди та їх аргументи.
Також зверніть увагу на події цих компонентів. Вони допоможуть правильно опрацювати неочікуваний обрив зв'язку і таке інше.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися