Империя Сумок
Империя Сумок
- Империя Сумок — сеть кожгалантереи с 250+ магазинами по всей России, которая работает на рынке больше 25 лет. Интернет-магазин у сети появился в 2017-м, и требовал масштабного обновления, чтобы им было удобно пользоваться и клиентам, и самим франчайзи.
Дизайн
Также и с каталогом. Например, мы проверяли, как будет смотреться список товаров на примере категории мужских черных сумок. И пришли к тому, что если для товаров будут делать новые фото, важно выполнить их в схожей с сайтом стилистике. Чтобы облегчить клиенту задачу по подготовке нового фотоконтента для каталога, мы составили рекомендации для съемки.
Непростой импорт данных
Каждый магазин — это склад, и данные по наличию товаров в нем должны передаваться на сайт. Более того, у каждого магазина свой договор на эквайринг, а в каждом городе — у покупателей своя скидка по дисконтной карте.
Данные о товарах хранятся в ERP, которую доработать нельзя по историческим и политическим причинам, а данные о ценах и остатках — в другой системе (которую тоже лучше не трогать). А ещё заказчик предпочитает standalone-решения (что не лишено смысла сегодня) и поэтому использует собственные сервера: два для продакшна и один для тестирования.
Чтобы размотать этот клубок и сделать на новом сайте всё по красоте, мы двигались поэтапно. Вот здесь — очень подробно рассказали, как именно. Если кратко, то сначала мы разобрались с тем, откуда вообще берутся данные, и как мы их можем получить. Итак, для данных о товарах у нас есть:
- файл SAP-системы с сервера заказчика (обновляется каждые 2 минуты);
- XML-файл из Domino с ценами и остатками;
- файлы изображений товаров из папки с другого сервера заказчика.
Важно было импортировать их в нужном порядке: сначала — справочники, товары, свойства, потом — изображения, и только потом — цены и остатки. Иначе вся система ломается: если в базу данных прилетит товар, но в системе не будет справочника, в котором указаны его цвета, она не сможет задать ему цвет.
Для переноса файлов с серверов заказчика на сайт мы использовали серверную утилиту rSYNC: с ее помощью файл SAP мы забираем каждые 5 минут, файл Domino и изображения — раз в сутки. Чтобы импорт шёл быстро — использовали сервер очередей. А чтобы сохранить нужный порядок при импортировании данных, написали модуль для Битрикса, с которым задачи на импорт можно ставить в очередь: пока не обработается одна пачка, к другой сайт не приступит.
Перенос контента со старого сайта
Переносить пришлось многое:
Экспорт данных с сайта
1. Сверка по артикулам
2. Экспорт фидов
Кроме того, мы добавили возможность для заказчика настраивать новые фиды самостоятельно, с помощью кастомных условий в настройках: указывать, выгружать ли товары дороже определенной цены, выгружать ли товары без бренда, какую информацию о наличии выгружать, и так далее.
Гибкая структура каталога
Ну очень умный фильтр
В его основе — мощный движок ElasticSearch: ему мы «скармливаем» информацию о значениях свойств каждого товара. Эластик знает о разных ценах в разных городах, о наличии товаров в конкретном магазине конкретного города и о значениях свойств товара (тип — сумка, цвет — красный, материал — кожа).
Сама фильтрация в каталоге настраивается через битриксовый умный фильтр. Это значит, что заказчик может:
- указывать, какие свойства выводить для всех разделов;
- у каждого раздела добавлять дополнительные свойства для вывода в фильтре. Подразделы наследуют настройки от корня каталога, от родительского раздела, плюс можно указать дополнительные.
Скидки в корзине и оформление заказа
Сайт предусматривает три вида скидок:
- скидки, настроенные по правилам работы с корзиной;
- скидка по промокоду;
- скидка по дисконтной карте.
На новом сайте всё работает проще и быстрее: когда пользователь вводит номер дисконтной карты, сайт отправляет запрос в систему Domino по API и передает номер карты и текущий город. Domino возвращает процент скидки, а сумма в корзине учитывает:
- этот процент скидки;
- условия применения скидки в конкретном городе с учетом цен на товары и других скидок в этом городе.
- Отдельный вид скидки — скидка по дисконтной карте. Для неё не указывается конкретная величина, настраиваются только приоритет, взаимодействие с другими правилами работы с корзиной и список городов. Величину скидки в процентах мы на лету подставляем на основе значения, которое получили от Domino.
- Скидка на определенный тип цены: Базовая, Распродажная, Суперцена. Когда включено это условие, скидка применяется, только если на товар действует выбранный тип цены.
- Скидка к базовой цене товара, даже если на него действует другой тип цен. Например, товар продается по цене «Распродажа»: стоил 3000 рублей, а сейчас стоит 2500. Обычно промокоды на скидку не действуют на такие товары, но только не у «Империи Сумок». Можно сделать так, чтобы скидка применялась к базовой цене этого товара, а не к распродажной, и для этого правила сделать промокод (который дает, скажем, скидку в целых 50%, и тогда товар будет стоит 1500 рублей вместо 3000).
Варианты доставки
Для доставки есть всего 2 варианта:
- самовывоз из магазина;
- собственная доставка курьерской службой (действует не во всех городах). Если доставка в какой-то населенный пункт в черте города недоступна, сайт предлагает варианты населенных пунктов, куда смогут доставить товар из выбранного на сайте города. Причем, список этих пунктов легко настраивается в админке сайта.
Многоликий эквайринг
Платежный шлюз привязывается к юридическому лицу — и получается, что у каждого юрлица свой эквайринг. Причем, в большинстве городов это ЮКасса, а в некоторых — Тинькофф, плюс в большинстве городов используются облачные онлайн-кассы, а в некоторых — физические. Чтобы сразу определить, каким именно эквайрингом по какому договору мы будем проводить операцию, сначала мы определяем конкретный магазин:
- для самовывоза — просим пользователя выбрать тот, который ему удобнее, и после перенаправляем пользователя на оплату на тот шлюз, к которому подключен выбранный магазин;
- при доступной доставке — сами выбираем ближайший магазин в городе с нужными наличием и подключаем пользователя к его платежному шлюзу.
У покупателя есть 7 дней на то, чтобы забрать заказ. Если он его забирает — в Domino меняется статус на «Выполнено», этот статус прилетает на сайт (который пристально следит за изменениями статусов заказов), оттуда информация отправляется в эквайринг, финальная сумма заказа списывается, а деньги поступают на счёт юрлица. Причем, если покупатель забрал только часть товаров — разница вернется ему на карту.
Возврат в один клик
Нетривиальная конфигурация серверов заказчика
На этом проекте нам повезло. На тестовом сервере были подключены тестовые копии SAP и Domino. Перед переносом изменений в продакшн мы сначала проверяли всё на тестовом сервере у себя, затем мы вместе с заказчиком проверяли на его тестовом сервере. И только потом переносили в продакшн. Максимальная осторожность и предсказуемость.