Интеграция промокодов Xchainer с InSales для nado.one
nado.one
Интеграция кросс-платформенной программы лояльности Xchainer с InSales. Покупка промокодов на маркетплейсе, применение скидок через API, синхронизация использования.
Задача
nado.one продаёт системы ухода за кожей на платформе InSales. Требовалось дать покупателям возможность применять промокоды, которые они приобрели не на самом сайте, а на стороннем маркетплейсе xchainer.io. Xchainer — это кросс-платформенная программа лояльности: коды покупаются в одном месте, а погашаются в магазинах-партнёрах. Для nado.one это означало, что размер скидки должен определяться не встроенным механизмом купонов InSales, а через обращение к внешнему API Xchainer.
Сложность в том, что стандартные купоны InSales живут внутри самой платформы: их заводит администратор магазина, они хранятся в базе InSales и ничего не знают о внешних сервисах. Здесь же единственный источник истины по коду — Xchainer. Магазин должен спросить у него, существует ли код, к какому товару он привязан и не был ли уже погашен, и только после этого пересчитать корзину. Задача сводилась к тому, чтобы связать два независимых сервиса, оставив для покупателя привычное поле «Промокод» без каких-либо дополнительных шагов.
Как работает
Со стороны покупателя сценарий остаётся простым и укладывается в четыре шага — вся синхронизация с Xchainer происходит в фоне.
- Покупатель покупает промокод на маркетплейсе Xchainer (например, 35% скидка на 4 системы ухода за кожей)
- Добавляет нужный вариант товара в корзину на nado.one
- Вводит промокод в поле "Промокод"
- Скидка 35% применяется к заказу
Пример
Покупатель купил промокод на 35% для "4 систем ухода за сухой кожей". Добавил товар в корзину на nado.one за 10 000₽. Ввел промокод. Цена стала 6 500₽ (скидка 3 500₽).
Технические детали
Генерация промокода
При покупке на Xchainer сервис генерирует буквенно-числовой код. Ключевая особенность — код не абстрактный «−35% на всё», а привязан к конкретному варианту товара, то есть к SKU в каталоге InSales. Промокод на «4 системы ухода за сухой кожей» сработает только на этот вариант и не даст скидку на другую позицию в корзине. Такая привязка переносит товарную логику из магазина на сторону Xchainer, а nado.one остаётся лишь сопоставить пришедший в ответе SKU с тем, что покупатель добавил в корзину.
Проверка промокода
Когда покупатель вводит код в корзине, JavaScript на странице nado.one отправляет запрос к API Xchainer и дожидается ответа, прежде чем показать пересчитанную цену. Проверяются три условия:
- Действителен ли код
- Соответствует ли варианту товара в корзине
- Есть ли код в списке активных кодов InSales
Двойная сверка — и на стороне Xchainer, и по списку активных кодов в InSales — защищает от повторного применения и от рассинхронизации, когда код формально действует в маркетплейсе, но для конкретного магазина уже неактуален. Пока ответ не получен, скидка не применяется, поэтому подделать её на стороне клиента не выйдет.
После оплаты
Погашение кода — момент, где синхронизация двух систем особенно важна. После оплаты заказа информация об использовании промокода передаётся сразу в обе стороны: в InSales — чтобы зафиксировать факт применения скидки в самом заказе, и в Xchainer — чтобы пометить код как израсходованный. Код деактивируется, и повторно применить его уже нельзя ни на nado.one, ни при попытке предъявить в другом магазине сети. Так одноразовость промокода гарантируется на уровне обеих платформ, а не только магазина.
Результат
Магазин на InSales получил рабочий канал внешней лояльности: промокоды продаются на одной площадке, а расходуются на другой, при этом обе стороны всегда знают актуальный статус каждого кода.
- Кросс-платформенная программа лояльности
- Промокоды покупаются на Xchainer, используются на InSales
- Автоматическая проверка через API
- Привязка к конкретным вариантам товаров (SKU)
- Синхронизация использования между системами