Ошибки
В случае возникновения ошибки, сервер отправит сообщение типом error
и
полем data
следующего вида:
{
"description": String,
"name": String,
"op_data": Any?
}
Для идентификации ошибки на клиентской стороне требуется ориентироваться на
поле name
, т.к. оно является гарантированно уникальным в рамках протокола.
Стоит так же отметить, что список данных ошибок может дополняться и требуется предусмотреть обработку неизвестных ошибок, а так же часть ошибок могут быть никогда не переданы на клиентскую часть и обработаны в рамках логики работы сервиса.
Так же, текстовое описание ошибок description
может меняться/дополняться в рамках
работы сервиса и, как следствие, полагаться на него как на уникальное значение
запрещается.
Перечень ошибок, возможных в рамках протокола ошибок:
[errors]
AVQFR_INVALID_COMMAND = 'подана команда с неизвестным кодом или нарушен порядок подачи команд'
AVQFR_UNSUPPORTED_VERSION = 'версия протокола взаимодействия с устройством не поддерживается'
AVQFR_ACCESS_DENIED = 'неверно указана роль при авторизации (отличная от PIN, PUK или REG)'
AVQFR_BAD_SERIAL_NUMBER = 'неверно задан серийный номер устиойства'
AVQFR_BAD_DEVICE_MODE = 'команда не может быть выполнена в текущем режиме устройства'
AVQFR_INTERNAL_ERROR = 'внутренняя ошибка (возможная причина - аппаратный сбой)'
AVQFR_TIMEOUT = 'превышено время ожидания ответа при синхронизации времени'
AVQFR_BAD_FW_UPGRADE_KEY = 'отсутствует ключ обновления прошивки или его целостность нарушена'
AVQFR_NOT_MOUNTED = 'файловая система на смонтирована (внутренняя ошибка, устройство неисправно)'
AVQFR_NOT_FORMATTED = 'носитель на отформатирован (внутренняя ошибка, устройство неисправно)'
AVQFR_INSUFFICIENT_SPACE = 'недостаточно места для записи данных'
AVQFR_FILE_IS_TOO_BIG = 'превышен размер файла (внутренняя ошибка, устройство неисправно)'
AVQFR_FILE_NOT_EXIST = 'файл не найден, необходимые данные отсутствуют'
AVQFR_FILE_ALREADY_EXISTS = 'файл уже имеется (внутренняя ошибка, устройство неисправно)'
AVQFR_INVALID_OFFSET = 'неверное смещение (внутренняя ошибка, устройство неисправно)'
AVQFR_PROGRAM_ERROR = 'ошибка записи во флеш-память (внутренняя ошибка, устройство неисправно)'
AVQFR_BAD_ADDRESS = 'неверно задан адрес блока памяти (внутренняя ошибка, устройство неисправно)'
AVQFR_ERASE_ERROR = 'ошибка стирания флеш-памяти (внутренняя ошибка, устройство неисправно)'
AVQFR_NO_CIPHER_CALLBACKS = 'функции шифрования файловой системы недоступны (внутренняя ошибка, устройство неисправно)'
AVQFR_MAC_NOT_FOUND = 'у файла отсутствует имитовставка (внутренняя ошибка, устройство неисправно)'
AVQFR_NOT_ACTUAL_KEY = 'срок действия ключа не наступил или истек'
AVQFR_BAD_SIGN = 'подпись не верна'
AVQFR_INCORRECT_PARAM_SIZE = 'неверный размер параметра (один из параметров команды имеет неверную длину)'
AVQFR_BAD_SYNC_REQUEST_ID = 'неверный идентификатор запроса синхронизации времени'
AVQFR_BAD_FILE_INDEX = 'недопустимое имя файла (внутренняя ошибка, устройство неисправно)'
AVQFR_NO_DATA = 'запрашиваемые данные отсутствуют (попытка получить внутренний или отсутствующий документ)'
AVQFR_INTEGRITY_ERROR = 'нарушение целостности данных, хранящихся в устройстве (устройство неисправно)'
AVQFR_PRNG_NOT_INITIALIZED = 'генератор СЧП не инициализирован, инициализация устройства не завершена'
AVQFR_BAD_SIGN_CTR = 'неверное значение счетчика подписей'
AVQFR_BAD_STATUS_CODE = 'неверное значение кода завершения обработки запроса сервером'
AVQFR_INVALID_MODE = 'неверно задан режим алгоритма (внутренняя ошибка, устройство неисправно)'
AVQFR_INCORRECT_PARAM = 'один из переданных параметров имеет недопустимое значение'
AVQFR_SELF_TEST_FAILURE = 'ошибка самотестирования (устройство неисправно)'
AVQFR_SHIFT_IDLE_TIMEOUT = 'превышено время бездействия, требуется синхронизация времени'
AVQFR_BAD_KEY_AUTH_DATA = 'неверные данные для авторизации сессии (неверное значение PIN, PUK или REG)'
AVQFR_INVALID_ATTR_ID = 'неверный идентификатор атрибута устройства (атрибут, не поддерживается устройством)'
AVQFR_BAD_KEY_TOKEN = 'токен ключа сформирован некорректно'
AVQFR_FILE_BACKUP_ERROR = 'ошибка дублирования файла (внутренняя ошибка, устройство неисправно)'
AVQFR_BAD_KEY_ID = 'идентификатор ключа отсутствует или имеет неверный размер'
AVQFR_BAD_KEY = 'ключ отсутствует, имеет неверный размер или неверный формат набора ключей'
AVQFR_ASN1_PARSE_ERROR = 'невозможно разобрать ASN1-структуру (нарушена структура сертификата или ответа сервера)'
AVQFR_INCORRECT_DATA_SIZE = 'неверный общий размер данных команды (передана команда неподдерживаемой длины)'
AVQFR_SESSIONS_LIMIT_EXCEEDED = 'слишком много одновременно открытых сессий'
AVQFR_INVALID_SESSION_ID = 'неверный идентификатор сессии'
AVQFR_SHIFT_IS_PENDING = 'необходимо закрыть смену'
AVQFR_RECEIPT_IS_PENDING = 'в устройстве присутствуют кассовые документы, которые необходимо передать на сервер'
AVQFR_RECEIPT_SUM_OVERFLOW = 'переполнение счетчиков, необходимо закрыть смену'
AVQFR_RECEIPT_NEGATIVE_VALUE = 'задано отрицательное значение суммы'
AVQFR_NEGATIVE_SHIFT_BALANCE = 'получен отрицательный сменный баланс'
AVQFR_SESSION_ALREADY_AUTHORIZED = 'сессия уже авторизована (попытка повторной авторизации уже авторизованной сессии)'
AVQFR_SESSION_NOT_AUTHORIZED = 'сессия не авторизована (команда требует обязательной авторизации)'
AVQFR_SESSION_EXISTS = 'имеется открытая сессия (выполнение команды возможно только в монопольном режиме)'
AVQFR_SHIFT_IS_OPENED = 'смена открыта (команда возможна только при закрытой смене)'
AVQFR_SHIFT_IS_CLOSED = 'смена закрыта (команда возможна только при открытой смене)'
AVQFR_BAD_DATE_TIME = 'неверный формат или значение даты или времени (операция выполняется "задним" числом)'
AVQFR_BAD_CASH_REG_NUMBER = 'неверный номер кассового аппарата (номер КСА в СККО)'
AVQFR_BAD_CURRENCY_NAME = 'неверное наименование кода валюты'
AVQFR_BAD_RECEIPT_TYPE = 'неверный тип кассового документа'
AVQFR_BAD_RECEIPT_NUMBER = 'номер кассового документа отличается от значения внутренего счетчика кассовых документов'
AVQFR_BAD_RECEIPT_COST = 'рассогласование по полю "Итого общая стоимость"'
AVQFR_BAD_RECEIPT_DISCOUNT = 'рассогласование по полю "Сумма скидки (надбавки)"'
AVQFR_BAD_RECEIPT_TOTAL = 'рассогласование по полю "Итого к оплате"'
AVQFR_BAD_RECEIPT_CENTS = 'неправильное значение дробной части денежного поля'
AVQFR_BAD_TAXPAYER_NUMBER = 'задан неверный УНП'
AVQFR_BAD_CORRECTION_VALUE = 'задана ненулевая сумма коррекции при отсутствии коррекций'
AVQFR_TOTAL_TRADE_OVERFLOW = 'переполнение счетчика суммарного торгового оборота'
AVQFR_UNKNOWN = 'неизвестная ошибка'
TR_EMPTY_INPUT = 'неверные входные данные (данные отсутствуют)'
TR_INVALID_TYPE = 'неверный тип данных'
TR_INSUFFICIENT_BYTES = 'недостаточно данных для считывания информации'
USB_IO = "Input/Output Error"
USB_INVALID_PARAM = "Invalid parameter"
USB_ACCESS = "Access denied (insufficient permissions)"
USB_NO_DEVICE = "No such device (it may have been disconnected)"
USB_NOT_FOUND = "Entity not found"
USB_BUSY = "Resource busy"
USB_TIMEOUT = "Operation timed out"
USB_OVERFLOW = "Overflow"
USB_PIPE = "Pipe error"
USB_INTERRUPTED = "System call interrupted (perhaps due to signal)"
USB_NO_MEM = "Insufficient memory"
USB_NOT_SUPPORTED = "Operation not supported or unimplemented on this platform"
USB_BAD_DESCRIPTOR = "Malformed descriptor"
USB_OTHER = "Other error"
CRT_MISSING_DEVICE_ID = "missing device id"
CRT_MISSING_OWNER_TAX_NUMBER = "missing owner tax number"
CRT_MISSING_OPERATOR_CODE = "missing operator code"
CRT_MISSING_SERIAL_NUMBER = "missing serial number"
CRT_MISSING_OWNER_NAME = "missing owner name in certificate"
CRT_MISSING_CERT_SERIAL = "missing cert serial"
CRT_INVALID = "invalid certificate"
AVTPCR_ATTR_NOT_FOUND = 'missing required attribute'
TIN_CODE_LEN = "invalid code length"
TIN_EMPTY_NAME = "empty name"
TIN_NAME_LEN = "invalid name length"
TIN_INVALID_GTIN = "invalid gtin/ean"
TIN_ZERO_SUM = "invalid sum: can't be 0"
TIN_NEGATIVE_SUM = "invalid sum: can't be negative"
TIN_SUM_OVERFLOW = "sum overflow"
TIN_QUANTITY_OVERFLOW = "quantity overflow"
TIN_ZERO_QUANTITY = "invalid quantity: 0"
TIN_EMPTY_CASHIER = "empty cashier name"
TIN_NO_ITEMS = "invalid items array: no items"
TIN_MAX_ITEMS = "too many items"
TIN_NOT_ENOUGH_MONEY = "not enough payed"
TIN_CASHLESS_OVERFLOW = "too much cashless payment"
TIN_CASH_OVERFLOW = "too much cash"
TIN_NEGATIVE_CHANGE = "invalid change: can't be negative"
TIN_CASHIER_LEN = "invalid cashier length"
TIN_NOT_ENOUGH_CASH_IN = "not enough money in cash box"
TSRV_APP_WAS_NOT_CONFIGURED = "application was not configured properly"
TSRV_EMPTY_ADDRESS = "no address provided"
TSRV_DISPATCHER_NOT_FOUND = "dispatcher not found"
TSRV_DESERIALIZE_ERROR = "failed to deserialize value"
TSRV_EMPTY_MSG_DATA = "data field is required but was not provided"
TSRV_ACTION_NOT_FOUND = "'action' was not found"
TSRV_INVALID_HEADER = "invalid header value"
TSRV_TOKEN_NOT_FOUND = "token was not found"
TSRV_INVALID_SUM_DEC_PART = "invalid sum decimal part. should always have 2 digits after dot"
TSRV_INVALID_QUANTITY_DEC_PART = "invalid quantity decimal part. should always have 3 digits after dot"
TSRV_NEGATIVE_CHEQUE_DISCOUNT = "cheque discount can't be negative"
TSRV_TOKEN_NOT_ACTIVE = "token is not active"
TSRV_ITEM_NOT_FOUND = "item was not found in storage"
PR_IO_ERROR = "printer I/O error"
PR_NOT_FOUND = "printer was not found"
PR_USB_ERROR = "usb printer error"
SM_SESSION_EXISTS = "session already exists. remove existing session or restart app"
SM_INVALID_SESSION = "invalid session id"
SM_SID_NOT_FOUND = "session id was not found"
TORD_FAILED_TO_REMOVE = "failed to remove prev order"
TORD_FAILED_TO_DESER = "failed to deserialize prev order (file may be corrupted)"
TORD_READ_FAILED = "failed to read order"
TORD_WRITE_FAILED = "failed to write order"
TORD_NOT_FOUND = "order was not found"
Что делать если была возвращена ошибка...
-
AVQFR_NOT_ACTUAL_KEY
- требуется проверить срок действия СКО и обратиться в тех. поддержку -
AVQFR_BAD_KEY_AUTH_DATA
- PIN/PUK код имеются неверные значения - проверить их правильность в соответствии с паспортом СКО -
AVQFR_SHIFT_IDLE_TIMEOUT
- требуется проверить подключение к интернету и попытаться открыть смену. При открытии смены осуществляется попытка синхронизации времени -
AVQFR_INSUFFICIENT_SPACE
- слишком много неотправленных документов - подключиться к интернету, проверить, что пройдена авторизация по PIN коду. Максимальное кол-во документов - около 4000 -
AVQFR_SESSIONS_LIMIT_EXCEEDED
- Программная касса завершала свою работу некорректно какое-то кол-во раз. Требуется обратиться в тех. поддержку предоставив лог-файл и для продолжения работы - достать и вернуть СКО в устройство с запущенной программной кассой -
AVQFR_SHIFT_IS_PENDING
- требуется закрытие смены. -
AVQFR_RECEIPT_IS_PENDING
- требуется проверка наличия интернета на устройстве и убедиться, что пройдена авторизация по PIN коду, а так же дождаться, пока документы будут отправлены на сервер. Кол-во неотправленных документов можно получить с помощью метода get_stored_documents -
AVQFR_RECEIPT_SUM_OVERFLOW
- прибыль вашей компании за смену достигла невероятных объемов. Требуется закрыть смену и сообщить в тех. поддержку о данной ошибке -
AVQFR_NEGATIVE_SHIFT_BALANCE
- попытка уменьшения кол-ва наличных в кассе в отрицательную сторону - например операцией возврата или изьятия. это является ошибкой клиентского ПО и должно быть устранено на этапе интеграции. Так же данная ошибка может возникать при попытке закрытия смены, что говорит о том, что имеются наличные в кассе, которые подлежат изъятию перед закрытием смены -
AVQFR_SESSION_ALREADY_AUTHORIZED
- уже пройдена авторизация в СКО -
AVQFR_SESSION_NOT_AUTHORIZED
- требуется прохождение авторизации в СКО -
AVQFR_SHIFT_IS_OPENED
- требуется закрыть смену -
AVQFR_SHIFT_IS_CLOSED
- требуется открыть смену -
AVQFR_BAD_DATE_TIME
- требуется проверить время на устройстве -
TIN_CODE_LEN
- требуется проверить длину кода. Длина кода не должна превышать 13 знаков. -
TIN_EMPTY_NAME
- имя является обязательным полем, требуется проверить, что оно заполнено -
TIN_NAME_LEN
- неверная длина имени тов. позиции. Не должна превышать 128 символов -
TIN_INVALID_GTIN
- не пройдена валидация кода GTIN (проверочный знак неверный) -
TIN_ZERO_SUM
- значение цены/суммы не может быть равно 0 в одном из полей -
TIN_NEGATIVE_SUM
- значение цены/суммы не может быть отрицательным -
TIN_SUM_OVERFLOW
- слишком большое/маленькое значение цены/суммы. Об ограничениях написано в описании типа Sum -
TIN_QUANTITY_OVERFLOW
- слишком большое значение кол-во. Об ограничениях написано в описании типа Quantity -
TIN_ZERO_QUANTITY
- кол-во не может быть равно 0. -
TIN_EMPTY_CASHIER
- имя кассира не может быть пустым. Это обязательное поле -
TIN_NO_ITEMS
- попытка совершения продажи без товарных позиций -
TIN_MAX_ITEMS
- слишком много товарных позиций в чеке -
TIN_NOT_ENOUGH_MONEY
- недостаточная сумма при попытке оплаты чека -
TIN_CASHLESS_OVERFLOW
- слишком много безналичных средств. Ошибка возникает если значение способов безналичной оплаты и других способов оплаты превышает сумму. С данных способов оплаты невозможно выдать сдачу -
TIN_CASH_OVERFLOW
- слишком много наличных средств. Возникает если сумма безналичных и других способов оплаты полностью покрываем сумму по чеку, а наличные не равны 0 -
TIN_NEGATIVE_CHANGE
- Отрицательная сдача. -
TIN_CASHIER_LEN
- неверная длина кассира. Превышает 16 символов -
TIN_NOT_ENOUGH_CASH_IN
- недостаточно наличных в кассе для совершения операции. Например, для выдачи сдачи -
TSRV_APP_WAS_NOT_CONFIGURED
- ошибка инициализации ПО. Требуется обратиться в тех. поддержку -
TSRV_EMPTY_ADDRESS
- не указано значение поляaddress
в запросе, либо пустое значение -
TSRV_DISPATCHER_NOT_FOUND
- неверное значениеaddress
в запросе -
TSRV_DESERIALIZE_ERROR
- ошибка обработки входных данных. Требуется проверка правильности формата и указание обязательных полей -
TSRV_EMPTY_MSG_DATA
- требуемое тело запроса (полеdata
) отсутствует -
TSRV_ACTION_NOT_FOUND
- неверное значение заголовкаaction
, либоaddress
указан неверно -
TSRV_INVALID_HEADER
- неверное значение одного из заголовков -
TSRV_TOKEN_NOT_FOUND
- СКО не найдено -
TSRV_INVALID_SUM_DEC_PART
- неверное значение суммы (передано не в форматеX.XX
) -
TSRV_INVALID_QUANTITY_DEC_PART
- неверное значение кол-ва (передано не в форматеX.XXX
) -
TSRV_NEGATIVE_CHEQUE_DISCOUNT
- отрицательная скидка по чеку (надбавка на чек недоступна) -
TSRV_TOKEN_NOT_ACTIVE
- СКО заблокировано -
TSRV_ITEM_NOT_FOUND
- товар отсутствует в БД товаров -
PR_IO_ERROR
- ошибка чтения/записи принтера -
PR_NOT_FOUND
- принтер с указанными данными не найден -
PR_USB_ERROR
- ошибки при работе с принтером поUSB
-
SM_SESSION_EXISTS
- сессия уже существует. Описание работы с сессиями -
SM_INVALID_SESSION
- неизвестная сессия. Требуется либо пересоздание, либо перезапуск -
SM_SID_NOT_FOUND
- отсутствует заголовокsid
в запросе -
TORD_FAILED_TO_REMOVE
- ошибка удаления предыдущего заказа -
TORD_FAILED_TO_DESER
- файл заказа поврежден либо не может быть обработан. Требуется пересоздать заказ предварительно удалив -
TORD_READ_FAILED
- ошибка чтения заказа из ФС. Требуется обратиться в тех. поддержку -
TORD_WRITE_FAILED
- ошибка записи заказа в ФС. Требуется обратиться в тех. поддержку -
TORD_NOT_FOUND
- заказ с данным идентификатором не найден. Требуется создание заказа