Продаж через касу
Під час продажу маркованого товару (алкоголь, тютюнові вироби) в точці продажу акцизну марку потрібно перевірити перед додаванням у чек і заблокувати (погасити) одразу після фіскалізації. За це відповідає EDIN Акциз POS Service — API-шлюз для інтеграції касових систем (POS/РРО/ПРРО) з EDIN Акциз. На відміну від приймання, переміщення чи списання, цей процес не передбачає ручного сканування в EDIN Акциз Mobile — все відбувається через пряму інтеграцію каси з API.
Ключові можливості
Section titled “Ключові можливості”- Перевірка марки в реальному часі (до 200 мс) у момент сканування товару в чек
- Пакетна перевірка всіх марок чека перед фіскалізацією
- Ручне введення
readableCode(12 символів) для пошкоджених штрихкодів - Автоматичне розгортання УГІ в окремі марки під час перевірки
- Асинхронне блокування марок після фіскалізації, ідемпотентне за
receiptId
Схема інтеграції
Section titled “Схема інтеграції”Автентифікація: OAuth 2.0 Bearer token. Кожен запит обов’язково містить query-параметр ?tenant={tenantName}.
- Касир сканує акцизну марку товару під час додавання в чек — POS викликає
POST /validate(уточнюйте в команди розробки) з одним кодом (exciseCodesабоreadableCodes) - EDIN Акциз POS Service повертає
overallValidі статус коду — POS додає товар у чек, якщо марка валідна - Перед фіскалізацією POS викликає
POST /validate(уточнюйте в команди розробки) пакетно з усіма кодами чека - Каса фіскалізує чек через РРО/ПРРО
- Одразу після фіскалізації POS викликає
POST /blockзreceiptId,fiscalNumber,fiscalizationTimestampта масивомexciseCodes - EDIN Акциз POS Service одразу повертає
202 Accepted— блокування марок виконується асинхронно у фоні
Діаграма процесу
Section titled “Діаграма процесу”sequenceDiagram
actor Cashier as Касир
participant POS as Каса (POS/РРО)
participant EDINAktsyz as EDIN Акциз POS Service
autonumber
Cashier->>POS: Сканує акцизну марку товару
POS->>EDINAktsyz: POST /validate (exciseCodes або readableCodes)
EDINAktsyz-->>POS: overallValid + статус коду
POS-->>Cashier: Товар додано в чек (якщо valid)
Cashier->>POS: Завершує чек
POS->>EDINAktsyz: POST /validate (пакет усіх кодів чека)
EDINAktsyz-->>POS: overallValid (пакет)
POS->>POS: Фіскалізує чек через РРО/ПРРО
POS->>EDINAktsyz: POST /block (receiptId, fiscalNumber, exciseCodes)
EDINAktsyz-->>POS: 202 Accepted
EDINAktsyz-->>EDINAktsyz: Асинхронно блокує марки ("продано")
Найкращі практики
Section titled “Найкращі практики”Валідація
Section titled “Валідація”- Викликайте
/validateодразу при скануванні марки в чек — не чекайте фіскалізації, щоб одразу відхилити невалідну марку - Виконуйте пакетну
/validateперед фіскалізацією як фінальну перевірку всього чека - Використовуйте
readableCodesлише як резервний спосіб при пошкодженому штрихкоді
Блокування
Section titled “Блокування”- Викликайте
/blockодразу після успішної фіскалізації — не відкладайте виклик - Завжди передавайте унікальний
receiptId— запит ідемпотентний, повторний виклик безпечний (at-least-once) - Якщо в чеку був код УГІ, передавайте в
/blockрозгорнуті окремі марки, отримані з відповіді/validate, а не сам код УГІ