Сокет API кассы
- 1 Использование API
- 2 Идентификация заказа и сессии
- 3 Транспорт и протокол
- 4 Формат сообщений
- 5 Типы сообщений
- 6 Коды ошибок и их описание
- 6.1 Объект ошибки
- 7 Объект заказа
- 8 Аутентификация
- 8.1 Формат запроса
- 8.2 Формат ответа
- 9 Проверить соединение
- 9.1 Формат запроса
- 9.2 Формат ответа
- 10 Создать заказ
- 10.1 Формат запроса
- 10.2 Формат ответа
- 11 Получить заказ
- 11.1 Формат запроса
- 11.2 Формат ответа
- 12 Применить скидку мерчанта
- 12.1 Формат запроса
- 12.2 Формат ответа
- 13 Обновить статус заказа
- 13.1 Формат ответа
- 14 Закрыть заказ
- 14.1 Формат запроса
- 14.2 Формат ответа
- 15 Получить все заказы
- 15.1 Формат запроса
- 15.2 Формат ответа
- 16 Сохранить настройки кассы
- 16.1 Формат запроса
- 16.2 Формат ответа
- 17 Получить настройки кассы
- 17.1 Формат запроса
- 17.2 Формат ответа
Использование API
Cashbox API - программный интерфейс для работы с онлайн-платежами, выполненными с помощью сервиса SWiP. Позволяет совершать платежи и выполнять их отмену, получать выписку со всеми заказами, произведенными через платежную систему SWiP.
Идентификация заказа и сессии
Идентификаторами заказа являются поля id
и merchantOrderId
.
| Идентификатор в системе SWiP. Касса не должна его ставить. Касса создает заказ, посылая объект заказа (Order). Обратно приходит так же объект Order c установленным полем id. Дальше это поле используется в запросах GET. |
---|---|
| Идентификатор заказа у мерчанта. |
| Дополнительное поле для идентификации заказа при оплате через SELFIETOPAY (STP). |
Идентификатором сессии является поле sessionCode.
| Идентификатор сессии (текстовое значение зашифрованное в QR-коде). Если касса работает в режиме ресторана, то QR-код берется из ответа сервера на запрос создания заказа. |
---|
Транспорт и протокол
В качестве транспорта используется TCP/IP протокол. Сообщения кодируются в формат Google Protobuf.
Спецификация сообщений находится здесь.
Формат сообщений
Сообщения состоят из заголовка и тела.
header - 22 байта:
bodyLength - 4 байта
messageId - 2 байта
reserved - 16 байт (будет заполнено нулями, зарезервировано для будущего использования)
body
Логика обработки сообщения следующая:
Читаем 22 байта из сокета;
Определяем bodyLength и messageId;
Читаем <bodyLength> байт из потока;
Вызываем соответствующий обработчик protobuf для декодирования сообщения.
При этом в реализации нужно добавить проверку на длину сообщения. Если длина больше определенной длины, например 10Mb, то возможно сообщение неправильно прочитано (не сначала). Также при декодировании с помощью protobuf может произойти ошибка из-за неправильного формата. В обоих случаях необходимо делать реконнект.
Типы сообщений
Каждое сообщение имеет свой MessageId, который будет передаваться в типе сообщения. Ниже представлен список сообщений и их идентификаторы.
ERROR | 1 |
CASH_LOGIN_REQUEST | 12 |
LOGIN_RESPONSE | 11 |
CASH_CREATE_ORDER_REQUEST | 200 |
CASH_CREATE_ORDER_RESPONSE | 201 |
CASH_GET_ORDER_REQUEST | 210 |
CASH_GET_ORDER_RESPONSE | 211 |
CASH_GET_ORDER_LIST_REQUEST | 220 |
CASH_GET_ORDER_LIST_RESPONSE | 221 |
CASH_CLOSE_ORDER_REQUEST | 230 |
CASH_CLOSE_ORDER_RESPONSE | 231 |
CASH_ORDER_STATUS_UPDATED | 240 |
CASH_SAVE_SETTING_REQUEST | 250 |
CASH_SAVE_SETTING_RESPONSE | 251 |
CASH_GET_SETTING_REQUEST | 260 |
CASH_GET_SETTING_RESPONSE | 261 |
HEARTBEAT_REQUEST | 0 |
HEARTBEAT_RESPONSE | 2 |
CASH_ORDER_APPLY_MERCHANT_DISCOUNT_REQUEST | 270 |
CASH_ORDER_APPLY_MERCHANT_DISCOUNT_RESPONSE | 271 |
Коды ошибок и их описание
1 | INTERNAL SERVER ERROR |
2 | AUTHENTICATION ERROR |
4 | ACCESS DENIED |
5 | VALIDATION FAILED |
6 | ILLEGAL STATE |
7 | METHOD NOT SUPPORTED |
8 | DUPLICATE |
9 | NOT FOUND |
10 | UNSUPPORTED MESSAGE |
11 | ORDER FLOW VIOLATION |
12 | SMS CODE EXPIRED |
13 | OPERATION TIMED OUT |
14 | DOESNT MATCH |
15 | PAYMENTS BLOCKED |
16 | TOKEN EXPIRED |
17 | JWT TOKEN ERROR |
18 | CONCURRENT PAYMENT ERROR |
19 | BANK PAYMENT ERROR |
20 | PAYMENT CARD BLOCKED |
21 | ACCOUNTING ERROR |
22 | REQUEST LIMIT EXCEEDED |
23 | EXTERNAL SYSTEM ERROR |
24 | CASHBACK PAYMENT ERROR |
25 | OPERATION IN PROGRESS |
26 | CUSTOMER DUPLICATE PIN |
27 | REVERSE UNAVAILABLE |
28 | ORDER ALREADY EXISTS |
29 | ORDER ALREADY REFUNDED |
30 | ORDER ALREADY CONFIRMED |
31 | ORDER NOT PAID |
32 | EXCESS TOTAL AMOUNT |
Объект ошибки
Если при выполнении запроса произошла ошибка, вернется следующий объект:
1
2
3
4
5
message Error {
string requestId = 1; // уникальный идентификатор сообщения в сокет канале
string description = 2; // описание ошибки
int32 errorCode = 3; // код внутренней ошибки SWiP
}
Объект заказа
Объект заказа (Order) содержит всю информацию о заказе, актуальную на текущий момент времени. Он формируется при создании заказа и приходит в ответ на некоторые запросы.
В объекте заказа могут приходить другие поля, которые касса сейчас не использует. Их необходимо игнорировать.
* поля, которые должна проставлять касса.
| UUID | Код сессии, генерируемый клиентом Cash Gate, в частности QR-код (только в режиме фастфуда или магазина). |
| string | Альтернатива QR-кода. |
| string | Идентификатор ордера в системе SWiP. |
| string | Идентификатор клиента оплатившего заказ. Значение присутствует после закрытия заказа. |
| string | Идентификатор мерчанта в системе SWiP. |
| string | Название мерчанта. |
| string | Идентификатор изображения в профиле мерчанта. |
| string | Описание сферы деятельности мерчанта. |
| string | Идентификатор заказа в системе мерчанта. |
| string | Номер заказа в системе мерчанта (обычно печатается в чеке). |
| string | Идентификатор торговой точки. |
| string | Идентификатор кассы или группы касс. |
| string | Идентификатор кассира. |
| string | Имя кассира. |
| long | Время заказа (в миллисекундах с 01.01.1970). |
| double | Сумма покупки с учетом скидки. |
| double | Сумма покупки без скидки. |
| double | Сумма кэшбэка. |
| double | Сумма скидки. |
| double | Скидка (сумма баллов и дисконта), которую предоставляет SWiP. |
| repeated Purchase | Список покупок. |
| OrderStatus | Статус заказа. Возможные значения: OPEN, CLOSED, LOYALTY_CALCULATION |
| PaymentMethod | Способ оплаты. Возможные значения: CARD, CREDIT, CASH. |
| string | Дополнительный идентификатор заказа (one time paid). Необходим для включения камеры. |
| double | Сумма, оплаченная клиентом через приложение. Значение присутствует после закрытия заказа. |
| double | Сумма, оплаченная клиентом через приложение, но не подтвержденная кассой (paid>=unconfirmed). |
| double | Сумма, которую касса считает к закрытию заказа. Значение присутствует после закрытия заказа. |
| int32 | Баллы, доступные для списания. |
| double | Доля рубля в 1 балле. |
| double | Скидка, полученная при списании баллов. |
| int32 | Количество заработанных баллов в этом заказе. |
| int32 | Количество баллов, которые списываются в этом заказе. |
| PaymentWay | Способ оплаты. Возможные значения: APP, STP. |
| integer | Версия API, по которой оплачен заказ. |
| string | Форматированный текст (80 символов в ширину) с банковской информацией о платеже. |
| string | Авторизационный код платежа. |
| string | Номер банковского терминала. |
| string | Маскированный номер карты. |
| string | Уникальный идентификатор банковской транзакции, который назначается банком Эквайрером при инициализации платежа. |
| string | Последняя ошибка при оплате заказа. |
| double | Скидка, которую предоставляет мерчант. |
| string | Уникальный идентификатор дисконтной карты. |
| string | Идентификатор товара в системе SWiP |
| string | Артикул (идентификатор товара). |
| string | Название товара. |
| double | Количество (штук, килограмм, литров). |
| double | Стоимость (price * quantity). |
| double | Цена. |
| double | Сумма скидки. |
| double | Скидка, которую предоставляет мерчант. |
| string | Единицы измерения. |
Пример объекта Order
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1;
string shortCode = 2;
string id = 3;
string customerId = 4;
string merchantId = 5;
string merchantName = 6;
string merchantProfileImageId = 7;
string merchantCategory = 8;
string merchantOrderId = 9;
string merchantOrderNumber = 10;
string merchantStore = 11;
string merchantCash = 12;
string merchantCashierId = 13;
string merchantCashier = 14;
int64 saleDate = 15;
double total = 16;
double totalOriginal = 17;
double cashback = 18;
double discount = 19;
double swipDiscount = 20;
repeated Purchase purchases = 21;
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32;
PaymentMethod paymentMethod = 33;
string otp = 34;
int32 apiVersion = 35;
string slip = 36;
string rrn = 37;
string authorizationCode = 38;
string terminalNo = 39;
string pan = 40;
double merchantDiscount = 41;
string discountCard = 42;
}
Пример объекта Purchase
1
2
3
4
5
6
7
8
9
10
11
message Purchase {
string id = 1;
string productId = 2;
string name = 3;
double quantity = 4;
double amount = 5;
double price = 6;
double discount = 7;
double merchantDiscount = 8;
string unit = 9;
}
Аутентификация
Требуется для идентификации в системе SWiP.
Формат запроса
Для аутентификации необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор мерчанта в системе SWiP. |
| string, обязательный | Токен для аутентификации. Берется из личного кабинета мерчанта в SWiP. |
| string, обязательный | Уникальный идентификатор магазина в системе SWiP. |
| string, обязательный | Уникальный идентификатор кассы в системе SWiP. |
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
Пример сообщения запроса
1
2
3
4
5
6
7
message CashLoginRequest {
string merchantId = 1;
string token = 2;
string storeId = 3;
string cashId = 4;
string requestId = 5;
}
Формат ответа
В ответ приходит идентификатор сообщения и объект с информацией об обновлениях программного обеспечения для STP-устройства, если они есть.
Пример сообщения ответа
1
2
3
4
message LoginResponseMessage {
string requestId = 1;
UpdateInfo updateInfo = 2;
}
1
2
3
4
5
message UpdateInfo {
string version = 1;
string url = 2;
bool force = 3;
}
Проверить соединение
Выполняется, чтобы убедиться, что соединение с сервером установлено.
Формат запроса
Для проверки соединения необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| int32, необязательный | Идентификатор S2P-устройства. |
Пример сообщения запроса
1
2
3
4
message HeartBeatRequest {
string requestId = 1;
int64 deviceId = 2;
}
Формат ответа
В ответ приходит идентификатор сообщения.
Пример сообщения ответа
1
2
3
message HeartbeatResponse {
string requestId = 1;
}
Создать заказ
Чтобы отправить заказ на оплату, следует создать объект заказа - Order. Он содержит всю необходимую информацию для проведения оплаты.
Формат запроса
Для создания заказа необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Код сессии, генерируемый клиентом Cash Gate, в частности QR-код. |
| string, обязательный | Уникальный идентификатор заказа у мерчанта. |
| string, обязательный | Идентификатор чека у мерчанта. |
| string, обязательный | Имя кассира. |
| string, обязательный | Идентификатор кассира. |
| long, обязательный | Время продажи. |
| double, обязательный | Сумма покупки с учетом скидки. |
| double, обязательный | Сумма без скидки. |
| repeated Purchase, обязательный | Список покупок. |
Пример сообщения запроса
1
2
3
4
message CashCreateOrderRequest {
string requestId = 1;
NewOrder newOrder = 2;
}
1
2
3
4
5
6
7
8
9
10
11
message NewOrder {
string sessionCode = 1;
string merchantOrderId = 2;
string merchantOrderNumber = 3;
string merchantCashierId = 4;
string merchantCashier = 5;
sint64 saleDate = 6;
double total = 7;
double totalOriginal = 8;
repeated Purchase purchases = 9;
}
Формат ответа
В ответ на запрос придет тот же заказ с проставленными полями: id - SWiP orderId, sessionCode. Если sessionCode был отправлен пустым, то обратно вернется заполненное поле, его надо напечатать в пречеке или показать на экране (кассовом) покупателю.
Пример сообщения ответа
1
2
3
4
message CashCreateOrderResponse {
string requestId = 1;
Order order = 2;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1; // текстовое значение QR-кода
string shortCode = 2; // альтернатива QR-кода
string id = 3; // идентификатор заказа в системе SWiP
string customerId = 4;
string merchantId = 5; // идентификатор мерчанта
string merchantName = 6; // название мерчанта
string merchantProfileImageId = 7; // идентификатор изображения в профиле мерчанта
string merchantCategory = 8; // категория мерчанта
string merchantOrderId = 9; // уникальный идентификатор заказа у мерчанта
string merchantOrderNumber = 10; // идентификатор чека у мерчанта
string merchantStore = 11; // идентификатор торговой точки
string merchantCash = 12; // идентификатор кассы или группы касс
string merchantCashierId = 13; // идентификатор кассира
string merchantCashier = 14; // имя кассира
sint64 saleDate = 15; // дата продажи
double total = 16; // сумма (с учетом скидки, если таковая есть у клиента)
double totalOriginal = 17; // сумма (без учета скидки)
double cashback = 18; // размер кэшбэка
double discount = 19; // сумма скидки
double swipDiscount = 20; // скидка (сумма баллов и дисконта), которую предоставляет SWiP
repeated Purchase purchases = 21; // список покупок (товары в чеке)
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32; // статус заказа
PaymentMethod paymentMethod = 33; // способ оплаты
int32 apiVersion = 34; // версия API
string otp = 35; // дополнительный идентификатор заказа (one time paid)
string slip = 36;
string rrn = 37; // уникальный идентификатор банковской транзакции
string authorizationCode = 38; // авторизационный код платежа
string terminalNo = 39; // номер банковского терминала
string pan = 40; // маскированный номер карты
double merchantDiscount = 41; // скидка, предоставляемая мерчантом
string discountCard = 42; // идентификатор дисконтной карты
}
Получить заказ
Сообщение позволяет получить информацию о текущем состоянии заказа по его уникальному идентификатору.
Формат запроса
Для получения текущего состояния заказа необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Уникальный идентификатор заказа в системе SWiP. |
Пример сообщения запроса
1
2
3
4
message CashGetOrderRequest {
string requestId = 1;
string orderId = 2;
}
Формат ответа
В ответ приходит объект заказа в актуальном статусе.
Пример сообщения ответа
1
2
3
4
message CashGetOrderResponse {
string requestId = 1;
Order order = 2;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1;
string shortCode = 2;
string id = 3;
string customerId = 4;
string merchantId = 5;
string merchantName = 6;
string merchantProfileImageId = 7;
string merchantCategory = 8;
string merchantOrderId = 9;
string merchantOrderNumber = 10;
string merchantStore = 11;
string merchantCash = 12;
string merchantCashierId = 13;
string merchantCashier = 14;
int64 saleDate = 15;
double total = 16;
double totalOriginal = 17;
double cashback = 18;
double discount = 19;
double swipDiscount = 20;
repeated Purchase purchases = 21;
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32;
PaymentMethod paymentMethod = 33;
int32 apiVersion = 34;
string otp = 35;
string slip = 36;
string rrn = 37;
string authorizationCode = 38;
string terminalNo = 39;
string pan = 40;
double merchantDiscount = 41;
string discountCard = 42;
}
Применить скидку мерчанта
Применяет скидку мерчанта для заказа в статусе LOYALTY_CALCULATION.
Формат запроса
Для применения скидки мерчанта необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Уникальный идентификатор заказа в системе SWiP. |
| double, обязательный | Скидка, предоставляемая мерчантом. |
| double, обязательный | Общая сумма заказа. |
| repeated Purchase, обязательный | Список покупок. |
Пример сообщения запроса
1
2
3
4
5
6
7
message CashOrderApplyMerchantDiscountRequest {
string requestId = 1;
string orderId = 2;
double merchantDiscount = 3;
double total = 4;
repeated Purchase purchases = 5;
}
1
2
3
4
5
6
7
8
9
10
11
message Purchase {
string id = 1;
string productId = 2;
string name = 3;
double quantity = 4;
double amount = 5;
double price = 6;
double discount = 7;
double merchantDiscount = 8;
string unit = 9;
}
Формат ответа
В ответ приходит объект заказа в актуальном статусе.
Пример сообщения ответа
1
2
3
4
message CashOrderApplyMerchantDiscountResponse {
string requestId = 1;
Order order = 2;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1;
string shortCode = 2;
string id = 3;
string customerId = 4;
string merchantId = 5;
string merchantName = 6;
string merchantProfileImageId = 7;
string merchantCategory = 8;
string merchantOrderId = 9;
string merchantOrderNumber = 10;
string merchantStore = 11;
string merchantCash = 12;
string merchantCashierId = 13;
string merchantCashier = 14;
int64 saleDate = 15;
double total = 16;
double totalOriginal = 17;
double cashback = 18;
double discount = 19;
double swipDiscount = 20;
repeated Purchase purchases = 21;
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32;
PaymentMethod paymentMethod = 33;
int32 apiVersion = 34;
string otp = 35;
string slip = 36;
string rrn = 37;
string authorizationCode = 38;
string terminalNo = 39;
string pan = 40;
double merchantDiscount = 41;
string discountCard = 42;
}
Обновить статус заказа
После оплаты заказа приходит сообщение с обновленным статусом оплаты на сервере SWiP.
Формат ответа
Пример сообщения
1
2
3
4
5
6
7
8
9
10
11
12
message CashOrderStatusUpdated {
string requestId = 1;
string orderId = 2;
double totalOriginal = 3;
double total = 4;
double paid = 5;
double unconfirmed = 6;
double refunded = 7;
OrderStatus orderStatus = 8;
string discountCard = 9;
double swipDiscount = 10;
}
Закрыть заказ
Сообщение вызывает закрытие заказа.
Сообщение для закрытия может быть отправлено один раз. В случае ошибки в процессе закрытия, деньги за заказ будут возвращены.
Формат запроса
Для закрытия заказа необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Уникальный идентификатор заказа в системе SWiP. |
| double, обязательный | Сумма, которую касса передает к закрытию заказа. |
Пример сообщения запроса
1
2
3
4
5
message CashCloseOrderRequest {
string requestId = 1;
string orderId = 2;
double amountToClose = 3;
}
Формат ответа
В ответ приходит объект заказа в актуальном статусе.
Пример сообщения ответа
1
2
3
4
message CashCloseOrderResponse {
string requestId = 1;
Order order = 2;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1;
string shortCode = 2;
string id = 3;
string customerId = 4;
string merchantId = 5;
string merchantName = 6;
string merchantProfileImageId = 7;
string merchantCategory = 8;
string merchantOrderId = 9;
string merchantOrderNumber = 10;
string merchantStore = 11;
string merchantCash = 12;
string merchantCashierId = 13;
string merchantCashier = 14;
int64 saleDate = 15;
double total = 16;
double totalOriginal = 17;
double cashback = 18;
double discount = 19;
double swipDiscount = 20;
repeated Purchase purchases = 21;
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32;
PaymentMethod paymentMethod = 33;
int32 apiVersion = 34;
string otp = 35;
string slip = 36;
string rrn = 37;
string authorizationCode = 38;
string terminalNo = 39;
string pan = 40;
double merchantDiscount = 41;
string discountCard = 42;
}
Получить все заказы
Запрашивает список заказов за указанный период. Необходим, если на кассе произошел сбой. Данный метод возвращает заказы только в статусе CLOSED.
Формат запроса
Для получения всех заказов необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения. |
| google.protobuf.UInt64Value, необязательный | Дата начала периода (в миллисекундах с 01.01.1970). |
| google.protobuf.UInt64Value, необязательный | Дата окончания периода (в миллисекундах с 01.01.1970). |
Если период не будет указан, то сервер вернет список заказов за текущий день.
Пример сообщения запроса
1
2
3
4
5
message CashGetOrderListRequest {
string requestId = 1;
google.protobuf.UInt64Value from = 2;
google.protobuf.UInt64Value to = 3;
}
Формат ответа
В ответ приходит список объектов заказа за текущий день или указанный период.
Пример сообщения ответа
1
2
3
4
message CashGetOrderListResponse {
string requestId = 1;
repeated Order orders = 2; // список объектов заказа
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
message Order {
string sessionCode = 1;
string shortCode = 2;
string id = 3;
string customerId = 4;
string merchantId = 5;
string merchantName = 6;
string merchantProfileImageId = 7;
string merchantCategory = 8;
string merchantOrderId = 9;
string merchantOrderNumber = 10;
string merchantStore = 11;
string merchantCash = 12;
string merchantCashierId = 13;
string merchantCashier = 14;
int64 saleDate = 15;
double total = 16;
double totalOriginal = 17;
double cashback = 18;
double discount = 19;
double swipDiscount = 20;
repeated Purchase purchases = 21;
double paid = 22;
double unconfirmed = 23;
double closeAmount = 24;
int32 availablePoints = 25;
string error = 26;
double pointsRate = 27;
double pointsAsDiscount = 28;
int32 awardPoints = 29;
int32 withdrawPoints = 30;
PaymentWay paymentWay = 31;
OrderStatus orderStatus = 32;
PaymentMethod paymentMethod = 33;
int32 apiVersion = 34;
string otp = 35;
string slip = 36;
string rrn = 37;
string authorizationCode = 38;
string terminalNo = 39;
string pan = 40;
double merchantDiscount = 41;
string discountCard = 42;
}
Сохранить настройки кассы
Используется для сохранения на сервере прикрепленного к кассе QR-кода.
Формат запроса
Для сохранения настроек кассы необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Название настройки (QR). |
| string, обязательный | Значение настройки. |
Пример сообщения запроса
1
2
3
4
5
message CashSaveSettingRequest {
string requestId = 1;
string settingName = 2;
string settingValue = 3;
}
Формат ответа
В ответ приходит идентификатор сообщения.
1
2
3
message CashSaveSettingResponse {
string requestId = 1;
}
Получить настройки кассы
Запрашивает на сервере значение прикрепленного к кассе QR-кода.
Формат запроса
Для получения настроек кассы необходимо отправить сообщение с передачей следующих параметров:
| string, обязательный | Уникальный идентификатор сообщения в сокет канале. |
| string, обязательный | Название настройки (QR). |
Пример сообщения запроса
1
2
3
4
message CashGetSettingRequest {
string requestId = 1;
string settingName = 2;
}
Формат ответа
В ответ приходят настройки кассы.
Пример сообщения ответа
1
2
3
4
5
message CashGetSettingResponse {
string requestId = 1;
string settingName = 2;
string settingValue = 3;
}