Доступность функционала зависит от тарифа. Подробнее о тарифах
Внешние скидки нужны, если магазину не хватает стандартного функционала inSales, и нужно рассчитывать скидки по своему алгоритму.
Для работы внешних скидок потребуется написать и разместить на стороннем сервере скрипт, который будет получать данные о заказе с платформы в формате JSON, обрабатывать их и возвращать ответ в том же формате. То есть со страницы оформления заказа уходят данные о товарах в корзине, вы где-то на стороне их принимаете, считаете, каким должен быть размер скидки, возвращаете это значение, и система его применяет к заказу.
Чтобы перейти в раздел, нажмите Клиенты → Скидки → Внешние скидки:
Если нажать кнопку "+", появляется следующее окно:
В запросе передается вся информация о заказе.
В ответ на запрос вы должны вернуть один из следующих объектов:
1) Скидку можно применить:
{
"discount": 10, // Величина скидки, если discount_type == PERCENT, то это 10% иначе 10 рублей
"discount_type": "PERCENT", // Может быть MONEY
"title": "Вам скидка по карте XXXXX", //Текстовое описание скидки, которое сохранится в заказе и будет выведено пользователю
}
2) Скидку по какой-то причине нельзя применить:
{
"errors": ["Карта не найдена"] // Массив ошибок
}
Далее нужно модифицировать страницу корзины для работы с внешними скидками.
Нужно добавить форму, отсылающую данные на URL /cart_items методом PUT.
В форму нужно добавить input, в который пользователь будет вводить номер карты. К примеру:
<form action="/cart_items" method="PUT">
<input name="order[fields_values_attributes][XXXX][field_id]" value="XXXX" type="hidden">
<input name="order[fields_values_attributes][XXXX][value]" type="text">
.....
</form>
, где XXXX — это ID дополнительного поля заказа.
ID дополнительного поля указан в адресной строке браузера при редактировании дополнительного поля:
Далее нужно добавить на страницу корзины вывод ошибок.
Ошибки доступны в Liquid-шаблоне через метод discount_errors у переменной cart. Пример:
{% for error in cart.discount_errors %}
<p class="error">{{error}}</p>
{% endfor %}
Посмотреть наглядный пример обработки запроса на расчет внешней скидки можно в данной статье: https://liquidhub.ru/blogs/open-microphone/vneshnie-skidki-v-insales