Система взаємодії облікових систем із базою даних сайту medicard.com.ua
Загальна інформація про роботу сервісу Медікард
Касове місце в аптеці — це робоче місце касира, яке далі у тексті називається КАСА. Кожній аптеці присвоюється унікальний код. Якщо в аптеці є кілька касових місць, то всі вони мають однаковий код аптеки.
База даних (БД) працює у системі MySQL версії не нижче 5.0. Кодування БД, таблиць і текстових полів — UTF-8.
Структура БД побудована за принципами Першої нормальної форми (1NF). Крім основних полів, таблиці містять службові (додаткові) поля, наприклад поле — дату запису. Такі поля використовуються для масштабованості системи, усунення можливих помилок та забезпечення зручності під час роботи з даними.
Вся інформація у базі зберігається у відкритому вигляді, окрім паролів користувачів карток, які шифруються за алгоритмом MD5. Відновлення пароля можливе лише через створення нового.
API сервісу Медікард регулює доступність продажу: може забороняти або дозволяти операцію, встановлюючи розмір знижки від 0% до 99,99% відповідно до параметрів картки покупця.
Варіантні взаємодії з сервісом Медікард
Формат доступу: API
Протокол: HTTP
Пароль доступу: не використовується
Формат даних: XML (кодування UTF-8)
Заголовок XML-документа:
<?xml version="1.0" encoding="UTF-8"?>
Тип запиту: POST
Передача даних: у тілі POST-запиту передається змінна medicard, значення якої кодується та декодується за допомогою функції base64.
Опис роботи
Типи запитів
Каса може виконувати три типи запитів до сервісу Медікард API:
1. Запит на перевірку можливості продажу та отримання знижки
-
Каса надсилає запит для визначення можливості здійснення продажу та розміру знижки за номером картки покупця.
-
У запиті вказується код товару (або кілька одиниць товару з однаковим кодом).
-
Кількість одиниць регламентується лімітом, встановленим у сервісі Медікард.
-
У відповіді Каса використовує значення, отримані від сервісу Медікард, для подальших дій. Одночасно на екран виводиться сервісне повідомлення, яке пояснює результат запиту. Наприклад: Помилка 1: Такої карти в базі немає».
Після запиту на вказану картку та Касу (FarmacyId) встановлюється прапор блокування. Протягом наступних 10 хвилин повторний запит на знижку з інших кас для цієї картки стає недоступним.
2. Запит на підтвердження успішного продажу
-
Каса надсилає результати успішної транзакції до сервісу. Після цього прапор блокування скидається.
-
За замовчуванням Каса виконує до 5 спроб відправлення результату продажу.
Якщо протягом 10 хвилин підтвердження не отримано, сервіс Медікард автоматично скидає прапор.
3. Запит на отримання списку карток
Каса може надсилати запит для отримання актуального списку карток, зареєстрованих у системі Медікард.
3.1 Заборона продажу
ПЗ Каси повинно блокувати продаж товару, якщо у відповіді від сервісу Медікард отримано код заборони продажу, або якщо серед повернених кодів є значення, які вимагають таку заборону.
Перелік кодів наведено у кінці цієї специфікації
Каса повинна заборонити продаж запитуваного товару у випадках, коли:
-
відсутнє підключення до Інтернету;
-
немає зв’язку з сервісом Медікард;
-
виникли інші технічні збої, що унеможливлюють отримання відповіді від сервера.
3.2 Структура переданих даних
Перелік даних, необхідних для коректної та успішної роботи сервісу Medicard API.
3.2.1 Перед продажем
Перед здійсненням продажу Каса надсилає запит до сервісу з такими даними:
Параметри запиту
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Тип запиту | request_type (int) | 1 – запит % знижки 2 – відповідь про стан продажу 3 – запит списку карток 5 – валідація кода |
| Код запиту | id_casual (varchar 32) | HEX значення генерується випадковим чином. За цим значенням потрібно буде порівняти відповідь на запит |
| ID постачальника | supplier (mediumint 5) | ID постачальника, значення має бути більшим за нуль. Обов'язково до заповнення. Більше інформації на запит manager@medicard.com.ua |
| Внутрішній код аптеки | inside_code (mediumint 5) | Торгова точка. Унікальне значення для всієї мережі аптек |
| Номер картки | card_code (varchar 13) | ---- |
| Внутрішній код товару | product_code (varchar 20) | Код у внутрішній обліковій системі аптеки. Через прив'язку у торговій мережі з коду товару аптеки на код товару у сервісі Медікард |
| Ціна товару (роздрібна)* | price (decimal 8,2) | 999 999,99 грн Обов'язково до заповнення |
| Кількість | qty (decimal 5,2) | Опціонально (поки не використовується) |
| Логін | login (varchar 20) | Опціонально (поки не використовується) |
| Пароль | password (varchar 20) | Опціонально (поки не використовується) |
Поле Ціна товару, призначене для аналізу завищеної ціни
Параметри відповіді
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Тип запиту | request_type (int) | 1 – запит % знижки 2 – відповідь про стан продажу 3 – запит списку карток 5 – валідація кода |
| Код запиту | id_casual (varchar 32) | HEX значення генерується випадковим чином |
| ID постачальника | supplier (mediumint 5) | ID постачальника, значення має бути більшим за нуль. Більше інформації на запит manager@medicard.com.ua |
| Номер картки | card_code (varchar 13) | ---- |
| Внутрішній код товару | product_code (varchar 20) | Через прив'язку у торговій мережі з коду товару аптеки на код товару у сервісі Медікард |
| Ціна товару (роздрібна)* | price (decimal 8,2) | 999 999,99 грн Обов'язково до заповнення |
| Кількість | qty (decimal 5,2) | Кількість дозволена до покупки клієнту протягом календарного місяця (вказівка ліміту обов'язково в системі Медікард) |
| Знижка | discont (decimal 4,2) | Розмір знижки, дозволеної для продажу цього товару. Наприклад: 0%, 5%, 10%, 12,5%, 17,8%. |
| Абсолютна знижка* | discont_absolute (decimal 8,2) | 999 999,99 грн |
| Сервісне повідомлення | message (varchar 255) | Код Повідомлення та текст, який адресовано власнику картки або провізору |
| Код повідомлення | error | Код Повідомлення |
Поле Абсолютна знижка — використовується для товарів, за якими знижка або компенсація надається у гривнях, а не у відсотках
3.2.2 Після продажу
Після завершення продажу Каса повинна виконати другий запит до сервісу з такими даними:
Параметри запиту
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Тип запиту | request_type (int) | 1 – запит % знижки 2 – відповідь про стан продажу 3 – запит списку карток 5 – валідація кода |
| Код запиту | id_casual (varchar 32) | HEX значення генерується випадковим чином. За цим значенням потрібно буде порівняти відповідь на запит |
| Внутрішній код аптеки | inside_code (mediumint 5) | Торгова точка. Унікальне значення для всієї мережі аптек |
| ID постачальника | supplier (mediumint 5) | ID постачальника, значення має бути більшим за нуль. Обов'язково до заповнення. Більше інформації на запит manager@medicard.com.ua |
| Номер чека | id_alter (varchar) | Обов'язково до заповнення |
| Номер накладної дистриб'ютора | invoice_number (varchar) | Обов'язково до заповнення. до 20 символів (A-Z a-z 0-9 А-Я а-я) |
| Перевірте статус | sale_status (int) | Опціонально. Сервіс Медікард зберігає продаж здійснений тільки зі знижкою. 1 – продаж здійснено 2 – продаж не скоєно. За замовчуванням 1 |
| Номер картки | card_code (varchar 13) | ---- |
| Внутрішній код товару | product_code (varchar 40) | Через прив'язку у торговій мережі з коду товару аптеки на код товару у сервісі Медікард |
| Ціна товару (роздрібна)* | price (decimal 8,2) | 999 999,99 грн Обов'язково до заповнення |
| Кількість | qty (decimal 5,2) | Типово 1 |
| Залишок | rezerv (int) | Після продажу |
| Сума знижки у відсотках | discont_percent (decimal 4,2) | 99,99 % |
| Сума знижки абсолютне значення | discont_value (decimal 8,2) | 999 999,99 грн Це поле пріоритетніше (якщо будуть вказані 2 варіанти знижки) |
| Дата продажу | sale_date (yyyy-mm-dd hh:mm:ss) | Час (24-годинний формат) |
| Логін | login (varchar 20) | Опціонально (поки не використовується) |
| Пароль | password (varchar 20) | Опціонально (поки не використовується) |
Після запиту на збереження інформації про продаж Каса має прийняти відповідь від сервісу.
Параметри відповіді
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Тип запиту | request_type (int) | 1 – запит % знижки 2 – відповідь про стан продажу 3 – запит списку карток 5 – валідація кода |
| Код запиту | id_casual (varchar 32) | HEX-значення, яке містить дані з першого запиту |
| Статус запиту | request_status (int) | 1 – відповідь прийнята та збережена 2 – відповідь не прийнята |
| Сервісне повідомлення | message (varchar 255) | Код повідомлення та текст, адресований власнику картки або провізору |
| Код повідомлення | error | Код помилки або службового повідомлення |
Зміст відповіді при некоректній структурі запиту (перевіряється наявність обов'язкових полів у кожному типі запиту).
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Повідомлення | Повідомлення (варіант 255) | Текстове повідомлення |
Сервіс може містити додаткові поля (теги), які не впливають на роботу касового місця і не вимагають змін у його налаштуваннях.
Можливі варіанти відповідей:
| Умова | Повідомлення про помилку |
|---|---|
Значення поля request_type не входить до переліку (1, 2, 3) | Type request out of range |
Відсутнє значення поля request_type | Invalid data request type |
| Неправильна структура запиту | Invalid structure data in type 1 (де 1 — номер типу запиту) |
Майданчик для тестування
Для перевірки роботи Medicard API створено спеціальний тестовий майданчик.
- Під час початкового тестування ведеться протоколювання всіх подій запитів API.
- Перегляд журналу подій доступний через адміністративну панель.
- Посилання на адмін-частину та доступи (логін / пароль) надаються за запитом.
Адресу тестового майданчика буде надано додатково.
Тестовий сервер не впливає на робочий API і не має з ним жодного технічного зв'язку
Налаштування доступу для тестування
Перед початком тестування необхідно виконати налаштування даних доступу.
Обов'язково для успішної перевірки взаємодії з сервісом Medicard API необхідно надати дані:
- список аптек;
- ЄДРПОУ (якщо мережа містить кілька юридичних осіб — потрібно надати всі ЄДРПОУ з розбивкою по кожній аптеці);
- назву аптечної мережі або окремої аптеки;
- адресу аптек;
- список товарів, що підключатимуться до сервісу (до 10 позицій).
Коди постачальників
| Назва постачальника | Код постачальника |
|---|---|
| БаДМ | 1 |
| Вента | 2 |
| Оптіма-Фарма | 3 |
| Конекс | 14 |
В рамках різних програм постачальники можуть змінюватися або зовсім не брати участь
Приклади
Приклад 1
Покупець відвідує аптеку та вирішує придбати по карті одну упаковку необхідного препарату.
Оператор касового місця за допомогою сканера зчитує штрих-код карти, обирає потрібний препарат, вказує кількість (тільки ціле число) і надсилає запит на сервер Medicard API.
Приклад запиту
Адреса сервера: www.medicard.com.ua/api/api.php
Метод передачі: POST['medicard']
Формат даних: XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>1</request_type>
<id_casual>2a3712a4a5405924aff9f47f8f6fb615</id_casual>
<inside_code>1</inside_code>
<price>50.00</price>
<supplier>3</supplier>
<card_code>12345678</card_code>
<product_code>122485</product_code>
<qty>1</qty>
<login></login>
<password></password>
</data>
inside_code = 1 — це код аптеки, який призначається в адмін-частині.
Наприклад: 1 — Аптека №6, адреса хххх.
Приклад відповіді
Адреса сервера: www.medicard.com.ua/api/api.php
Метод отримання: POST['medicard']
Формат даних: XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>1</request_type>
<id_casual>2a3712a4a5405924aff9f47f8f6fb615</id_casual>
<card_code>12345678</card_code>
<product_code>122485</product_code>
<discont>5</discont>
<qty>2</qty>
<message>Повідомлення 202: Запит успішно оброблений.
Нагадуємо, що цього місяця Ви можете купити тільки {discont_qty_limit} упаковки.</message>
<error>202</error>
</data>
У даному випадку для параметра discont_qty_limit у відповіді підставляється значення "2".
Якщо у відповіді надається знижка по карті, прапор запиту піднімається. Протягом 10 хвилин покупка в іншій аптеці буде неможлива. Необхідно або завершити покупку в цій аптеці, або дочекатися таймауту.
Період таймауту може бути змінений оператором сервісу (наприклад, 5 хвилин).
Якщо у відповіді знижка по карті не надається, прапор скидається відразу, тому помилкове збереження продажу виключено.
Приклад відповіді (коли прапор запиту було піднято та 10 хвилин ще не минуло)
Адреса сервера: www.medicard.com.ua/api/api.php
Метод отримання: POST['medicard']
Формат даних: XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>1</request_type>
<id_casual>2a3712a4a5405924aff9f47f8f6fb615</id_casual>
<card_code>12345678</card_code>
<product_code>122485</product_code>
<discont>0</discont>
<message>Помилка 2: Обробка запиту, чекайте10 хвилин</message>
<error>2</error>
</data>помилка>2</помилка>
Для кожного запиту та відповіді необхідно порівнювати значення коду id_casual (наприклад: 2a3712a4a5405924aff9f47f8f6fb615).
Код id_casual повинен бути максимально унікальним.
Рекомендується використовувати результат функції MD5, сформований із комбінації відмітки часу разом із кодом товару аптеки та кодом Каси.
Якщо отримане значення не співпадає з відправленим, слід вивести повідомлення: Помилка 3: Неможливо зберегти продаж, невірний ідентифікатор. Усі повідомлення про помилки мають унікальні номери, незалежно від змісту. Це дозволяє ефективно:
-
тестувати підключення касових місць до сервісу,
-
забезпечувати технічний супровід роботи Medicard API.
Після першого запиту Каса надсилає другий запит, який:
-
фіксує факт продажу на сервері Medicard API,
-
скидає прапор запиту, що блокує повторне використання знижки.
Оскільки розрахунок знижок виконується на основі успішних продажів, важливо забезпечити відправку другого запиту та отримати позитивну відповідь про прийняття даних
Якщо каса надсилає запит на збереження продажу з нульовою знижкою, запит також успішно обробляється, а користувач отримує повідомлення: Повідомлення 200: Запит оброблений успішно. Продаж збережено.
Приклад 2
Продаж здійснено. Каса надсилає запит про продаж товару.
У запиті необхідно зберігати номер транзакції 2a3712a4a5405924aff9f47f8f6fb615
Приклад запиту
Адреса сервера: www.medicard.com.ua/api/api.php
Метод отримання: POST['medicard']
Формат даних: XML
DATA SEND POST['medicard']
<?xml version="1.0" encoding="UTF-8"?>
<data>
зберігати
номер
<request_type>2</request_type>
<id_casual>2a3712a4a5405924aff9f47f8f6fb615</id_casual>
<inside_code>1</inside_code>
<supplier>3</supplier>
<id_alter>1234</id_alter>
<invoice_number>А1Б1z2x3</invoice_number>
<card_code>12345678</card_code>
<product_code>122485</product_code>
<price>50.00</price>
<qty>1</qty>
<rezerv>54</rezerv>
<discont_percent>5</discont_percent>
<discont_value>2.50</discont_value>
<sale_date>2011-12-10 12:14:11</sale_date>
<login></login>
<password></password>
</data>
Приклад відповіді
Адреса сервера: www.medicard.com.ua/api/api.php
Метод отримання: POST['medicard']
Формат даних: XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>2</request_type>
<id_casual>2a3712a4a5405924aff9f47f8f6fb615</id_casual>
<request_status>1</request_status>
<message>{відповідне повідомлення}</message>
<error>{відповідний код}</error>
</data>
Приклад 3
Запит картки (відключено).
Приклад 4
СМС підтвердження покупки.
Якщо для товарної групи та обраної мережі аптеки встановлено підтвердження купівлі через СМС, то після запиту №1 буде надіслано відповідь код 15а.
Приклад відповіді
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>5</request_type>
<card_code>12345678</card_code>
<message> Повідомлення 15а:Необхідно підтвердити придбання за SMS
кодом (по API). Для завершення операції необхідно підтвердити покупку за
допомогою SMS-коду, який надсилається на вказаний під час реєстрації
номер телефону.</message>
<error>15а</error>
</data>
Отриманий код із СМС необхідно відправити назад із кодом запиту №5.
Параметри запиту
| Опис поля | Назва поля | Варіанти / Пояснення |
|---|---|---|
| Тип запиту | request_type (int) | 5 – валідація кода |
| Внутрішній код аптеки | inside_code (mediumint 5) | Торгова точка Унікальне значення для всієї мережі аптек |
| Номер картки | card_code (varchar 13) | |
| Код | code (varchar 4) | Код підтвердження покупки |
| Логін | login (varchar 20) | Опціонально (поки не використовується) |
| Пароль | password (varchar 20) | Опціонально (поки не використовується) |
Приклад запиту
<?xml version="1.0" encoding="UTF-8"?>
<data>
<request_type>5</request_type>
<card_code>12345678</card_code>
<inside_code>1</inside_code>
<code>1224</product>
<login></login>
<password></password>
</data>
Після відправлення запиту на валідацію, сервер повертає код відповіді. Якщо код підтвердження успішно прийнято, сервер надсилає: Код відповіді: 205 — Код прийнято.
У разі невдалого запиту можуть повертатися такі повідомлення:
| Код | Опис помилки |
|---|---|
| 15b | Введений код не дійсний |
| 15c | Термін дії коду підтвердження закінчився |
| 15d | Код належить іншій аптеці |
| 15e | Код ще не згенеровано |
| 105 | Заповнено не всі обов'язкові поля |
Термін дії коду підтвердження — 10 хвилин. Після закінчення цього часу код втрачає чинність і потребує повторного отримання
Помилки
Запрограмовані помилки (текстовий зміст може змінюватися оператором до адмін частини сервісу.)
Помилки надання знижки, помилки запитів (група 0-99)
| Код помилки | Опис помилки |
|---|---|
| 0 | Помилка не визначена |
| 1 | Такої карти в базі немає |
| 1a | Запитувана картка заблокована |
| 1b | Карта не активна. Знижка недоступна |
| 1c | Карта не активна. Знижка недоступна |
| 1d | Картка не активована. Для активації клієнту необхідно зателефонувати за номером 0800 21 21 31 (безкоштовно в межах України) та назвати номер картки, ПІБ, номер телефону |
| 1e | Карта не активна. Знижка недоступна |
| 2 | Обробка запиту, чекайте 10 хвилин. Після підняття прапора на запит знижки була спроба запиту на знижку в іншій аптеці |
| 3 | Неможливо зберегти продаж, неправильний ідентифікатор |
| 3a | Неможливо зберегти продаж, немає першого запиту |
| 3b | Неможливо зберегти продаж, не вказано номер накладної |
| 4 | Неможливо зберегти продаж, запит застарів |
| 4a | Неможливо зберегти продаж, запит застарів |
| 5 | Товар із таким кодом для Вашої мережі аптек відсутній у базі. Знижка недоступна |
| 5a | Товар з таким кодом вимкнено в базі. Знижка недоступна |
| 5b | Товар з таким кодом вимкнено в базі. Знижка недоступна |
| 5c | Ваша аптека та товар з таким кодом відключені у базі. Знижка недоступна |
| 5d | Вашу аптеку вимкнено в базі. Знижка недоступна |
| 5e | Вашу аптеку не знайдено в базі. Знижка недоступна |
| 5f | Договір дистриб'ютора не вказано. Знижка недоступна |
| 5g | Доступ до сервісу вимкнено. Знижка недоступна |
| 5h | Не вказано код аптеки. Знижка недоступна |
| 6 | Група товарів з таким кодом відключена в базі. Знижка недоступна |
| 6a | Період дії програми для цієї групи товарів минув. Знижка недоступна |
| 7 | Вказано нульове значення кількості. Знижка недоступна |
| 7a | Вказано дрібне значення кількості. Знижка недоступна |
| 7b | Для мультибонусів можна продати лише одну упаковку. Вказана кількість більше 1. Знижка недоступна |
| 7c | Помилка вибору кількості. Сьогодні доступний продаж від 2-х упаковок. Знижка недоступна |
| 8 | Вибраний товар не бере участі в програмі. Знижка недоступна |
| 8a | Ваша карта не обслуговується у цьому місті. Знижка недоступна |
| 8b | Ваша картка не обслуговується в аптеці. Знижка недоступна |
| 8c | Ваша аптека не бере участі в програмі. Знижка недоступна |
| 9 | Продаж цієї групи товарів недоступний для цієї картки. Знижка недоступна |
| 9a | Продаж цієї групи товарів недоступний для цієї картки (не вказано виробник для групи) |
| 9b | Для зазначеної карти не зіставлено значення МП та виробника. Знижка недоступна |
| 10 | Перевищено ліміт покупок за карткою. Для вибору доступно лише {limit} упаковок |
| 10b | Перевищення ліміту по тер області. Знижка недоступна |
| 10c | Перевищення ліміту по тер області. Знижка недоступна |
| 10d | Перевищення добового ліміту. Знижка недоступна |
| 10e | Перевищення ліміту груп. Знижка недоступна |
| 10f | Перевищення ліміту груп. Знижка недоступна |
| 10g | Перевищення ліміту дозування. Знижка недоступна |
| 10h | Перевищення тимчасового ліміту. Знижка недоступна |
| 10j | Перевищення тимчасового ліміту. Новий запит через {xx} хвилин. Знижка недоступна |
| 11 | Помилка вибору схеми знижки. Знижка недоступна |
| 11a | Помилка вибору схеми знижки. Знижка недоступна |
| 11b | Помилка вибору схеми знижки. Знижка недоступна |
| 12 | Термін дії плану покупок минув. Знижка недоступна |
| 12a | План покупок не визначено. Знижка недоступна |
| 12b | План покупок не визначено. Знижка недоступна |
| 12c | План покупок не визначено. Знижка недоступна |
| 12d | Доступна кількість упаковок лише 1. Знижка недоступна |
| 12e | Ліміт планових покупок вичерпано. Знижка недоступна |
| 12f | Помилка вибору дозування, наразі доступне {error_text}. Знижка недоступна |
| 12g | Продаж зі знижкою неможливий. Порушено інтервал між покупками |
| 12h | Продаж зі знижкою неможливий. Перевищено часовий інтервал на покупки |
| 12j | Продаж зі знижкою неможливий. Вказано неправильний код аптеки |
| 13 | Не вказано постачальника. Знижка недоступна |
| 13a | Вказаний постачальник не активний або вказано неправильний ВД. Знижка недоступна |
| 13b | Цей постачальник не бере участі в програмі. Знижка недоступна |
| 14 | Ви перевищили максимальну ціну. Знижка недоступна |
| 14a | Ви перевищили найнижчу ціну. Знижка недоступна |
| 15 | Необхідно підтвердити придбання за кодом SMS. Телефонуйте на гарячу лінію |
| 15a | Необхідно підтвердити придбання за SMS-кодом (по API). Для завершення операції введіть код, надісланий на номер, вказаний при реєстрації |
| 15b | Введений код не дійсний. Перевірте правильність коду |
| 15c | Термін дії коду підтвердження закінчився. Необхідно запросити новий код |
| 15d | Код належить іншій аптеці. Отримайте новий код, прив'язаний до поточної аптеки |
| 15e | Код ще не згенеровано. Повторіть запит пізніше |
Cистемні помилки бази даних (група 100-199)
| Код помилки | Опис |
|---|---|
| 100 | Запит MySQL повернув порожній результат. Знижка недоступна |
| 101 | Запит MySQL повернув порожній результат. Знижка недоступна |
| 102 | Запит MySQL повернув порожній результат. Знижка недоступна |
| 103 | Запит MySQL повернув порожній результат. Знижка недоступна |
| 104 | Запит MySQL повернув порожній результат. Знижка недоступна |
| 105 | Заповнено не всі обов'язкові поля. Запит не може бути оброблений, оскільки деякі обов'язкові поля відсутні або порожні. Перевірте структуру переданих даних і заповніть усі необхідні поля |
У випадку помилок із діапазону 1–199 (включно) знижка на товар не надається
Повідомлення сервісу (група 200-2990)
| Код повідомлення | Опис |
|---|---|
| 200 | Запит успішно оброблений. Продаж збережено |
| 201 | Запит на продаж не збережено. Вказано нульову знижку в чеку |
| 202 | Запит успішно оброблений. Нагадуємо, що цього місяця Ви можете купити тільки {discont_qty_limit} упаковок |
| 202a | Запит успішно оброблений. Нагадуємо, що Ви можете ще купити {discont_qty_limit} упаковок |
| 202b | Запит успішно оброблений |
| 203 | Запит оброблено. Знижка недоступна, оскільки для зазначеної групи товарів продаж зі знижкою можливий лише для перших {discont_qty_limit} упаковок на місяць. Наберіть замовлення повторно із меншою кількістю упаковок |
| 204 | Запит оброблено. Знижка недоступна, оскільки цього місяця досягнуто ліміту упаковок зі знижкою |
| 204a | Запит оброблено. Знижка недоступна, оскільки сьогодні досягнуто ліміту упаковок зі знижкою |
| 205 | Код підтвердження прийнято. Повторіть запит №1. Код верифіковано успішно. Тепер можна повторити первинний запит |
Другий запит дозволяється виконати лише після отримання кодів 202, 202a або 202b під час першого запиту.
Друк фіскального чека можливий тільки у разі отримання коду 200 після другого запиту.
Якщо в базі даних відсутній заданий код помилки, а в API були внесені зміни або додані нові алгоритми, система виводить повідомлення: Повідомлення за номером #{number} не встановлено.
Журнал змін
| Дата змін | Опис змін | Код помилки / повідомлення |
|---|---|---|
| 18.11.2013 | Додано 2 помилки та 1 повідомлення | 10, 10a, 202a |
| 20.05.2014 | Додано 1 помилку | 1b |
| 01.08.2014 | Додано 1 помилку | 11 |
| 01.04.2015 | Додано 1 помилку | 3a |
| 22.05.2015 | Додано 9 помилок | 12, 12a, 12b, 12c, 12d, 12e, 12f, 202b |
| 29.07.2015 | Додано 1 помилку | 7b |
| 10.09.2015 | Додано 2 помилки | 13, 13a |
| 11.12.2015 | Додано 2 помилки | 8b, 204a |
| 07.06.2016 | Додано 2 помилки | 10b, 10c |
| 05.01.2017 | Додано 1 помилку | 12g |
| 10.01.2017 | Додано 1 помилку | 14 |
| 08.06.2017 | Додано 2 помилки | 12h, 12j |
| 29.11.2017 | Додано 2 помилки (Есенціалі) | 7c, 10d |
| 30.09.2019 | Додано 1 помилку (SMS покупка) | 15 |
| 22.11.2019 | Додано 2 помилки | 7d, 1d |
| 12.12.2019 | Додано 1 помилку | 3b |
| 20.01.2020 | Додано 3 помилки | 10g, 10f, 10e |
| 08.05.2020 | Додано 1 помилку | 1e |
| 08.07.2020 | Додано 2 помилки | 10h, 10j |
| 04.08.2020 | Планувалося додати помилку | 13b |
| 31.10.2020 | Додано 1 помилку | 13b |
| 04.08.2021 | Додано 1 помилку | 14a |
| 11.11.2021 | Додано 1 помилку | 8c |
| 30.07.2025 | Додано 6 помилок та 1 повідомлення | 15a, 15b, 15c, 15d, 15e, 105, 205 |