Запрос на списание бонусов

Для списания бонусов необходимо выполнить 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
}

Параметры тела запроса:

НаименованиеТип данныхОписание
checkobjectРезультат запроса calculateDiscount
bonusSumdoubleСумма бонусов на карте

Параметры объекта check:

НаименованиеТип данныхОписание
identifierstringДля внутреннего использования
pointsForEarndoubleСумма баллов для начисления
pointsForSpenddoubleСумма баллов для списания
signaturestringДля внутреннего использования
sumdoubleСумма документа
cardsobjectОбъект "карты"
couponsobjectОбъект "купоны"
positionobjectОбъект "позиции"

Способ ввода для группы карт должен быть установлен "Удаленно".

При работе с сервисом онлайн-карт группы карт должны быть выгружены в базу данных того магазина, в который отправляется запрос.

Параметры объекта cards:

НаименованиеТип данныхОписание
bonusbalancedoubleБаланс бонусных баллов
cardmodeintТип карты
idcardgroupint

Идентификационный номер группы карт, к которой относится данная карта

namecardgroupstringИмя группы, к которой относится карта
numberintНомер карты

Параметры объекта coupons:

НаименованиеТип данныхОписание
numberintНомер купона
typeintТип купона

Параметры объекта positions:

НаименованиеТип данныхОписаниеПримечания
barcodestringШтрих-код товара
codestringКод товара
deptintОтдел
measureintКод единицы измерения
measurenamestringНаименование единицы измерения
minpricedoubleМинимальная цена товара
namestringНазвание позиции
paymentmethodintПризнак способа расчета
paymentobjectintПризнак предмета расчета
posnumintНомер позиции в чеке
pricedoubleЦена товара
quantdoubleКоличество товара
sumintСумма со скидкой
sumWithoutDiscountsintСумма без скидки
taramodeintДля внутреннего использования
vatcodestringКод налога
vatratedoubleСтавка налогаМожно указать 0. Используется для печати отчетов.
vatsumdoubleСумма налогаМожно указать 0. Используется для печати отчетов.

Параметры объекта discounts:

НаименованиеТип данныхОписание
campaigncodeintКод акции
campaignnamestringНазвание акции
discountcodeintКод правила начисления акции
discountmodeintТип правила начисления акции
discountnamestringНаименование правила начисления акции
discountrateintПроцент скидки на позицию
discountsumdoubleСумма скидки на позицию
discounttypeint

Тип скидки:

  • 1 - процентная;
  • 2 - суммовая;
  • 3 - индекс цены.
ispositiondiscountint

Флаг на что применялась скидка:

  • 0 - на чек;
  • 1 - на позицию.
minpriceignoredtinyint

Флаг игнорирования минимальной цены при применении скидки

posnumintНомер позиции в чеке

Параметры объекта earnedbonuses:

НаименованиеТип данныхОписание
amountdecimal

Сумма начисления/списания бонусов

campaigncodeintКод акции
campaignnamestringНаименование акции
cardnumberintНомер карты
ispositionbonusintПризнак начисления на позицию

Пример ответа

{
    "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
}
  • No labels