В этой статье расскажу, как продукция крупной аптечной сети была включена в товарную матрицу ВкусВилл, что позволило не только повысить продажи, но и обеспечить оперативную доставку заказов, включающих как продукты, так и лекарства. Совместная работа над проектом сократила время исполнения комбинированных заказов до менее чем двух часов. Кроме того, в ходе проекта был разработан универсальный API — программный интерфейс обмена данными, который оказался пригодным для большинства фармацевтических интеграций.

Почему это выгодно

Онлайн-торговля лекарствами связана с рядом жестких нормативных ограничений. Это касается реализации рецептурных средств, транспортировки термолабильных препаратов, формата пунктов выдачи, возможности приёма электронных платежей, наличия сайта и курьерской службы. Создание собственной службы доставки — дело затратное и часто нецелесообразное, поэтому многие аптечные сети передают логистику на аутсорсинг.

Но те компании, которые мыслят стратегически, идут дальше — они не просто делегируют доставку, а встраивают свой ассортимент в экосистему партнёра. Это позволяет не только расширить каналы продаж, но и органично вписаться в готовую логистическую и цифровую инфраструктуру.

Партнёр получает комиссионный доход, расширение продуктовой линейки и рост среднего чека, а аптека — новый источник продаж и надёжную схему доставки.

Как устроена интеграция и к чему она ведёт

Аптечная сеть (название которой по условиям контракта не разглашается) — динамично развивающаяся компания, работающая в регионах Северо-Запада России: от Мурманской и Карелии до Курской и Липецкой областей, включая Ржев и Рязань.

Проект интеграции с ВкусВилл стал продолжением многолетнего сотрудничества с компанией ИНТЕРВОЛГА. Напомним, ещё в 2018 году для этой аптечной сети был разработан сайт с глубокой интеграцией в внутренние учётные и информационные системы. О том, как проходила разработка и с какими сложностями столкнулись, ранее рассказывали в блоге.

На первом этапе пришлось работать с одной торговой точкой, одной учетной системой, 188 её экземплярами и более чем миллионом товарных позиций. Опыт оказался полезным и в новом проекте — интеграции с цифровой экосистемой ВкусВилл.

К этому моменту ВкусВилл уже перестал ассоциироваться исключительно с нишевым «хипстерским» ритейлом, став доступным магазином для широкой аудитории, с разнообразным ассортиментом и выручкой свыше 1 млрд рублей. Несмотря на это, фармацевтическую лицензию компания не получила, поэтому реализует лекарства с маркировкой «от партнёра».

Цель аптечной сети в рамках проекта — обеспечить возможность покупки медикаментов клиентами ВкусВилл с доставкой из дарксторов — закрытых складов торговой сети.

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

Схема проста:

  1. АС передаёт каталог, остатки, цены ВкусВиллу, который размещает это у себя в каталоге;

  2. Клиенты заказывают аптечный ассортимент на сайте или в мобильном приложении ВкусВилла, а он отдаёт эту информацию в АС;

  3. АС собирает заказ, ВкусВилл его доставляет.

Изменения бизнес-процессов

Для реализации новой модели работы аптечной сети требовалось изменить привычные бизнес-процессы и физически встроить её в систему распределённых дарксторов ВкусВилл. Ключевая задача заключалась в оптимизации логистики: избежать лишнего этапа доставки — от аптеки до склада — и обеспечить сбор заказа в одном месте. Для этого было необходимо открыть полноценные аптечные пункты непосредственно на территории складов ритейлера.

На момент запуска проекта у ВкусВилл уже функционировало более 50 дарксторов в различных регионах присутствия. Сначала концепцию протестировали на одном из объектов в течение трёх месяцев. Пилотный запуск подтвердил эффективность идеи — и процесс масштабирования начался.

Создание аптечных точек на базе складов позволило добиться сверхбыстрой логистики: комбинированные заказы — продукты питания и лекарства — стали доставляться менее чем за два часа. При этом для каждого типа товара (продукты и медикаменты) формировались отдельные кассовые чеки — в соответствии с юридическими и бухгалтерскими требованиями.

У ведущих игроков рынка также растёт доля заказов, включающих лекарственные средства. Однако полноценный взрывной рост в этом сегменте сдерживает текущее законодательство: онлайн-доставка рецептурных препаратов пока запрещена. Снятие этого барьера могло бы открыть принципиально новые возможности для развития фарм-ритейла в e-commerce.

Для объединения IT-систем партнёров с цифровой платформой ВкусВилла была разработана специальная спецификация API — интерфейса программного взаимодействия. На её основе наши специалисты реализовали свыше десяти методов, обеспечивающих полноценную двустороннюю интеграцию с аптечной сетью. В их числе:

  • получение изображений и описаний лекарственных средств от Фарм-Оператора;

  • выгрузка списка аптек с актуальными остатками на складе;

  • создание заказов и отслеживание их статусов;

  • оплата заказов как онлайн, так и курьеру при получении;

  • генерация кассовых чеков;

  • отмена и возврат заказов;

  • и другие ключевые функции.

Мобильное приложение ВкусВилла использует REST API для получения информации о товарах, ценах и наличии, а также для размещения заказов. Каждую минуту оно обращается к API, чтобы синхронизировать статусы заказов в режиме, близком к реальному времени. Такая архитектура позволила создать стабильную и масштабируемую систему, обеспечивающую быстрый обмен данными между ритейлером и аптечной сетью.

После поступления заказа в аптеку его нужно было физически собрать и наклеить специальную наклейку (внешний вид наклейки делали тоже мы, в административной панели Битрикса была кнопка «распечатать наклейку»). Собранный заказ передавался курьеру, после доставки ВкусВилл рапортовал нам, что заказ доставлен.

В более поздних разработках по интеграции сети аптек с фарм-агрегаторами мы развили опыт в написании «фармацевтических» API и применили его на проектах с «Все Аптеки», «Ютека», «Справмедика», «Я в Аптеке, «Справочная 009.рф», «ЦЕНЫ в АПТЕКАХ» и «Ваше лекарство».

Да, методы API в проектах отличаются: есть универсальная часть, подходящая многим и индивидуальная, написанная под конкретную интеграцию. Например, метод создания заказа есть в любых интеграциях и называется почти всегда одинаково «/order». Отличия только в разных входных и выходных параметрах и разной их обработке на стороне бэкенда.

В чем польза для наших клиентов от такого «готового» API?

Польза в том, что они экономят 100-300 часов проектного бюджета, выделенного на разработку и интеграцию, получают гарантию того, что мы это точно сделаем. И возможно дешевле, чем те, у кого нет опыта.

Кстати, неоднократное использование методов API на других проектах совершенно безопасно для всех клиентов, т.к. в интеграциях методы закрываются авторизацией. Например, во «ВкусВилл» авторизация идет через токен, а во «Все Аптеки» – через api key (для каждого агрегатора мы создаем свой ключ).

Как мы реализовали интеграцию: пошаговый подход

Интеграция IT-систем — это не просто «подключение» двух платформ, а целый комплексный процесс, состоящий из пяти ключевых этапов. Мы придерживаемся методичного подхода, который позволяет учесть особенности каждой интеграции и обеспечить устойчивую работу системы с первого дня. Он состоит из 5 этапов:

  1. Разработка/получение спецификации на API.

  2. Разработка методов API по требованиям спецификации. Создание универсальных свойств в сущности заказ, например “ID заказа в системе партнера интеграции” или “Источник заказа” для хранения уникального идентификатора заказа и типа агрегатора соответственно.

  3. Задание параметров в настройках проекта, которые актуализируются под каждую интеграцию, например, тип цены (базовая/со скидкой).

  4. Разработка скриптов логирования и обработки ошибок, входящих запросов для некоторых методов выходных данных. Во время разработки предусмотрено логирование входных параметров для каждого метода и выходных данных для методов по работе с заказами. Разработка учитывает обработку и вывод ошибок согласно стандартным кодам состояния HTTP запроса. Особенно актуально на первоначальном этапе разработки-тестирования и запуска.

  5. Тестирование: внутреннее и с внешней системой.

Покажем некоторые моменты подробнее.

Интеграция начинается с разработки спецификации на API, но обычно она уже есть у агрегатора. В таком случае остается только реализовать методы, которые там описаны. Удобным инструментом работы со спецификацией является Swagger.

В таблице приведен неполный набор методов, реализованных для интеграций сайта Аптечной сети. Эти методы – часть универсального API в котором задействован обмен всеми основными сущностями: Аптеками, Товарами, Ценами, Остатками, Заказами.

Тип  запроса

Задача

Название метода

Тип http-запроса

Описание метода

Получение данных

Данные по регионам и городам

/cities

GET

Метод отдает список всех городов, в котором представлены подразделения Аптечной сети, чтобы агрегатор смог “склеить” свои данные с нашими


Список аптек

/pharmacies

GET

Метод возвращает детальную информацию об аптеке: уникальный идентификатор, ИНН юр.лица, название, номер телефона, режим работы и координаты.

Необязательным входным параметром принимает city_id для фильтрации аптек по городу.


Список товарных позиций

/products

GET

На вход принимает необязательные параметры page и number_of_items_on_page для пагинации.

Возвращает список товарных позиций сайта: уникальный идентификатор, название, штрихкоды (необходимые для сопоставления товаров Аптечной сети с агрегатором, т.н. мапинг), производитель.


Список цен на товары в аптеках

/prices

GET

На вход принимает обязательный параметр pharmacy_id для фильтрации остатков по конкретной аптеке.

Возвращает список идентификаторов товаров, стоимость и наличие (остатки) в конкретной аптеке


Список актуальных остатков по аптекам

/actual_stocks

POST

Входным параметром является ”корзина” пользователя.

Метод возвращает список доступных для заказа аптек с актуальными ценами и количеством товара в наличии. Актуализация корзины перед созданием заказа

Работа с заказами

Создание заказа

/order

POST

На вход принимает ”заказ”.

Метод создает заказ в системе сайта Аптечной сети на основании тела запроса: номер заказа в системе агрегатора, данные о покупателе и состав заказа (товары и цены). Особенность: создаем заказ с ценами, которые пришли из агрегатора, однако проверяем товар на наличие (остаток) на стороне сайта. Позже переложили эту логику на сторону учетной системы (1С).


Получение информации по списку заказов

/orders

GET

В качестве входного параметра передается order_numbers - список номеров заказов в терминах сайта.

Метод возвращает список заказов (идентификаторов заказа в терминах сайта) и статус (в терминах агрегатора).


Отмена заказа

/order_cancellation/: order_number

PUT

По переданному параметру order_number - номер заказа на сайте происходит поиск заказа для текущего агрегатора и отмена, если заказ был найден.

Метод возвращает подтверждение отмены или сообщение об ошибке.

Помимо обмена самими сущностями, агрегатор (ритейлер) обменивается статусами этих сущностей с сайтом сети аптек. При интеграции по API требуется решить задачу сопоставления статусов на сайте и у партнера-агрегатора. Для этого создается отдельный справочник сопоставлений – Highload-блок (HL-блок). Например, если заказ находится в статусе Забронирован (только что создан на сайте под управлением CMS Битрикс: Управление сайтом), то при обмене у агрегатора отобразится статус CREATED.

Получение таких статусов – отдельная задача. Например, этот метод (Order::checkStatusByNameIntegration) используется в методе получения актуального статуса заказа (/orders/orders).

Для ввода в работу новой интеграции по реализованному API необходимо:

  1. Создать пользователя и заполнить поля:

    1. логин (на английском с маленькой буквы название интеграции, используется в логировании и HL(highload)-блоке (п.3). Например «vseapteki/uteka/…»;

    2. пароль;

    3. внешний код (USER_названиеИнтеграции).

  2. У пользователя во вкладке “Доп.поля” выставить настройки rest api:

    1. Разрешен доступ по ключу к Rest API: да (галочка);

    2. Ключ к Rest API: генерируем не менее 30 символов (сгенерированный ключ передается агрегатору). Использование ключа:

      1. query params: api-key - значение <сгенерированный ключ>

      2. header: X-API-KEY - значение <сгенерированный ключ>

  3. Заполнить в highload-блоке сопоставление статусов сайта и агрегатора через логин пользователя (см п.1.1).

  4. Добавить доп. вкладку в модуль «код текущего проекта» и заполнить данными (настройками проекта).

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

Интеграция аптечной сети с розничной сетью супермаркетов, специализирующихся на товарах для здорового образа жизни, — перспективная бизнес-модель. Покупатели, регулярно приобретающие полезные продуктовые наборы, со временем начинают включать в заказы и товары медицинского назначения.

Реализация этой интеграции потребовала не только технологических доработок, но и перестройки внутренних бизнес-процессов, связанных с обработкой заказов. Полученный опыт стал основой для дальнейших успешных коллабораций с крупными фарм-агрегаторами. Компания ИНТЕРВОЛГА разработала универсальный API, подходящий большинству участников фармацевтического e-commerce — это уникальное решение для интернет-аптек.

Если вы планируете объединить вашу онлайн-платформу (аптеку, интернет-магазин автозапчастей, сервис мероприятий, сайт отзывов, контентный ресурс и т.п.) с другим сайтом, агрегатором или маркетплейсом — заполните форму на сайте. Наши аналитики подготовят индивидуальное решение и оценят его реализацию.

Комментарии (0)