Тестового режиму при роботі з терміналами як такого немає. Деякі банки мають можливість надати термінал налаштований на тестовий процесинговий центр що дозволить проводити тестування. чи доступна така можливість - рекомендовано уточнити у вашого банку напряму.
Щодо терміналів у смартфоні - опція тестового терміналу не доступна.
Незабаром буде доступний емулятор терміналу для перевірки роботи і налаштування інтеграції.
Готово, можна проводити оплати
pkg- завдання доступно в пакетному режимі. Якщо помітки немає - завдання доступно лише при окремому запиті на термінал
Завдання роботи з транзакціями:
1) Оплата ("task": 1) + pkg (чек на продаж по ПРРО);
2) Повернення ("task": 2) + pkg (чек на повернення по ПРРО);
3) Скасування проведеної операції ("task": 3) + pkg (чек на повернення по ПРРО);
4) P2P переказ ("task": 4);
5) Універсальний сервіс ("task": 5);
6) Початок проведення операції з очікуванням підтвердження/корекції ("task": 6) + pkg (в рамках даної операції повертається лише номер карти покупця);
7) Завершення проведення операції з очікуванням підтвердження/корекції ("task": 7) + pkg (фіскалізація чеку на продаж або скасування оплати на терміналі);
8) Зчитування дисконтної карти ("task": 8);
9) X-Баланс. Друк підсумків без закриття зміни на терміналі. ("task": 10) + pkg (X-звіт по ПРРО);
10) Загальний звіт. Закриття зміни на терміналі та друк підсумків. ("task": 11) + pkg (Z-звіт по ПРРО);
11) Видача коштів. Оплата товару/послуги + видача готівки. ("task": 14);
12) Оформлення оплати частинами. ("task": 15);
13) Повернення по оплаті частинами. ("task": 16).
14) Отримання проведеної раніше операції по терміналу або отримання останньої операції ("task": 17).
Таблиця доступних завдань("task") відповідно до протоколів роботи з терміналами.
Чи доступна конкретна операція на вашій моделі терміналу можна уточнити у банку.
| Протокол | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PrivatbankJSON | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BPOS1 | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| POSAPI | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| SSI JSON | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| А-Банк JSON | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
| SmartOne JSON | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| BPOS Light | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| SimPays ККМ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Таблиця доступних завдань("task") при використанні Device Manager на Android терміналі в режимі 3в1.
| Модель терміналу | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Verifone X990/Newland N950 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Castles Saturn 1000 (F2 та F3) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| SmartOne Bank/SmartOne Bank Pro | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Ingenico Axium DX4000/Ingenico Axium DX8000 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| PAX A910S | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
Таблиця доступних завдань("task") при роботі з терміналами у смартфоні.
| Банк що надає термінал у смартфоні | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Приватбанк | ✅ | ✅ | Тимчасово не працює з боку банку, але реалізовано | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Monobank | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
Службові методи:
1) Перевірка зв'язку з терміналом (GET /dm/bankping);
2) Отримати список мерчантів (GET /dm/getmerchantlist);
3) Отримати маски мерчантів (GET /dm/getmasklist);
4) Перевірка зв'язку з банком (GET /dm/bankecho);
5) Перевірка статусу поточної операції на терміналі (GET /dm/transaction-status);
6) Запит статусу останньої проведеної операції (статус операції отримується з бази даних операцій в ДМ) (GET /dm/lasttransaction).
Таблиця методів (по нумерації) відповідно до протоколів:
| Протокол | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| PrivatbankJSON | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BPOS1 | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| POSAPI | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
| SSI JSON | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| А-Банк JSON | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| SmartOne JSON | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| BPOS Light | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| SimPays ККМ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
Таблиця методів (по нумерації) при використанні Device Manager на Android терміналі в режимі 3в1:
| Модель терміналу | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Verifone X990/Newland N950 | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Castles Saturn 1000 (F2 та F3) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| SmartOne Bank/SmartOne Bank Pro | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Ingenico Axium DX4000/Ingenico Axium DX8000 | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| PAX A910S | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
Таблиця методів (по нумерації) при роботі з терміналами у смартфоні.
| Банк що надає термінал у смартфоні | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Приватбанк | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Monobank | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
В даному розділі описано додатковий функціонал який підтримується при роботі з терміналами.
info.discount яку потім можна передати як загальну знижку при фіскалізації чеку.Таблиця підтримки функціоналу (по нумерації) відповідно до протоколів:
| Протокол | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| PrivatbankJSON | ✅ | ✅ | ✅ | ✅ | ✅ |
| BPOS1 | ❌ | ✅ | ✅ | ✅ | ✅ |
| POSAPI | ❌ | ❌ | ✅ | ✅ | ❌ |
| SSI JSON | ❌ | ✅ | ❌ | ✅ | ✅ |
| А-Банк JSON | ❌ | ❌ | ❌ | ❌ | ❌ |
| SmartOne JSON | ❌ | ❌ | ❌ | ✅ | ❌ |
| BPOS Light | ❌ | ❌ | ❌ | ❌ | ❌ |
| SimPays ККМ | ❌ | ❌ | ❌ | ❌ | ❌ |
Таблиця підтримки функціоналу (по нумерації) при використанні Device Manager на Android терміналі в режимі 3в1:
| Модель терміналу | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Verifone X990/Newland N950 | ❌ | ✅ | ❌ | ✅ | ✅ |
| Castles Saturn 1000 (F2 та F3) | ❌ | ❌ | ❌ | ✅ | ❌ |
| SmartOne Bank/SmartOne Bank Pro | ❌ | ❌ | ❌ | ✅ | ❌ |
| Ingenico Axium DX4000/Ingenico Axium DX8000 | ❌ | ❌ | ❌ | ✅ | ❌ |
| PAX A910S | ❌ | ❌ | ❌ | ❌ | ❌ |
Таблиця підтримки функціоналу (по нумерації) при роботі з терміналами у смартфоні.
| Банк що надає термінал у смартфоні | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Приватбанк | ❌ | ❌ | ❌ | ✅ | ❌ |
| Monobank | ❌ | ❌ | ❌ | ✅ | ❌ |
Термінали передбачають роботу в однопоточному режимі, відповідно до цього наполегливо рекомендуємо один фізичний термінал підключати лише в один ДМ. При підключенні одного фізичного терміналу в кілька застосунків на різних пристроях - можливі помилки в роботі при отриманні терміналом конкурентних запитів з різних джерел.
В разі наравлення кількох конкурентних запитів на один термінал в одному Device Manager це все контролюється по схемі:
Пристрій зайнятий, якщо виконається - почнеться виконання наступного.За потреби кілька фізичних терміналів можна підключити в один ДМ в разі необхідності організації серверу для управління всіма терміналами по мережі. Максимальна кількість що перевірялась - 500 працюючих терміналів в одному Device Manager.
transaction_id та transaction_search/dm/lasttransaction.Інформація по транзакціям по терміналам зберігається за останні 90 днів.
Якщо потрібно синхронізувати результат з даними в терміналі напряму для частини протоколів підтримується така операція ("task": 17)
task: 17)Даний функціонал працює для терміналів шо використовують протоколи:
BPOS1PrivatBankJSONSSI JSONSmartOne JSONПояснення щодо обов'язковості ключів у запитах:
✅ - Обов'язково передавати для всіх запитів.
✔ - Обов'язковий тільки для певних запитів або при певних умовах. Умови зазначені у колонці "Зміст".
❌ - Опціональний ключ, можна передавати за необхідності.
Ключі з поміткою DEPRECATED в змісті не рекомендовано використовувати так як функціонал пов'язаний з ними може або працює некореткно, також ці ключі можуть бути вирізані з структури запиту/відповіді в подальшому. Дані ключі наявні виключно для підтримки роботи старих версій інтеграцій.
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| source | string | Назва відправника завдання. При інтеграції рекомендовано використовувати назву POS системи або компанії. Може бути порожнім. | ❌ |
| device | string | Назва терміналу або tap2phone створеного в ДМ для ідентифікації. | ✅ |
| transaction_id | string | UUID (v5). Ідентифікатор транзакції що використовується як мітка для завдання для пошуку при повторному запиті. Якщо передати значення відмінне від UUID формату, воно буде замінено на UUID що згенерував ДМ та повернуто у відповідь. Використовується лише для завдань роботи з терміналами. | ❌ |
| transaction_search | number | Параметр дій з пошуком транзакції. 0 - Пошук транзакції не відбувається, запит одразу йде на термінал. 1 - Пошук транзакції перед відправкою даних на термінал. Якщо знайдено, буде повернуто json у відповідь на запит. Якщо транзакцію не було знайдено в БД буде повернуто відповідь що такої транзакції неіснує і дії пов'язані з цією транзакцією(оплата, повернення, скасування) не будуть відправлені на термінал. 2 - Пошук транзакції перед відправкою даних на термінал. Аналогічно 1, за виключенням того, якщо транзакцію не було знайдено в БД запит буде відправлено на термінал. За замовчуванням = 0 Використовується лише для завдань роботи з терміналами і тільк в парі з transaction_id. |
❌ |
| type | number | Тип завдання. Для завдань роботи з терміналами завжди 3. |
✅ |
| pay | object | Об'єкт із даними для завдань роботи з терміналами. Використовується тільки для запитів на термінал("type": 3) та в пакетному режимі ПРРО. | ✅ |
Структура об'єкта pay (Об'єкт із даними для завдань роботи з терміналами для:
Для завдань роботи з терміналами ("type": 3) та в пакетному режимі ПРРО.
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| task | number | Номер завдання для роботи з терміналами. Номер вказується згідно списку доступних завдань по терміналам. | ✅ |
| subtask | number | Окремий додатковий функціонал який змінює логіку роботи деяких завдань. Наразі змінює логіку проведення повернень по терміналам по протоколу PrivatBankJSON. 1 - повернення виконується через операцію "Сервіс повернення" замість звичайного повренненя, 0 - виконання повренння буде залежати від налаштування "Виконувати повернення через операцію "Сервіс повернення" замість звичайного повернення." на сторінці "Додаткові налаштування терміналу". За замовчуванням = 0 | ❌ |
| cancel_on_disconnect | boolean | Параметр що визначає необхідність виконати скасування проведеної оплати чи повернення по терміналу якщо облікова програма не змогла отримати відповідь. Якщо на момент успішного завершення операції по терміналу DM не зможе повернути http відповідь бо ініціатор запиту - закрив сокет для уникнення розбіжностей буде виконано автоматичне скасування останньої оплати. true - виконувати, false (за замовчуванням) - не виконувати. | ❌ |
| sum | number | Сума операції згідно обраного завдання (task). Обов'язковий лише для операцій що потребують вказання суми (наприклад оплата). 2 знаки після коми. | ✔ |
| sumcash | number | Обов'язковий тільки для операції Оплата товару/послуги + видача готівки ("task": 14). Сума готівки до видачі покупцю. 2 знаки після коми. | ✔ |
| merch | string | Ідентифікатор організації – мерчанта. Використовується для визначення мерчанта (торгівця) по якому буде проведено оплату. У випадку якщо термінал містить кілька мерчантів і значення merch не передано, на терміналі може бути запропоновано вручну обрати зі списку мерчанта на користь якого потрібно провести оплату або буде повернуто помилку (залежить від терміналу). Перелік доступних мерчантів можна отримати через метод /dm/getmerchantlist з терміналу або дізнатись в банку. Для більшості терміналів передавати значення обов'язково. Не вказується для tap2phone. | ✔ |
| submerch | string | Тільки для PrivatBankJSON. Номер субмерчанта наданий Приватбанком. | ❌ |
| get_receipt | boolean | Тільки для BPOS1. Параметр що визначає чи потрібно отримати з терміналу сліп чек про завершену операцію в текстовому форматі, наприклад щоб роздрукувати його на чековому принтері замість друку з терміналу. Працює для всіх операцій будь то оплата, повернення чи оплата частинами. Друковану форму текстового чеку налаштовує банк. За замовчуванням false. Якщо true друкований чек буде повернуто в значенні ключа info.receipt після завершення операції. | ❌ |
| refundid | string | Обов'язковий тільки для повернення ("task": 2). Ідентифікатор платежу (RRN код 12 цифр), по якому робиться повернення. Для терміналів Монобанку в дане поле передається код авторизації (6 цифр), для терміналу у смартфоні від Приватбанку передається унікальний ідентифікатор операції на сервері банку який повертається у відповіді на успішну оплату в ключі info.cancelid. |
✔ |
| cancelid | string | Обов'язковий тільки для cкасування проведеної операції на терміналі ("task": 3). Унікальний ідентифікатор операції або номер чеку всередині терміналу. Для завдання 3 означає номер операції який потрібно скасувати, для завдання "task": 17 означає ідентифікатор чи номер операції, дані по якій потрібно отримати з терміналу. Скасування по завданню 3 можливо робити якщо після операції не було знято загальний звіт з терміналу. |
✔ |
| cancelid2 | string | Обов'язковий тільки для cкасування проведеної операції на терміналі ("task": 3) при роботі з терміналами по протоколу А-Банк JSON. Номер чеку операції з терміналу який потрібно скасувати. Передається додатково до ключа cancelid так як для терміналів А-Банку є обов'язковим 2 ключа для скасування. Скасування по завданню 3 можливо робити якщо після операції не було знято загальний звіт з терміналу. |
✔ |
| auth_code | string | Обов'язковий тільки для повернення по терміналам Монобанку ("task": 2). Так як термінали Монобанку повернення виконують по коду авторизації можна або код авторизації передавати в refundid або зробити універсальну схему: в refundid передавати RRN код, а у auth_code - код авторизації. В такому випадку не залежно від того якого банку термінал - повернення завжди будуть працювати. |
✔ |
| rec_name | string | Обов'язковий тільки для BPOS1 та операції P2P переказ ("task": 4). Ім'я отримувача для проведення переказу. Обов'язково латиницею, інакше буде помилка при проведенні переказу. |
✔ |
| rec_surname | string | Обов'язковий тільки для BPOS1 та операції P2P переказ ("task": 4). Прізвище отримувача для проведення переказу. Обов'язково латиницею, інакше буде помилка при проведенні переказу. |
✔ |
| rec_pan | string | Обов'язковий тільки для BPOS1 та операції P2P переказ ("task": 4). Номер картки отримувача для проведення переказу. |
✔ |
| installment_id | number | Обов'язковий тільки для BPOS1 та операції оформлення оплати частинами ("task": 15). Тип розстрочки. 1 - Розстрочка за рахунок покупця2 - Розстрочка за рахунок торгівця. |
✔ |
| amountOfParts | number | Обов'язковий тільки для оформлення оплати частинами ("task": 15). Кількість частин на яку розділяється платіж. |
✔ |
| agreementNum | string | Обов'язковий тільки для PrivatBankJSON та операції Повернення по оплаті частинами ("task": 16). Номер договору, по якому робиться повернення. Повертає банк у відповідь на успішне оформлення оплати частинами. |
✔ |
| param | string | Обов'язковий тільки для PrivatBankJSON та операції Універсальний сервіс ("task": 5). Кількість платежів в разі оформлення миттєвої розстрочки або оплати частинами. |
✔ |
| srvNum | string | Обов'язковий тільки для PrivatBankJSON та операції Універсальний сервіс ("task": 5). Номер сервісу, номери можна дізнатись в Приватбанку. |
✔ |
| oper_action | number | Обов'язковий тільки для завершення проведення операції з очікуванням підтвердження/корекції ("task": 7). Подальша дія з оплатою0 - скасувати оплату (за замовчуванням якщо не передано) 1 - продовжити оплату (карта повторно не прикладається). |
✔ |
Ключі з поміткою DEPRECATED в змісті не рекомендовано використовувати так як функціонал пов'язаний з ними може або працює некореткно, також ці ключі можуть бути вирізані з структури запиту/відповіді в подальшому. Дані ключі наявні виключно для підтримки роботи старих версій інтеграцій.
| Тег | Тип json даних | Зміст |
|---|---|---|
| transaction_id | string | Ідентифікатор операції. Аналогічне значенню що передано в запиті, за виключенням випадків коли передане в запиті значення не відповідає формату UUID (v5). В такому разі буде повернуто значення згенероване ДМ. |
| transaction_search | number | Дії з пошуком транзакції. Аналогічне значенню що передано в запиті. |
| info | object | Об'єкт із даними отриманими після завершення операції по терміналу. |
| ver | number | DEPRECATED. Версія схеми. Завжди дорівнює 6. (повертається лише для сумісності з попередніми версіями) |
| resp_ver | number | Версія JSON відповіді. Змінюється на +1 з новим релізом застосунку якщо у відповіді повертатимуться нові дані. |
| source | string | Назва відправника завдання. Наразі завжди порожнє. |
| device | string | Назва пристрою, в даному випадку назва терміналу або tap2phone, створеного в ДМ до якого був запит. |
| tag | string | Для завдань роботи з терміналами завжди буде порожнім. |
| type | number | Для завдань роботи з терміналами завжди буде 3. |
| task | number | Номер завдання. Дорівнює тому ж значенню що і в запиті. |
| task_status | number | Значення статусу виконання завдання: 1 - операцію виконано успішно 3 - помилка при оплаті, при цьому значення res завжди буде більше 0. |
| dt | string | Дата та час виконання завдання у форматі рядка: YYYYMMDDHHMMSSTTT |
| res | number | Код результату виконання завдання: 0 = ОК, >0 код помилки |
| res_action | number | Подальші рекомендовані дії для дотримання транзакційної цілісності. Детальніше. |
| errortxt | string | Текстова інформація про помилку в ДМ або помилка отримана від терміналу. Якщо res = 0 буде порожнім |
| aq_errortxt | string | Для завдань роботи з терміналами завжди буде порожнім. |
| warnings | array | Для завдань роботи з терміналами завжди буде порожнім. |
Структура об'єкта info (Об'єкт із даними отриманими після завершення операції по терміналу.)
| Тег | Тип json даних | Зміст |
|---|---|---|
| dt | string | Дата та час виконання запиту терміналом у форматі рядка. Формат дати буде різним залежно від того як її повертає конкретний термінал. |
| termid | string | Код або ідентифікатор банківського термінала. |
| bankid | string | Ідентифікатор торгівця у екваєра (в системі банку), або номер чи ідентифікатор мерчанту. |
| payid | string | Номер/ідентифікатор платіжної операції або код авторизації. |
| cancelid | string | Ідентифікатор операції або внутрішній номер чеку всередині терміналу. Використовується в подальшому в разі необхідності скасування операції оплати чи повернення ("task": 3) або для повторного пошуку даних про операцію ("task": 17) |
| cancelid2 | string | Повертається тільки при роботі з терміналами по протоколу А-Банк JSON. Внутрішній номер чеку всередині терміналу. Використовується в подальшому разом із значенням cancelid в разі необхідності скасування операції оплати чи повернення ("task": 3) |
| refundid | string | Унікальний ідентифікатор транзакції (RRN код) який в подальшому використовується для повернення. |
| cardmask | string | Замаскований номер платіжного засобу картки. |
| paysys | string | Назва платіжної системи. |
| sum | number | Сума операції. 2 знаки після коми. |
| sumcash | number | Сума видачі готівки. Дорівнює 0 для всіх операцій окрім видачі коштів. Оплата товару/послуги + видача готівки. ("task": 14). 2 знаки після коми. |
| discount | number | Сума знижки з оплати на рівні банку при проведенні операції. 2 знаки після коми. |
| curr | string | Валюта операції. Наразі завжди дорівнює "ГРН" |
| restxt | string | Результат виконання операції терміналом. Повертається лише для частини протоколів роботи з терміналами. |
| sliptxt | string | DEPRECATEDНаразі завжди має пусте значення. |
| isprint | number | DEPRECATEDНаразі завжди = 1. |
| devinfo | string | DEPRECATEDНаразі завжди має пусте значення. |
| deb_amount | number | Загальна сума оплат/продажів за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| deb_num | number | Кількість операцій оплат за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| cred_amount | number | Загальна сума операцій повернення за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| cred_num | number | Кількість операцій повернення за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| canc_amount | number | Загальна сума скасованих операцій за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| canc_num | number | кількість скасованих операцій за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| tx_num | number | Загальна кількість всіх операцій за день. Повертається лише при виконанні операцій X-Баланс (Друк підсумків без закриття зміни на терміналі.) ("task": 10) або Загальний звіт (Закриття зміни на терміналі та друк підсумків.) ("task": 11). Якщо протокол терміналу не підтримує повернення підсумків, а лише друк значення буде 0. |
| receipt | string | Друкована форма сліп чеку що друкує термінал у вигляді тексту з форматуванням. Повертається не для всіх протоколів роботи з терміналами. |
| hstFld63Sf89 | string | Тільки для PrivatBankJSON. Дані з хоста(банку). |
| merch | string | Внутрішній омер мерчанту в терміналі. |
| submerch | string | Тільки для PrivatBankJSON. Номер субмерчанта отриманий від Приватбанку. |
| reference | string | Тільки для терміналів по протоколу А-Банк JSON - інакше буде порожнє значення. Порядковий номер операції на терміналі (враховуються всі успішні і неуспішні запити на термінал). |
| purchase_dt | string | Дата та час оплати на терміналі у форматі рядка. Формат: YYYYMMDDhhmmss |
| pan | string | DEPRECATEDНаразі завди порожнє. |
| acquirerid | string | DEPRECATEDНаразі завди порожнє. |
| agreementNum | string | Тільки для PrivatBankJSON та тільки у випадку використання універсального сервісу ("task": 5). Номер договору після завершення оформленням миттєвої розстрочки чи оплати частинами. |
| scenario_data | string | Тільки для BPOS1 та тільки у випадку використання операції через сценарії ("task": 4, "task": 8, "task": 14, "task": 15). XML відповідь з результатом виконання операції від терміналу в форматі рядка. |
| transaction_id | string | Внутрішній ідентифікатор операції. |
| oper_jwt | string | Тільки при використання tap2phone від Приватбанку. JWT токен операції по якому можна виконати повторний запит результату виконаної оплати чи повернення. |
| commission | number | Сума комісії з оплати (до 2-х знаків після коми). Так як термінали її не повертають розраховується автоматично згідно суми оплати і відсотка комісії банку що був вказаний при налаштуванні терміналу. |
| bank_trn_id | string | Bank transaction ID або унікальний внутрішній номер карткової операції, наданий терміналом, для подальшої доставки чеку у застосунок банку по програмі Національний чек (єЧек). Потрібно передати при фіскалізації чеку у ключ fiscal.bank_trn_id. Якщо термінал не підтримує повернення даного ідентифікатора або банк покупця не долучився до програми Національний чек - значення буде порожнє. |
"task": 1) {
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 1,
"merch": "1",
"get_receipt": true,
"cancel_on_disconnect": false,
"sum": 17.56
}
}
{
"transaction_id": "1dca7339-de6a-4846-958a-ea89e0b2720e",
"transaction_search": 0,
"info": {
"dt": "26.02.2026 15:14:48",
"termid": "S1K90HCY",
"bankid": "S1K90HCY",
"bankname": "ПриватБанк",
"payid": "070133",
"cancelid": "000545",
"refundid": "108646576676",
"cardmask": "522119228XXXXXX0",
"paysys": "MasterCard",
"sum": 17.56,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "APPROVED",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": " Вчасно Каса \n ш.Харкiвське,буд.201/203 \n м.Київ \n ТОВ ВЧАСНО СЕРВIС \n 41231992 \nОПЛАТА\nСУМА: 1.00 ГРН\nПiдпис власника картки не потрiбен!\nMASTERCARD XXXXXXXXXXXX8620 \nAID: A0000000041010\nТЕРМIНАЛ: S1K90HCY 26/02/2026 15:14:48\nКОД АВТОРИЗАЦІЇ: 070133 ЧЕК N: 545\nRRN: 108646576676 \nEXTERNAL RRN: \n(c) Ingenico Group TA7E v.157.102 04/07/\nP5\n",
"hstFld63Sf89": "",
"merch": "S1K90HCY",
"submerch": "",
"reference": "",
"purchase_dt": "20260226151448",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"commission": 0.01,
"transaction_id": "cc507ba9-258f-47db-a8f5-73235171dfea",
"oper_jwt": "",
"bank_trn_id": "h7v108646576676"
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 1,
"dt": "20260226151448966",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 3,
"type": 3,
"task": 1,
"dt": "20260211114545411",
"res": 5067,
"res_action": 1,
"errortxt": "Помилка при з'єднанні за вказаною адресою: 172.28.13.3",
"aq_errortxt": "",
"warnings": []
}
"task": 2) Індивідуальні особливості операції по банку/протоколу:
На терміналах Приватбанку повернення може здійснюватись 2-ма способами:
Задачі у класичного повернення та сервісу повернення однакові, але сервіс повернення більш новий та підключається за замовчуванням, тому що має кілька переваг у порівнянні з класичним поверненням.
Сервіс повернення має наступні переваги:
Для переключення між звичайним поверненням і сервісом доступні 2 варіанти (на вибір):
Через налаштування терміналу. Переключити налаштування "Виконувати повернення через операцію "Сервіс повернення" замість звичайного повернення." через пункт "Додаткові налаштування терміналу".
Передати ключ pay.subtask зі значенням 1 в запиті на повернення:
{
"source": "API",
"device": "Priv",
"type": 3,
"pay": {
"task": 2,
"subtask": 1,
"sum": 1,
"refundid": "111239413393"
}
}
Уточнення: ключ "subtask": 1, в запиті ігнорує налаштування терміналу. Тобто якщо в налаштуваннях терміналу не увімкнено перемикач на використання сервісу повернення, але в запиті вказано "subtask": 1 - буде проводитись повернення саме через сервіс повернення.
{
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 2,
"merch": "ACDCSSI10000000",
"refundid": "944409192371",
"sum": 17.56
}
}
{
"transaction_id": "21a9fe13-721b-428f-ab18-56f2b5ff079f",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 11:51:20",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "997549",
"cancelid": "000034",
"refundid": "944409192374",
"cardmask": "438752******7008",
"paysys": "VISA",
"sum": 17.56,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211115120",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "21a9fe13-721b-428f-ab18-56f2b5ff079f",
"oper_jwt": "",
"commission": 0.23
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 2,
"dt": "20260211115128321",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "e1e494b7-ffd1-4c5b-bdcb-2bb82053eae7",
"transaction_search": 0,
"info": {
"dt": "",
"termid": "",
"bankid": "",
"bankname": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "",
"restxt": "",
"sliptxt": "",
"isprint": 0,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "e1e494b7-ffd1-4c5b-bdcb-2bb82053eae7",
"oper_jwt": "",
"commission": 0.23
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 3,
"type": 3,
"task": 2,
"dt": "20260211115152473",
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: Відсутні обов’язкові поля. Код відмови: E04",
"aq_errortxt": "",
"warnings": []
}
"task": 3) {
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 3,
"merch": "ACDCSSI10000000",
"cancelid": "000037",
"cancelid2": "abc13674-3e90-4962-bd2b-8e6b20beae32"
}
}
{
"transaction_id": "abc13674-3e90-4962-bd2b-8e6b20beae32",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 11:53:08",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "997564",
"cancelid": "000038",
"refundid": "944409192389",
"cardmask": "438752******7008",
"paysys": "VISA",
"sum": 17.56,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211115308",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "abc13674-3e90-4962-bd2b-8e6b20beae32",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 3,
"dt": "20260211115319426",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "cd7a824e-9a77-4b60-a907-394e0ec090ca",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 11:53:29",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "",
"cancelid": "000037",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 17.56,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211115329",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "cd7a824e-9a77-4b60-a907-394e0ec090ca",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 3,
"dt": "20260211115336013",
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: Загальна помилка операціі. Деталі: Операцію не виконано. Код відмови: E21",
"aq_errortxt": "",
"warnings": []
}
"task": 4) {
"type": 3,
"source": "TEST",
"device": "1000102-POS",
"pay": {
"task": 4,
"merch": 3,
"sum": 17,
"rec_name": "Test",
"rec_surname": "Testovich",
"rec_pan": "4441111111111111"
}
}
{
"transaction_id": "1faa877a-8a7b-5037-af58-1c992ae73b85",
"transaction_search": 0,
"info": {
"dt": "250215134340",
"termid": "50977824",
"bankid": "40938929",
"bankname": "Ощадбанк",
"payid": "918639",
"cancelid": "2",
"refundid": "504632367210",
"cardmask": "4441111111111111",
"paysys": "VISA",
"sum": 0,
"sumcash": 0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0,
"deb_num": 0,
"cred_amount": 0,
"cred_num": 0,
"canc_amount": 0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "40938929",
"submerch": "",
"reference": "",
"purchase_dt": "20250215134340",
"pan": "",
"acquirerid": ""
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "1000102-POS",
"tag": "",
"task_status": 1,
"type": 0,
"task": 4,
"dt": "20250215134343531",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 3,
"type": 3,
"task": 4,
"dt": "20260211120421606",
"res": 5029,
"res_action": 0,
"errortxt": "Термінал 7777777 (Monobank(SSI JSON)) не підтримує завдання з типом 4",
"aq_errortxt": "",
"warnings": []
}
"task": 5) Всі деталі по даній операції розміщені окремо на сторінці:
"task": 6) та завершення проведення операції з очікуванням підтвердження/корекції ("task": 7) Всі деталі по даним операціям розміщені окремо на сторінці:
"task": 8) {
"device": "term",
"type": 3,
"pay": {
"task": 8
}
}
{
"transaction_id": "e6dda3d6-05aa-4339-bf60-efc4fdad6224",
"transaction_search": 0,
"info": {
"dt": "000000000000",
"termid": "",
"bankid": "",
"bankname": "Ощадбанк",
"payid": "",
"cancelid": "0",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0,
"sumcash": 0,
"curr": "ГРН",
"restxt": "ОПЕРАЦIЯ УСПІШНА",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0,
"deb_num": 0,
"cred_amount": 0,
"cred_num": 0,
"canc_amount": 0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "<ActionScenarioResponse> <ResultCode>0</ResultCode> <Result>УСПІШНА</Result> <CardPanHash>4B03E93E58A52459DC6762C5BF7D1BBA7A081E65E69E8DD118B5B6417FF900C0</CardPanHash> <Discount>Ваша знижка 20,00%</Discount></ActionScenarioResponse>"
},
"resp_ver": 4,
"source": "",
"device": "term",
"tag": "",
"task_status": 1,
"type": 3,
"task": 8,
"dt": "20250331132427449",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "02fe4e03-b2d1-490c-b77f-80597b3ff059",
"transaction_search": 0,
"info": {
"dt": "000000000000",
"termid": "",
"bankid": "",
"bankname": "Ощадбанк",
"payid": "",
"cancelid": "0",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0,
"sumcash": 0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0,
"deb_num": 0,
"cred_amount": 0,
"cred_num": 0,
"canc_amount": 0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "<ActionScenarioResponse> <ResultCode>1002</ResultCode> <Result>НЕ УСПІШНА</Result></ActionScenarioResponse>"
},
"resp_ver": 4,
"source": "",
"device": "term",
"tag": "",
"task_status": 3,
"type": 3,
"task": 8,
"dt": "20250331134315866",
"res": 5002,
"res_action": 0,
"errortxt": "Помилка терміналу: EMV Decline",
"aq_errortxt": "",
"warnings": []
}
"task": 10) Для терміналів по протоколу BPOS1 якщо не передати номер мерчанта в запиті або передати 0 - буде одночасно сформовано звіт із сумами по всім мерчантам (торгівцям) у терміналі.
{
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 10,
"merch": "ACDCSSI10000000"
}
}
{
"transaction_id": "369cba67-b4c5-49f3-990d-11b04e197c75",
"transaction_search": 0,
"info": {
"dt": " ",
"termid": "",
"bankid": "",
"bankname": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 87.8,
"deb_num": 5,
"cred_amount": 35.12,
"cred_num": 1,
"canc_amount": 0.0,
"canc_num": 2,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "20260211122155",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "369cba67-b4c5-49f3-990d-11b04e197c75",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 10,
"dt": "20260211122155140",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
"task": 11) Для терміналів по протоколу BPOS1 якщо не передати номер мерчанта в запиті або передати 0 - буде одночасно закрита зміна по всім мерчантам (торгівцям) у терміналі.
{
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 11,
"merch": "ACDCSSI10000000"
}
}
{
"transaction_id": "dd11bd00-993a-4bb9-944b-b35165ad0ba6",
"transaction_search": 0,
"info": {
"dt": " ",
"termid": "",
"bankid": "",
"bankname": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 87.8,
"deb_num": 5,
"cred_amount": 35.12,
"cred_num": 1,
"canc_amount": 0.0,
"canc_num": 2,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "20260211122240",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "dd11bd00-993a-4bb9-944b-b35165ad0ba6",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 11,
"dt": "20260211122240191",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
"task": 14) "task": 14)
- Чек продажу ("task": 1)
Для терміналів по протоколу BPOS1 може проводитись без оплати за товар ("sum": 0), в такому разі в запит передається лише сума коштів до видачі (sumcash).
{
"source": "DM_API",
"device": "7777777",
"type": 3,
"pay": {
"task": 14,
"sum": 200,
"sumcash": 400,
"merch": "ACDCSSI10000000"
}
}
{
"transaction_id": "c534ee3e-9740-4646-a59d-4cc080928282",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 12:24:01",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "997576",
"cancelid": "000039",
"refundid": "944409192401",
"cardmask": "438752******7008",
"paysys": "VISA",
"sum": 600.0,
"discount": 0.0,
"sumcash": 400.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211122401",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "c534ee3e-9740-4646-a59d-4cc080928282",
"oper_jwt": "",
"commission": 2.6
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 14,
"dt": "20260211122419841",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "c534a9c3-5702-48c5-82fe-dff4ed476b42",
"transaction_search": 0,
"info": {
"dt": "",
"termid": "",
"bankid": "",
"bankname": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "",
"restxt": "",
"sliptxt": "",
"isprint": 0,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "c534a9c3-5702-48c5-82fe-dff4ed476b42",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 3,
"type": 3,
"task": 14,
"dt": "20260211122449540",
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: Некоректний формат обов’язкових полів. Деталі: Значення [transAmount] має бути позитивним. Код відмови: E09",
"aq_errortxt": "",
"warnings": []
}
"task": 15) Всі деталі по даній операції розміщені окремо на сторінці:
"task": 16) Всі деталі по даній операції розміщені окремо на сторінці:
"task": 17) "transaction_id""oper_jwt""cancelid".Отримання останньої операції працює наступним чином:
Отримати конкретну операцію по її номеру або transaction_id:
{
"source": "TEST",
"device": "7777777",
"type": 3,
"pay": {
"task": 17,
"cancelid": "1112"
}
}
Отримати останню успішно проведену операцію:
{
"ver": 6,
"source": "DM_API",
"device": "7777777",
"type": 3,
"pay": {
"task": 17
}
}
{
"transaction_id": "0a8c28aa-b4ef-4f62-b7bb-c5dffdd75bc8",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 12:26:43",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "997579",
"cancelid": "000040",
"refundid": "944409192404",
"cardmask": "438752******7008",
"paysys": "VISA",
"sum": 100.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211122643",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "df646164-8a67-4a48-86bd-46c57a1087d3",
"oper_jwt": "",
"commission": 1.3
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 17,
"dt": "20260211122827847",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "969fc162-2058-4de2-932d-9d6788d89466",
"transaction_search": 0,
"info": {
"dt": "",
"termid": "",
"bankid": "",
"bankname": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "",
"restxt": "",
"sliptxt": "",
"isprint": 0,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "",
"submerch": "",
"reference": "",
"purchase_dt": "",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"transaction_id": "969fc162-2058-4de2-932d-9d6788d89466",
"oper_jwt": "",
"commission": 0.0
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 3,
"type": 3,
"task": 17,
"dt": "20260211122719661",
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: Загальна помилка операціі. Деталі: Операцію з таким UID не знайдено. Код відмови: E21",
"aq_errortxt": "",
"warnings": []
}
В даному розділі розміщені додаткові методи при роботі з терміналами. Дані методи мають окремий ендпоінт (не через /dm/execute як завдання) і слугують більше для додаткових перевірок чи налаштувань в процесі.
GET /dm/bankping) | Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
curl --location 'http://localhost:3939/dm/bankping?dev_name=terminal'
Повертає аналогічний json як і при успішному виконанні транзакції.
Якщо пінг проведено успішно - "res" = 0
{
"transaction_id": "",
"transaction_search": 0,
"info": {
"dt": "",
"termid": "",
"bankid": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0,
"curr": "",
"restxt": "",
"sliptxt": "",
"isprint": 0,
"devinfo": "Connection succeeded",
"deb_amount": 0,
"deb_num": 0,
"cred_amount": 0,
"cred_num": 0,
"canc_amount": 0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": ""
},
"ver": 6,
"source": "",
"device": "terminal",
"tag": "",
"type": 0,
"task": 0,
"dt": "20250327150226311",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
GET /dm/getmerchantlist)| Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
curl --location 'http://localhost:3939/dm/getmerchantlist?dev_name=terminal'
Повертає аналогічний json як і при успішному виконанні транзакції, але з 2-ма відмінностями.
infomerchListValue| Тег | Тип json даних | Зміст |
|---|---|---|
| merchListValue | string | DEPRECATEDСписок мерчантів та їх кодів в даному терміналі. |
| merchList | array | Масив об'єктів з інформацією про мерчантів в терміналі. Кожен об'єкт в масиві є окремим мерчантом з його найменуванням і кодом. |
Структура об'єктів масиву merchList (Масив об'єктів з інформацією про мерчантів в терміналі.)
| Тег | Тип json даних | Зміст |
|---|---|---|
| num | string | Номер або код мерчанта. Може бути як числовий одноцифровий так і буквенний залежно від терміналу і протоколу. Використовується для виконання запитів на термінал в значенні ключа merch та при налаштуванні пакетного режиму. |
| id | string | Ідентифікатор або назва мерчанта для розуміння що це за мерчант. Для терміналів які не повертають назви для ідентифікації в даному полі буде вказано: "МерчантN" де N порядковий номер мерчанту. |
{
"merchListValue": "MerchantList: { \"ACDCSSI10000000\": \"Name\" }",
"merchList": [
{
"num": "ACDCSSI10000000",
"id": "Name"
}
],
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 0,
"type": 0,
"task": 0,
"dt": "",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
GET /dm/getmasklist)| Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
curl --location 'http://localhost:3939/dm/getmasklist?dev_name=terminal'
Повертає аналогічний json як і при успішному виконанні транзакції, але з 2-ма відмінностями.
infomerchListValue| Тег | Тип json даних | Зміст |
|---|---|---|
| maskListValue | string | Список масок мерчантів та їх кодів в даному терміналі. |
{
"maskListValue": "MaskList\" : {\"1\" : \"S1K803CD\",\"10\" : \"G1K823CD\",\"2\" : \"P1K8C3CD\",\"3\" : \"I1K803CD\",\"4\" : \"I1K803CD\",\"5\" : \"IGK803CD\",\"6\" : \"X1K813CD\",\"7\" : \"IGK803CD\",\"8\" : \"IPK803CD\",\"9\" : \"CALLBANK\"}",
"ver": 6,
"source": "",
"device": "ICT220",
"tag": "",
"type": 0,
"task": 0,
"dt": "",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
GET /dm/bankecho)| Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
curl --location 'http://localhost:3939/dm/bankecho?dev_name=terminal'
Повертає аналогічний json як і при успішному виконанні транзакції, але з порожніми даними в об'єкті info.
{
"transaction_id": "",
"transaction_search": 0,
"info": {
"dt": "",
"termid": "",
"bankid": "",
"payid": "",
"cancelid": "",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 0,
"curr": "",
"restxt": "",
"sliptxt": "",
"isprint": 0,
"devinfo": "",
"deb_amount": 0,
"deb_num": 0,
"cred_amount": 0,
"cred_num": 0,
"canc_amount": 0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": ""
},
"ver": 6,
"source": "",
"device": "desk3200",
"tag": "",
"type": 0,
"task": 0,
"dt": "20230327153214609",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
GET /dm/transaction-status)Можливі статуси (код статусу і повідомлення):
0 'Статус операції наразі недоступний';
1 'Картка прочитана';
2 'Використано картку з чипом';
3 'Зв'язок з банком';
4 'Очікування дій касира';
5 'Друк чеку.';
6 'Необхідно ввести PIN-код';
7 'Картку вилучено з терміналу';
8 'EMV multi aid’s';
9 'Очікую картку';
10 'Опрацювання, зачекайте';
11 'Коригування транзакції';
| Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
curl --location 'http://localhost:3939/dm/transaction-status?dev_name=terminal'
| Тег | Тип json даних | Зміст |
|---|---|---|
| status_code | string | Внутрішній код статусу на терміналі. |
| status_message | string | Повідомлення в якому статусі знаходиться термінал. |
{
"res": 0,
"res_action": 0,
"errortxt": "",
"status_code": "9",
"status_message": "Очікую картку"
}
{
"res": 5069,
"res_action": 1,
"errortxt": "Немає активних транзакцій по терміналу",
"status_code": "",
"status_message": ""
}
/dm/lasttransaction).| Параметр | Зміст | Обов'язковий |
|---|---|---|
| dev_name | Назва терміналу, створеного в ДМ. | ✅ |
| status | Яку операцію повернути. 0 або інше значення, або не передано - остання транзакція по терміналу не залежно від статусу (успішна чи помилка) 1 - остання успішна транзакція |
❌ |
curl --location 'http://localhost:3939/dm/lasttransaction?dev_name=terminal&status=1'
Аналогічна відповіді на оригінальний запит по терміналу на оплату повернення чи іншу операцію.
{
"transaction_id": "35ac41b8-bb68-481a-b2f0-e27835197d1a",
"transaction_search": 0,
"info": {
"dt": "11/02/2026 12:26:43",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "997579",
"cancelid": "000040",
"refundid": "944409192404",
"cardmask": "438752******7008",
"paysys": "VISA",
"sum": 100.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260211122643",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"commission": 0.0,
"transaction_id": "df646164-8a67-4a48-86bd-46c57a1087d3",
"oper_jwt": ""
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 17,
"dt": "20260211122839113",
"res": 0,
"res_action": 0,
"errortxt": "",
"aq_errortxt": "",
"warnings": []
}
{
"transaction_id": "aebe86ba-84b3-4f37-9f75-f9977e5fa8ce",
"transaction_search": 0,
"info": {
"dt": "12/02/2026 11:38:19",
"termid": "ACDCSSI1",
"bankid": "ACDCSSI10000000",
"bankname": "АТ Універсал банк",
"payid": "",
"cancelid": "000040",
"refundid": "",
"cardmask": "",
"paysys": "",
"sum": 10.0,
"discount": 0.0,
"sumcash": 0.0,
"curr": "ГРН",
"restxt": "",
"sliptxt": "",
"isprint": 1,
"devinfo": "",
"deb_amount": 0.0,
"deb_num": 0,
"cred_amount": 0.0,
"cred_num": 0,
"canc_amount": 0.0,
"canc_num": 0,
"tx_num": 0,
"receipt": "",
"hstFld63Sf89": "",
"merch": "ACDCSSI10000000",
"submerch": "",
"reference": "",
"purchase_dt": "20260212113819",
"pan": "",
"acquirerid": "",
"agreementNum": "",
"scenario_data": "",
"commission": 0.0,
"transaction_id": "aebe86ba-84b3-4f37-9f75-f9977e5fa8ce",
"oper_jwt": ""
},
"ver": 6,
"resp_ver": 4,
"source": "",
"device": "7777777",
"tag": "",
"task_status": 1,
"type": 3,
"task": 1,
"dt": "20260212113822564",
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: Операцію не виконано. Деталі: Операцію відмінено. Код відмови: E12",
"aq_errortxt": "",
"warnings": []
}