Перейти к основному содержимому

Расчет акций для корзины

В Sailplay API предусмотрено несколько механизмов расчета акций.

Расчет акций для корзины

Метод /marketing-actions/calc/ (см. /api/v2/marketing-actions/calc/) — основной инструмент для расчета акций и решает сразу несколько задач:

  • Применяет акции к корзине и обновляет стоимость товаров согласно конфигурациям акций.
  • Отображает список акций, которые могут быть применены к корзине при выполнении дополнительных условий.
  • Сохраняет информацию о заказе и примененных акциях в базе данных с возможностью ее последующего использования.

Помимо авторизационных данных запрос обязательно должен содержать JSON-строку с информацией о товарах в корзине (cart): их идентификатор в вашей системе (SKU), стоимость позиции товара (произведение количества на цену за единицу) и количество.

Важно

При любых изменениях в составе корзины необходимо отправлять запрос на пересчет акций.

В результате выполнения запроса вы получите объект, состоящий из трёх основных массивов:

  • marketing_actions_applied — примененные акции. Содержит информацию о примененных акциях, которую необходимо отобразить на странице оформления заказа в соответствующем поле.
    Важно: существует возможность указать, какие именно акции сработали для каждого из товаров (опционально).
  • possible_marketing_actions — возможные акции. Содержит информацию о тех предложениях, которые могут быть применены для клиента при выполнении дополнительных условий. Например: «Закажите фотокнигу и интерьерную печать и напечатайте 100 фотографий бесплатно».
  • cart — массив корзины. Содержит состав переданной в запросе корзины и модифицированные цены на товары, если были применены какие-либо акции Sailplay.
Полезно

В объекте cart содержится ключ id — идентификатор корзины в базе данных Sailplay.
Этот идентификатор можно передавать в запросах для работы с покупками (см. /api/v2/purchases/new/) в параметре cart_id. В этом случае не нужно передавать состав корзины повторно.


Передача идентификатора клиента

Идентификатор клиента не обязателен для передачи в запросе. Однако в зависимости от настроек аудитории созданных акций результат может отличаться для запроса с идентификатором и без него.

Если данные клиента не были переданы в запрос, к корзине будут применены только акции, настроенные на всех клиентов (в том числе не участников программы лояльности). Персональные предложения, направленные на определенную аудиторию (например, имеющую определенный тег), применены не будут.

При наличии идентификатора в запросе по нему будет выполнен поиск клиента и присвоенных ему тегов. После этого будет проверено соответствие тегов настройкам аудитории действующих акций и применены те из них, для которых теги совпадают.


Передача идентификатора отдела

Метод /api/v2/marketing-actions/calc/ предоставляет возможность произвести расчет акции в другом отделе, отличном от указанного в store_department_id.

Для этого в запросе необходимо передать идентификатор отдела в одном из параметров:

  • target_dep_id — идентификатор отдела в Sailplay
  • target_dep_origin_id — ваш внутренний идентификатор, который был указан при создании отдела (см. /api/v2/partners/departments/create/)

Дополнительные параметры

Опционально, если это предусмотрено бизнес-логикой, для каждой позиции в чеке может быть передан дополнительный параметр min_price — минимальная стоимость товара, которая не может быть снижена при применении акций. Параметр должен быть рассчитан на стороне сайта или кассового ПО.

Размер желаемого списания бонусных баллов в счет скидки передается отдельным параметром dicount_points_writeoff.

verbose

Ключ verbose служит для отображения списка ограничений на применение акций, если они были указаны при создании.

Изменение данных касается только массива marketing_actions_applied и вложенного в объект positions массива marketing_actions.

  • verbose=1 — выводить дополнительные данные
  • verbose=0 — не выводить дополнительные данные

При передаче verbose=1 в ответ будут добавлены дополнительные поля:

  • count — оставшееся количество применений акции для пользователя
  • total_quantity_applied — оставшееся количество товаров, на которое может примениться скидка по акции
  • till_date — дата окончания действия ограничений для пользователя
  • total_discount — оставшаяся сумма, которую пользователь может получить в виде скидки

Пример фрагмента ответа:

{
"marketing_actions_applied": [
{
"count": 5,
"total_quantity_applied": null,
"service_msg": "6fcc3ebd-b57c-11e7-a265-000c29bf15f9",
"name": "Процентный прайс от 20.10.2017 (531)",
"alias": "6fcc3ebd-b57c-11e7-a265-000c29bf15f9",
"client_msg": "6fcc3ebd-b57c-11e7-a265-000c29bf15f9",
"till_date": "2017-11-19T19:44:58.489",
"total_discount": "207894.00"
}
]
}

Параметр promocodes — JSON-массив со списком промокодов, переданных вместе с корзиной (заказом) для расчёта акций.

Применение акций к корзине без сохранения результата

Метод /marketing-actions/calc/light/ (см. /api/v2/marketing-actions/calc/light/) полностью аналогичен /marketing-actions/calc/ и принимает те же параметры в запросе.

Отличие: результат не сохраняется в базе данных Sailplay и будет недоступен для дальнейшего использования при работе с покупками.