Protocol Documentation

Table of Contents

proto/service.proto

Top

CancelReceiptRequest

CancelReceiptRequest – запрос на отмену чека.

FieldTypeLabelDescription
cashier_name string

Имя кассира, для которого производится отмена чека.

receipt_id string

Идентификатор чека (если требуется).

CancelReceiptResponse

CancelReceiptResponse – ответ на запрос отмены чека.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – чек успешно отменён. "1" – ошибка отмены.

message string

Дополнительное сообщение.

CardOperation

CardOperation – данные об операции с картой, используемые при возврате.

FieldTypeLabelDescription
action_name string

Название операции (например, "Продажа" или "Пополнение").

payment_type string

Тип оплаты в виде строки.

park_name string

Название парка (если применимо).

place string

Название пункта (место проведения операции).

value double

Сумма операции.

date int64

Дата операции в миллисекундах с начала эпохи.

report_id int32

Идентификатор отчета, связанного с операцией.

fl_cancel int32

Флаг, указывающий, требуется ли отмена операции.

ContinuePrintRequest

ContinuePrintRequest – запрос на продолжение печати чека.

FieldTypeLabelDescription
cashier_name string

Имя кассира.

ContinuePrintResponse

ContinuePrintResponse – ответ на запрос продолжения печати.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – чек успешно напечатан. "15" – ошибка продолжения печати.

message string

Дополнительное сообщение.

FetchDataRequest

FetchDataRequest – запрос на получение данных о состоянии смены.

FetchDataResponse

FetchDataResponse – ответ на запрос данных о смене.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – данные успешно получены. "2" – ошибка запроса данных. "3" – неизвестное состояние смены.

is_shift_open bool

Флаг, указывающий, открыта ли смена.

shift_time string

Время открытия смены (если применимо), в формате строки.

HeartbeatRequest

HeartbeatRequest – запрос проверки работоспособности сервиса.

FieldTypeLabelDescription
service_name string

Имя сервиса, для которого выполняется проверка.

HeartbeatResponse

HeartbeatResponse – ответ проверки работоспособности.

FieldTypeLabelDescription
status string

Статус работы: "OK" – сервис работает корректно. "BUSY" – устройство занято (технический код, не ожидается в норме).

OpenReceiptRequest

OpenReceiptRequest – запрос на открытие чека.

FieldTypeLabelDescription
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

OpenReceiptResponse – ответ на запрос открытия чека.

FieldTypeLabelDescription
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

OpenShiftRequest – запрос на открытие смены.

FieldTypeLabelDescription
cashier_name string

Имя кассира, открывающего смену.

OpenShiftResponse

OpenShiftResponse – ответ на запрос открытия смены.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – смена успешно открыта или уже открыта. "1" – общая ошибка (например, ошибка запроса состояния, входа оператора, открытия смены, печати и т.д.). "2" – смена истекла (открыть смену невозможно).

message string

Дополнительное сообщение (например, "Shift is already opened", "Not closed" и т.д.).

PrintNonFiscalDocumentRequest

PrintNonFiscalDocumentRequest – запрос на печать нефискального документа.

FieldTypeLabelDescription
document string

Текст нефискального документа для печати.

PrintNonFiscalDocumentResponse

PrintNonFiscalDocumentResponse – ответ на запрос печати нефискального документа.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – документ успешно напечатан. "1" – ошибка начала печати. "2" – ошибка печати текста. "3" – ошибка завершения печати.

message string

Дополнительное сообщение.

PrintXReportRequest

PrintXReportRequest – запрос на печать X-отчета.

FieldTypeLabelDescription
cashier_name string

Имя кассира.

PrintXReportResponse

PrintXReportResponse – ответ на запрос печати X-отчета.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – X-отчет успешно напечатан. "1" – ошибка печати X-отчета.

message string

Дополнительное сообщение.

RealizationData

RealizationData – данные для формирования отчета по реализации товаров/услуг.

FieldTypeLabelDescription
rep_name string

Наименование позиции (товара или услуги).

pass_count int32

Количество (например, число пассажиров или единиц товара).

total_price int32

Общая стоимость позиции.

RealizationDataRequest

RealizationDataRequest – запрос на обработку данных реализации.

FieldTypeLabelDescription
cashier_name string

Имя кассира, инициирующего операцию.

checkout_name string

Имя кассового аппарата (точка продаж).

realization_data RealizationData repeated

Список данных реализации.

RealizationDataResponse

RealizationDataResponse – ответ на запрос обработки данных реализации.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – данные успешно обработаны. "1" – ошибка входа оператора или отмены. "2" – ошибка открытия чека. "3" – ошибка регистрации позиции. "10" – ошибка проведения платежа. "4" – ошибка закрытия чека. "5" – ошибка проверки закрытия документа. "6" – чек не был закрыт. "7" – ошибка продолжения печати.

message string

Дополнительное сообщение.

rows_affected int32

Количество успешно обработанных записей.

RepeatReceiptRequest

RepeatReceiptRequest – запрос на повторение последнего чека.

FieldTypeLabelDescription
cashier_name string

Имя кассира.

RepeatReceiptResponse

RepeatReceiptResponse – ответ на запрос повторения чека.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – чек успешно повторно напечатан. "1" – ошибка повторения чека.

message string

Дополнительное сообщение.

ReturnRequest

ReturnRequest – запрос на возврат чека.

FieldTypeLabelDescription
cashier_name string

Имя кассира.

checkout_name string

Имя кассового аппарата (точка продаж).

second_receipt_non_fiscal string

Дополнительный нефискальный документ для печати (если требуется).

card_operation CardOperation

Данные по операции с картой (например, "Продажа" или "Пополнение").

payment_type int32

Тип оплаты для возврата: 0 – электронно, 1 – наличными.

total_to_return float

Общая сумма возврата.

ReturnResponse

ReturnResponse – ответ на запрос возврата чека.

FieldTypeLabelDescription
status string

Статус операции: "SUCCESS" – возврат успешно выполнен. "1" – ошибка входа оператора или отмены. "2" – ошибка входа оператора. "3" – ошибка открытия чека для возврата. "4" – ошибка регистрации операции возврата. "5" – неверное название операции. "6" – неверный тип оплаты. "7" – ошибка проведения платежа. "8" – ошибка закрытия чека. "9" – ошибка проверки закрытия документа. "14" – чек не был закрыт. "15" – ошибка продолжения печати.

message string

Дополнительное сообщение.

rows_affected int32

Количество обработанных записей (если применимо).

CashierService

CashierService – сервис для взаимодействия с кассовым устройством.

Сервис предоставляет методы для проверки работоспособности, открытия и закрытия смены,

работы с чеками (открытие, отмена, продолжение печати, повторение), печати отчетов,

обработки данных реализации и возврата чеков.

Каждая операция выполняется с блокировкой (чтобы не выполнялось сразу несколько операций),

и если обнаруживается, что устройство занято, возвращается специальный статус (например, "BUSY"),

однако в нормальных условиях эта ситуация не должна возникать.

Method NameRequest TypeResponse TypeDescription
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".

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
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)