Top.Mail.Ru

Внешние скидки

Внешние скидки нужны в том случае, если вам не хватает стандартного функционала InSales, и нужно рассчитывать скидки по своему алгоритму.

Для работы внешних скидок потребуется написать и разместить на стороннем сервере скрипт, который будет получать данные о заказе с платформы в формате JSON, обрабатывать их и возвращать ответ в том же формате. Грубо говоря, со страницы оформления заказа уходят данные о товарах в корзине, вы где-то на стороне их принимаете, считаете, каким должен быть размер скидки, возвращаете это значение, и система его применяет к заказу.

Общий вид раздела

Управление внешними скидками производится в разделе «Скидки → Внешние скидки»:

В разделе имеется кнопка создания новой скидки (1), а также таблица с уже созданными, имеющая три столбца:

  1. «Описание» (2) – название скидки.
  2. «URL» (3) – адрес, на который идет запрос в формате JSON.
  3. Крестик (4) – удаляет скидку. После удаления ее восстановить нельзя, придется создавать заново.

Создание внешней скидки

При нажатии кнопки «+» (отмечена цифрой 1 на скриншоте выше) появляется следующее окно:

  1. «URL» – обязательное поле, в нем указывается адрес, на который идет запрос в формате JSON. Соответственно, на вашей стороне по этому URL должен располагаться файл (не обязательно формата PHP), который сможет обработать полученные данные и дать ответ.
  2. «Описание» – название скидки.
  3. «Зависит от дополнительных полей – если в разделе «Настройки → Оформление заказа» были добавлены поля для заказа, от которых может зависеть скидка, данная настройка заставляет систему делать новый запрос при изменении значения поля. Например, если вы создали поле для ввода номера скидочной карты и отметили данную галочку, то в случае изменения значения поля получение скидки произведется повторно.
  4. «Зависит от состава корзины» – галочка указывает, нужно ли отсылать повторный запрос на получение скидки, если содержимое корзины изменилось.
  5. «Включено» – активирует скидку.

Обработка запроса

В запросе передается вся информация о заказе.

В ответ на запрос вы должны вернуть один из следующих объектов:

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 - это идентификатор дополнительного поля заказа

Далее нужно добавить на страницу корзины вывод ошибок.

Ошибки доступны в 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

Оставить оценку

Оценка успешно отправлена.
Она будет проверена администратором перед публикацией.
CAPTCHAОбновить изображение
Перед публикацией все оценки проходят модерацию

Оценки: 0

Остались вопросы?
Отправь тикет в техподдержку!
Еще нет своего магазина?
Создайте интернет-магазин на платформе InSales
Всё для продаж уже внутри!
Недавно просмотренные статьи