PayOrder
Последнее изменение статьи: 28.10.2025 18:30
Описание
| Назначение в WSA v1 | Оплатить заказ по ключам Objectid+OrderGuid на основе предоплаты. Если передаем валют больше, чем надо для оплаты заказа, то такой платеж не принимаем. Отдаем как ошибку |
| Назначение в WSA v2 | Оплатить заказ по ключам Objectid+OrderGuid на основе оплаты. Если передаем денег больше или меньше, чем надо для оплаты заказа, то такой платеж не принимаем. Отдаем как ошибку |
| Тип запроса | Асинхронный/синхронный |
| Поддерживаемая версия агента | v1, v2 |
| PluggetSystemType | RKMid |
Особенности
Если оплата 100% скидкой, то требуется передавать эту оплату без одной копейки
Формат запроса
{
"taskType": "PayOrder",
"params": {
"async": {
"objectId": number,
"timeout": number
},
"sync": {
"objectId": number,
"timeout": number
},
"cashStationId": number,
"orderGuid": "guid",
"payments": [
{
"amount": number,
"currency": "guid"
"cardCode": "string"
}],
"isFullOrderRequired": bool,
"cashierId": number
}
}
JSON
Описание параметров
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| taskType | Тип задачи | ||
| async | Асинхронный метод | ||
| sync | Синхронный вызов метода (либо синхронный, либо асинхронный) | ||
| |- timeout | int | - | Время ожидания ответа от агента в секундах, по умолчанию 120 секунд |
| |- objectId | int | + | Код ресторана в системе лицензирования |
| isFullOrderRequired | bool | - | Если true - возвращается весь заказ |
| orderGuid | guid | + | Guid заказа по которому требуется провести оплату |
| payments | array | +/- | Массив данных по оплате Если распечатан чек намерения (при работе r_keeper в режиме работы "Чек намерения оплаты"), то не указываем |
| |- amount | string | + | значение суммы на оплату. Разделителем целой и дробной части суммы должна быть точка. |
| |- currency | string | + | guid валюты |
| |-cardCode | string | - | Код карты лояльности |
| cashierId | int | - | Идентификатор кассира. Если не указан, применяется кассир в соответствии с настройками ресторана в административной панели |
| cashStationId | int | - | Id кассовой станции. Если не указан, берется из параметров ресторана установленных в административной панели WS. При указании кассовой станции с mid, отличного от выбранного в "параметрах создания заказа", указываем этот mid в поле systemName Маршрутизация запросов |
Формат ответа
{
"responseCommon":{
"taskGuid":"guid",
"taskType":"PayOrder",
"objectId": number
},
"error":{
"wsError":{
"code":"string",
"desc":"string"
}
}
}
JSON
| Параметр | Тип | Описание |
|---|---|---|
| taskGuid | guid | Уникальный код этой задачи используется при получении задачи через очередь |
| taskType | string enum | Тип задачи |
| objectId | int | Код ресторана в системе лицензирования |
| error | Контейнер ошибок, внутри детализация по связанным системам | |
| - wsError | Ошибки, получаемые от сервиса WhiteServer | |
| – code | string | Код ошибки |
| – desc | string | Описание ошибки |
Формат асинхронного ответа
// Успешный ответ (значит, предоплата прошла!), детальная инфа о заказе не запрошена
// Успешный ответ (значит, предоплата прошла!), детальная инфа о заказе не запрошена
{
"taskResponse": {
"order": {
"status": {
"value": string,
"isBillPrinted": false
},
"price": {
"total": number,
"summToPay": number
}
}
},
"responseCommon": {
"taskGuid": "string",
"taskType": "PayOrder",
"objectId": number
}
}
// Успешный ответ (значит, оплата прошла!), запрошен весь заказ
{
"taskResponse": {
"order": {
"originalOrderId": "string",
"createdAt": "2008-10-17T00:00:00",
"status": {
"value": "string"
},
"delivery": {
"expectedTime": "2008-10-17T00:00:00"
},
"products": [
{ // простой вариант
"ingredients": [
{
"id": "string",
"name": "string",
"quantity": "number"
}
],
"voidingReason":"string",
"id": "string",
"name": "string",
"price": "string",
"quantity": number
}
],
"comment": "string",
"personsQuantity": number
"appliedPayments": [ // только WSA 2
{
"amount": number,
"guid": "guid",
"payType": "enum"
}],
"price": {
"total": number,
"summToPay": number
}
}
},
"responseCommon": {
"taskGuid": "string",
"taskType": "PayOrder",
"objectId": number
}
}
// Ответ с ошибкой
{
"responseCommon": {
"taskGuid": "string",
"taskType": "PayOrder",
"objectId": number
},
"error": {
"wsError": {
"code": "string",
"desc": "string"
},
"agentError": {
"code": "string",
"desc": "string"
}
}
}
JSON
Параметр | Тип параметра | Обязательный | Описание | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| order | да | ||||||||||
| originalOrderId | string | guid заказа, переданного в запросе | |||||||||
| status.value | string | ||||||||||
| status.isBillPrinted | bool | Флаг, показывающий, распечатан ли пречек заказа. | |||||||||
| delivery. expectedTime | DateTime | К какому времени приготовить заказ | |||||||||
| products | array | да | Состав заказа | ||||||||
| - id | guid | да | Идентификатор блюда | ||||||||
| - name | string | Название блюда | |||||||||
| - quantity | int | да | Кол-во блюд | ||||||||
| - voidingReason | string | Причина удаления блюда из заказа (только агент v2) | |||||||||
| - ingredients | array | Ингредиенты или состав комбо-блюда | |||||||||
| – id | guid | да | Идентификатор ингредиента | ||||||||
| comment | string | Комментарий к заказу | |||||||||
| appliedPayments | Оплаты и предоплаты. (только WSA 2) | ||||||||||
- amount | money | + | Значение суммы на оплату. Разделителем целой и дробной части суммы должна быть точка. | ||||||||
| - guid | guid | + | Уникальный идентификатор факта оплаты (поле line_Guid от R-Keeper) | ||||||||
| - payType | enum | + | Тип оплаты: Cash, Card, Unknown. | ||||||||
| price.total | money | да | Полная стоимость заказа | ||||||||
| price.summToPay | money | Сколько надо доплатить для погашения стоимости заказа | |||||||||
| personsQuantity | int | Количество персон | |||||||||
| waiterId | int | Код официанта (только агент v2) | |||||||||
| error | string enum | Контейнер ошибок, см Описание ошибок | |||||||||
| - wsError | string enum | Ошибка Whiteserver | |||||||||
| – code | string | Код ошибки | |||||||||
| – extCode | string | Расширенный код ошибки | |||||||||
| – desc | string | Описание ошибки | |||||||||
| - agentError | string enum | Ошибка от агента. | |||||||||
| – code | string | Кроме существующих, появятся такие коды ошибок (в старом агенте - цифрами):
| |||||||||
| – desc | string | Описание ошибки |