Top.Mail.Ru

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

Функциональность доступна с тарифа Продвигающий и выше

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

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

Чтобы перейти в раздел, Клиенты → Скидки → Внешние скидки:

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

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

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

Если нажать кнопку "+", появляется следующее окно:

  1. "URL" – обязательное поле, в нем указывается адрес, на который идет запрос в формате JSON. По этому URL должен располагаться файл, который сможет обработать полученные данные и вернуть ответ.
  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

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

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

Оценки: 0

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