CancelReceiptRequest – запрос на отмену чека.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира, для которого производится отмена чека. |
|
| receipt_id | string | Идентификатор чека (если требуется). |
CancelReceiptResponse – ответ на запрос отмены чека.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – чек успешно отменён. "1" – ошибка отмены. |
|
| message | string | Дополнительное сообщение. |
CardOperation – данные об операции с картой, используемые при возврате.
| Field | Type | Label | Description |
| action_name | string | Название операции (например, "Продажа" или "Пополнение"). |
|
| payment_type | string | Тип оплаты в виде строки. |
|
| park_name | string | Название парка (если применимо). |
|
| place | string | Название пункта (место проведения операции). |
|
| value | double | Сумма операции. |
|
| date | int64 | Дата операции в миллисекундах с начала эпохи. |
|
| report_id | int32 | Идентификатор отчета, связанного с операцией. |
|
| fl_cancel | int32 | Флаг, указывающий, требуется ли отмена операции. |
ContinuePrintRequest – запрос на продолжение печати чека.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира. |
ContinuePrintResponse – ответ на запрос продолжения печати.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – чек успешно напечатан. "15" – ошибка продолжения печати. |
|
| message | string | Дополнительное сообщение. |
FetchDataRequest – запрос на получение данных о состоянии смены.
FetchDataResponse – ответ на запрос данных о смене.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – данные успешно получены. "2" – ошибка запроса данных. "3" – неизвестное состояние смены. |
|
| is_shift_open | bool | Флаг, указывающий, открыта ли смена. |
|
| shift_time | string | Время открытия смены (если применимо), в формате строки. |
HeartbeatRequest – запрос проверки работоспособности сервиса.
| Field | Type | Label | Description |
| service_name | string | Имя сервиса, для которого выполняется проверка. |
HeartbeatResponse – ответ проверки работоспособности.
| Field | Type | Label | Description |
| status | string | Статус работы: "OK" – сервис работает корректно. "BUSY" – устройство занято (технический код, не ожидается в норме). |
OpenReceiptRequest – запрос на открытие чека.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира, инициирующего операцию. |
|
| card_uid | string | Уникальный идентификатор карты, выводимый в чеке. |
|
| checkout_name | string | Имя точки продаж (кассовый аппарат). |
|
| is_sold_card | bool | Флаг, указывающий, производится ли продажа карты. |
|
| card_price | float | Цена карты при продаже. |
|
| deposit_sum | float | Сумма депозита (если применяется). |
|
| payment_type | int32 | Тип оплаты: 0 – электронно, 1 – наличными. |
|
| payment_sum | float | Сумма платежа. |
|
| second_receipt_non_fiscal | string | Дополнительный нефискальный документ (текст для печати), если требуется. |
OpenReceiptResponse – ответ на запрос открытия чека.
| Field | Type | Label | Description |
| status | string | Статус операции: <td> "SUCCESS" – чек успешно открыт, напечатан и закрыт. "2" – ошибка входа оператора. "3" – ошибка открытия чека. "4" – ошибка печати текста "Ваш код карты:". "5" – ошибка печати идентификатора карты. "6" – ошибка печати разделительной линии. "7" – ошибка печати пустой строки (отступ). "8" – ошибка регистрации при продаже карты. "9" – ошибка регистрации при оформлении депозита. "10" – неверный тип оплаты. "11" – ошибка проведения платежа. "12" – ошибка закрытия чека. "13" – ошибка проверки закрытия документа. "14" – документ не закрыт (чек не завершён). "15" – ошибка продолжения печати. "16" – ошибка начала печати нефискального документа. "17" – ошибка печати строки в нефискальном документе. "18" – ошибка завершения нефискального документа. "19" – ошибка финальной проверки закрытия документа. |
|
| message | string | Дополнительное сообщение, описывающее результат операции. |
OpenShiftRequest – запрос на открытие смены.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира, открывающего смену. |
OpenShiftResponse – ответ на запрос открытия смены.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – смена успешно открыта или уже открыта. "1" – общая ошибка (например, ошибка запроса состояния, входа оператора, открытия смены, печати и т.д.). "2" – смена истекла (открыть смену невозможно). |
|
| message | string | Дополнительное сообщение (например, "Shift is already opened", "Not closed" и т.д.). |
PrintNonFiscalDocumentRequest – запрос на печать нефискального документа.
| Field | Type | Label | Description |
| document | string | Текст нефискального документа для печати. |
PrintNonFiscalDocumentResponse – ответ на запрос печати нефискального документа.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – документ успешно напечатан. "1" – ошибка начала печати. "2" – ошибка печати текста. "3" – ошибка завершения печати. |
|
| message | string | Дополнительное сообщение. |
PrintXReportRequest – запрос на печать X-отчета.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира. |
PrintXReportResponse – ответ на запрос печати X-отчета.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – X-отчет успешно напечатан. "1" – ошибка печати X-отчета. |
|
| message | string | Дополнительное сообщение. |
RealizationData – данные для формирования отчета по реализации товаров/услуг.
| Field | Type | Label | Description |
| rep_name | string | Наименование позиции (товара или услуги). |
|
| pass_count | int32 | Количество (например, число пассажиров или единиц товара). |
|
| total_price | int32 | Общая стоимость позиции. |
RealizationDataRequest – запрос на обработку данных реализации.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира, инициирующего операцию. |
|
| checkout_name | string | Имя кассового аппарата (точка продаж). |
|
| realization_data | RealizationData | repeated | Список данных реализации. |
RealizationDataResponse – ответ на запрос обработки данных реализации.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – данные успешно обработаны. "1" – ошибка входа оператора или отмены. "2" – ошибка открытия чека. "3" – ошибка регистрации позиции. "10" – ошибка проведения платежа. "4" – ошибка закрытия чека. "5" – ошибка проверки закрытия документа. "6" – чек не был закрыт. "7" – ошибка продолжения печати. |
|
| message | string | Дополнительное сообщение. |
|
| rows_affected | int32 | Количество успешно обработанных записей. |
RepeatReceiptRequest – запрос на повторение последнего чека.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира. |
RepeatReceiptResponse – ответ на запрос повторения чека.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – чек успешно повторно напечатан. "1" – ошибка повторения чека. |
|
| message | string | Дополнительное сообщение. |
ReturnRequest – запрос на возврат чека.
| Field | Type | Label | Description |
| cashier_name | string | Имя кассира. |
|
| checkout_name | string | Имя кассового аппарата (точка продаж). |
|
| second_receipt_non_fiscal | string | Дополнительный нефискальный документ для печати (если требуется). |
|
| card_operation | CardOperation | Данные по операции с картой (например, "Продажа" или "Пополнение"). |
|
| payment_type | int32 | Тип оплаты для возврата: 0 – электронно, 1 – наличными. |
|
| total_to_return | float | Общая сумма возврата. |
ReturnResponse – ответ на запрос возврата чека.
| Field | Type | Label | Description |
| status | string | Статус операции: "SUCCESS" – возврат успешно выполнен. "1" – ошибка входа оператора или отмены. "2" – ошибка входа оператора. "3" – ошибка открытия чека для возврата. "4" – ошибка регистрации операции возврата. "5" – неверное название операции. "6" – неверный тип оплаты. "7" – ошибка проведения платежа. "8" – ошибка закрытия чека. "9" – ошибка проверки закрытия документа. "14" – чек не был закрыт. "15" – ошибка продолжения печати. |
|
| message | string | Дополнительное сообщение. |
|
| rows_affected | int32 | Количество обработанных записей (если применимо). |
CashierService – сервис для взаимодействия с кассовым устройством.
Сервис предоставляет методы для проверки работоспособности, открытия и закрытия смены,
работы с чеками (открытие, отмена, продолжение печати, повторение), печати отчетов,
обработки данных реализации и возврата чеков.
Каждая операция выполняется с блокировкой (чтобы не выполнялось сразу несколько операций),
и если обнаруживается, что устройство занято, возвращается специальный статус (например, "BUSY"),
однако в нормальных условиях эта ситуация не должна возникать.
| Method Name | Request Type | Response Type | Description |
| Heartbeat | HeartbeatRequest | HeartbeatResponse | Heartbeat Проверяет работоспособность сервиса. Возможные коды статусов: - "OK" – сервис работает корректно; - "BUSY" – устройство занято выполнением другой операции (технический код, не ожидается в норме). |
| OpenShift | OpenShiftRequest | OpenShiftResponse | OpenShift Открывает смену для кассира. Последовательность операций: 1. Запрос состояния устройства (QueryData). Ошибка возвращает код "1". 2. Если смена уже открыта, возвращается "SUCCESS" с сообщением "Shift is already opened". 3. Если смена истекла, возвращается код "2" с сообщением "Shift is expired". 4. Выполняется вход оператора (OperatorLogin). При ошибке возвращается "1". 5. Открытие смены (OpenShift). При ошибке возвращается "1". 6. Проверка закрытия предыдущего документа (CheckDocumentClosed). Если документ не закрыт – код "1" с сообщением "Not closed". 7. Если печать не завершена, вызывается ContinuePrint; ошибка также возвращает "1". 8. При успешном выполнении возвращается "SUCCESS" с сообщением "Shift opened successfully". |
| CloseShift | OpenShiftRequest | OpenShiftResponse | CloseShift Закрывает смену для кассира. Последовательность операций: 1. Запрос состояния устройства. Ошибка возвращает "1". 2. Если смена уже закрыта, возвращается "2" с сообщением "Shift is already closed". 3. Выполняется вход оператора (OperatorLogin); ошибка – "1". 4. Формируется отчет закрытия смены (Report); ошибка – "1". 5. Проверка закрытия документа; ошибка – "1". 6. При успешном выполнении возвращается "SUCCESS" с сообщением "Shift closed successfully". |
| OpenReceipt | OpenReceiptRequest | OpenReceiptResponse | OpenReceipt Открывает чек для продажи или оформления депозита. Последовательность операций: 1. Проверка состояния предыдущего документа (CheckDocumentClosed). Если не закрыт, вызывается CancelReceipt. 2. Выполняется вход оператора (OperatorLogin); ошибка – код "2". 3. Открытие чека (OpenReceipt); ошибка – "3". 4. Печать строки "Ваш код карты:"; ошибка – "4". 5. Печать идентификатора карты (card_uid); ошибка – "5". 6. Печать разделительной линии (************); ошибка – "6". 7. Печать пустой строки (для отступа); ошибка – "7". 8. Если выполняется продажа карты (is_sold_card = true), производится регистрация (Registration); ошибка – "8". 9. Если указан депозит (deposit_sum ≠ 0), производится регистрация; ошибка – "9". 10. Если передан неверный тип оплаты, возвращается код "10" с сообщением "Invalid payment type". 11. Проведение платежа (Payment); ошибка – "11". 12. Закрытие чека (CloseReceipt); ошибка – "12". 13. Проверка закрытия документа (CheckDocumentClosed); ошибка – "13". 14. Если документ так и не закрыт, производится CancelReceipt и возвращается код "14" с сообщением "Receipt was not closed". 15. Если печать не завершена, вызывается ContinuePrint; ошибка – "15". 16. Если указан второй нефискальный документ, осуществляется его печать: - Ошибка начала нефискального документа – "16". - Ошибка печати строки – "17". - Ошибка завершения нефискального документа – "18". - Ошибка финальной проверки закрытия – "19". 17. При успешном выполнении возвращается "SUCCESS" с сообщением "Receipt printed successfully". |
| CancelReceipt | CancelReceiptRequest | CancelReceiptResponse | CancelReceipt Отменяет текущий чек. Последовательность операций: 1. Выполняется вход оператора (OperatorLogin); ошибка – "1". 2. Отмена чека (CancelReceipt); ошибка – "1". 3. При успешном выполнении возвращается "SUCCESS" с сообщением "Receipt closed successfully". |
| ContinuePrint | ContinuePrintRequest | ContinuePrintResponse | ContinuePrint Продолжает печать чека, если предыдущая попытка печати не завершилась. Возможные коды: - "SUCCESS" – печать завершена. - "15" – ошибка продолжения печати. |
| FetchData | FetchDataRequest | FetchDataResponse | FetchData Получает данные о состоянии смены. Последовательность операций: 1. Запрос состояния смены (QueryData); ошибка – "2". 2. Если смена закрыта, возвращается "SUCCESS" с is_shift_open = false. 3. Если смена открыта или истекла, возвращается "SUCCESS" с is_shift_open = true и временем открытия. 4. При неизвестном состоянии возвращается код "3". |
| RepeatReceipt | RepeatReceiptRequest | RepeatReceiptResponse | RepeatReceipt Повторяет последний чек. Последовательность операций: 1. Генерируется отчет по последнему документу (Report); ошибка – "1". 2. При успешном выполнении возвращается "SUCCESS" с сообщением "Receipt repeated successfully". |
| PrintXReport | PrintXReportRequest | PrintXReportResponse | PrintXReport Печатает X-отчет с текущими показателями кассового аппарата. Последовательность операций: 1. Формируется X-отчет (Report); ошибка – "1". 2. При успешном выполнении возвращается "SUCCESS" с сообщением "Receipt repeated successfully". |
| PrintNonFiscalDocument | PrintNonFiscalDocumentRequest | PrintNonFiscalDocumentResponse | PrintNonFiscalDocument Печатает нефискальный документ (например, информационный или рекламный). Последовательность операций: 1. Начало нефискального документа (BeginNonfiscalDocument); ошибка – "1". 2. Печать каждой строки документа (PrintText); ошибка – "2". 3. Завершение документа (EndNonfiscalDocument); ошибка – "3". 4. При успешном выполнении возвращается "SUCCESS" с сообщением "Nonfiscal document printed successfully". |
| RealizationData | RealizationDataRequest | RealizationDataResponse | RealizationData Обрабатывает данные реализации товаров/услуг. Последовательность операций: 1. Выполняется вход оператора (OperatorLogin); ошибка – "1". 2. Данные разбиваются на чанки (по 6 записей). 3. Для каждого чанка: - Открывается чек (OpenReceipt); ошибка – "2". - Для каждой позиции производится регистрация (Registration); ошибка – "3". - Суммируется общая стоимость, проводится платеж (Payment); ошибка – "10". - Закрывается чек (CloseReceipt); ошибка – "4". - Проверяется закрытие документа (CheckDocumentClosed); ошибка – "5". - Если документ не закрыт, производится CancelReceipt и возвращается "6" с сообщением "Receipt was not closed". - Если печать не завершена, вызывается ContinuePrint; ошибка – "7". 4. При успешном выполнении возвращается "SUCCESS" с сообщением "Realization data printed successfully" и количеством обработанных записей. |
| ReturnReceipt | ReturnRequest | ReturnResponse | ReturnReceipt Осуществляет возврат чека. Последовательность операций: 1. Проверяется состояние документа; если документ не закрыт или не напечатан, вызывается CancelReceipt. 2. Выполняется вход оператора (OperatorLogin); ошибка – "2". 3. Открывается чек для возврата (тип чека: SELL_RETURN); ошибка – "3". 4. В зависимости от типа операции (содержащейся в CardOperation.action_name): - При "Продажа": производится регистрация; ошибка – "4". - При "Пополнение": производится регистрация; ошибка – "4". - Если название операции неверное, возвращается "5" с сообщением "Invalid action name". 5. Если указан неверный тип оплаты, возвращается "6". 6. Проводится платеж (Payment); ошибка – "7". 7. Закрывается чек (CloseReceipt); ошибка – "8". 8. Проверяется закрытие документа (CheckDocumentClosed); ошибка – "9". 9. Если документ не закрыт, производится CancelReceipt и возвращается "14" с сообщением "Receipt was not closed". 10. Если печать не завершена, вызывается ContinuePrint; ошибка – "15". 11. Если указан дополнительный нефискальный документ: - Ошибка начала печати – "SUCCESS" с сообщением "Failed to begin nonfiscal document". - Ошибка печати строки – "SUCCESS" с соответствующим сообщением. - Ошибка завершения печати – "SUCCESS" с сообщением "Failed to end nonfiscal document". 12. При успешном выполнении возвращается "SUCCESS" с сообщением "Receipt printed successfully". |
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
| double | double | double | float | float64 | double | float | Float | |
| float | float | float | float | float32 | float | float | Float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| bool | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |