Запрос на списание бонусов
Для списания бонусов необходимо выполнить POST-запрос на URL:
http://<host>:<port>/spendbonus
Пример запроса через curl
:
curl -i -X POST -d @check.json http://localhost:8090/spendbonus --header "Content-Type: application/json"
, где localhost:8090
– это <host>:<port>
виртуальной кассы, а check.json
– это файл с содержимым чека.
Структура запроса
Структура запроса в формате json
:
{ "check": { "cards": [ { "bonusbalance": 60304.67, "cardmode": 1, "idcardgroup": 2, "namecardgroup": "Группа карт 1", "number": "1010" } ], "coupons": [ { "number": "2232", "type": 1 } ], "identifier": "c4h1k7vnw56psuv8f", "pointsForEarn": 21.4, "pointsForSpend": 21.46, "positions": [ { "barcode": "1094", "code": "1094", "dept": 1, "discounts": [ { "campaigncode": 1061159515, "campaignname": "11212", "discountcode": 1061159516, "discountmode": 1, "discountname": "Скидка на товар", "discountrate": 10, "discountsum": 15.9, "discounttype": 1, "ispositiondiscount": 1, "minpriceignored": false, "posnum": 1 } ], "earnedbonuses": [ { "amount": 14.3, "campaigncode": 1, "campaignname": "1", "cardnumber": "1010", "ispositionbonus": 0 }, { "amount": 7.1, "campaigncode": 1, "campaignname": "1", "cardnumber": "1010", "ispositionbonus": 0 } ], "measure": 1, "measurename": "шт", "minprice": 14.31, "name": "МУКА МАРИЯ В/С ГОСТ 1КГ", "paymentmethod": 0, "paymentobject": 0, "posnum": 1, "price": 15.9, "quant": 10, "sum": 143.1, "sumWithoutDiscounts": 159, "taramode": 0, "vatcode": 4, "vatrate": 4, "vatsum": 5.18689570490239 } ], "signature": "9f940b3de52a5f389b53957ed69f3c2b", "sum": 143.1 }, "bonusSum": 10 }
Параметры тела запроса:
Наименование | Тип данных | Описание |
---|---|---|
check | object | Результат запроса calculateDiscount |
bonusSum | double | Сумма бонусов на карте |
Параметры объекта check
:
Наименование | Тип данных | Описание |
---|---|---|
identifier | string | Для внутреннего использования |
pointsForEarn | double | Сумма баллов для начисления |
pointsForSpend | double | Сумма баллов для списания |
signature | string | Для внутреннего использования |
sum | double | Сумма документа |
cards | object | Объект "карты" |
coupons | object | Объект "купоны" |
position | object | Объект "позиции" |
Способ ввода для группы карт должен быть установлен "Удаленно".
При работе с сервисом онлайн-карт группы карт должны быть выгружены в базу данных того магазина, в который отправляется запрос.
Параметры объекта cards:
Наименование | Тип данных | Описание |
---|---|---|
bonusbalance | double | Баланс бонусных баллов |
cardmode | int | Тип карты |
idcardgroup | int | Идентификационный номер группы карт, к которой относится данная карта |
namecardgroup | string | Имя группы, к которой относится карта |
number | int | Номер карты |
Параметры объекта coupons
:
Наименование | Тип данных | Описание |
---|---|---|
number | int | Номер купона |
type | int | Тип купона |
Параметры объекта positions
:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
barcode | string | Штрих-код товара | |
code | string | Код товара | |
dept | int | Отдел | |
measure | int | Код единицы измерения | |
measurename | string | Наименование единицы измерения | |
minprice | double | Минимальная цена товара | |
name | string | Название позиции | |
paymentmethod | int | Признак способа расчета | |
paymentobject | int | Признак предмета расчета | |
posnum | int | Номер позиции в чеке | |
price | double | Цена товара | |
quant | double | Количество товара | |
sum | int | Сумма со скидкой | |
sumWithoutDiscounts | int | Сумма без скидки | |
taramode | int | Для внутреннего использования | |
vatcode | string | Код налога | |
vatrate | double | Ставка налога | Можно указать 0. Используется для печати отчетов. |
vatsum | double | Сумма налога | Можно указать 0. Используется для печати отчетов. |
Параметры объекта discounts
:
Наименование | Тип данных | Описание |
---|---|---|
campaigncode | int | Код акции |
campaignname | string | Название акции |
discountcode | int | Код правила начисления акции |
discountmode | int | Тип правила начисления акции |
discountname | string | Наименование правила начисления акции |
discountrate | int | Процент скидки на позицию |
discountsum | double | Сумма скидки на позицию |
discounttype | int | Тип скидки:
|
ispositiondiscount | int | Флаг на что применялась скидка:
|
minpriceignored | tinyint | Флаг игнорирования минимальной цены при применении скидки |
posnum | int | Номер позиции в чеке |
Параметры объекта earnedbonuses
:
Наименование | Тип данных | Описание |
---|---|---|
amount | decimal | Сумма начисления/списания бонусов |
campaigncode | int | Код акции |
campaignname | string | Наименование акции |
cardnumber | int | Номер карты |
ispositionbonus | int | Признак начисления на позицию |
Пример ответа
{ "cards": [ { "bonusbalance": 105141.86, "cardmode": 1, "idcardgroup": 1, "namecardgroup": "Карта клиента", "number": "1010" } ], "coupons": [ { "number": "2232", "type": 1 } ], "identifier": "c4h1k7vnw56psuv8fz12", "pointsForEarn": 14.0, "positions": [ { "barcode": "4600605000991", "code": "105", "dept": null, "discounts": [ { "campaigncode": 99, "campaignname": "Акция выходного дня", "discountcode": 1, "discountmode": 2, "discountname": "Акция выходного дня", "discountrate": 13.0, "discountsum": 13.0, "discounttype": 2, "ispositiondiscount": 0, "minpriceignored": false, "posnum": 1 }, { "campaigncode": 100, "campaignname": "Спасибо за покупку", "discountcode": 1, "discountmode": 1, "discountname": "Спасибо за покупку", "discountrate": 200.0, "discountsum": 27.0, "discounttype": 2, "ispositiondiscount": 0, "minpriceignored": false, "posnum": 1 } ], "earnedbonuses": [ { "amount": 14.0, "assettimebeg": "", "assettimeend": "", "campaigncode": 104, "campaignname": "Начисление бонусов", "cardnumber": "1010", "ispositionbonus": 0, "weight": 0 } ], "isallowbonusspend": true, "measure": 1, "measurename": "шт", "minprice": 30.0, "name": "МОЛОЧНЫЙ ДЕСЕРТ ДАНОН ДАНИССИМО С ТВОРОЖНЫМ КРЕМОМ ЧЕРНИКА 130Г", "paymentmethod": 0, "paymentobject": 0, "posnum": 1, "price": 38.0, "quant": 5.0, "spentbonuses": [ { "campaigncode": 103, "campaignname": "Акция на списание бонусов", "cardnumber": "1010", "discountcode": 104, "discountmode": 2, "discountname": "Списание бонусов", "discountsum": 10.0, "discounttype": 5, "ispositiondiscount": 0, "posnum": 1, "sessionid": "" } ], "sum": 140.0, "sumWithoutDiscounts": 190.0, "taramode": 0, "tmc": { "minprice": 22.41, "price": 24.9 }, "vatcode": -1, "vatrate": 0.0, "vatsum": 0.0 } ], "sum": 140.0 }