В этой статье расскажу, как продукция крупной аптечной сети была включена в товарную матрицу ВкусВилл, что позволило не только повысить продажи, но и обеспечить оперативную доставку заказов, включающих как продукты, так и лекарства. Совместная работа над проектом сократила время исполнения комбинированных заказов до менее чем двух часов. Кроме того, в ходе проекта был разработан универсальный API — программный интерфейс обмена данными, который оказался пригодным для большинства фармацевтических интеграций.
Почему это выгодно
Онлайн-торговля лекарствами связана с рядом жестких нормативных ограничений. Это касается реализации рецептурных средств, транспортировки термолабильных препаратов, формата пунктов выдачи, возможности приёма электронных платежей, наличия сайта и курьерской службы. Создание собственной службы доставки — дело затратное и часто нецелесообразное, поэтому многие аптечные сети передают логистику на аутсорсинг.
Но те компании, которые мыслят стратегически, идут дальше — они не просто делегируют доставку, а встраивают свой ассортимент в экосистему партнёра. Это позволяет не только расширить каналы продаж, но и органично вписаться в готовую логистическую и цифровую инфраструктуру.
Партнёр получает комиссионный доход, расширение продуктовой линейки и рост среднего чека, а аптека — новый источник продаж и надёжную схему доставки.
Как устроена интеграция и к чему она ведёт
Аптечная сеть (название которой по условиям контракта не разглашается) — динамично развивающаяся компания, работающая в регионах Северо-Запада России: от Мурманской и Карелии до Курской и Липецкой областей, включая Ржев и Рязань.
Проект интеграции с ВкусВилл стал продолжением многолетнего сотрудничества с компанией ИНТЕРВОЛГА. Напомним, ещё в 2018 году для этой аптечной сети был разработан сайт с глубокой интеграцией в внутренние учётные и информационные системы. О том, как проходила разработка и с какими сложностями столкнулись, ранее рассказывали в блоге.
На первом этапе пришлось работать с одной торговой точкой, одной учетной системой, 188 её экземплярами и более чем миллионом товарных позиций. Опыт оказался полезным и в новом проекте — интеграции с цифровой экосистемой ВкусВилл.
К этому моменту ВкусВилл уже перестал ассоциироваться исключительно с нишевым «хипстерским» ритейлом, став доступным магазином для широкой аудитории, с разнообразным ассортиментом и выручкой свыше 1 млрд рублей. Несмотря на это, фармацевтическую лицензию компания не получила, поэтому реализует лекарства с маркировкой «от партнёра».
Цель аптечной сети в рамках проекта — обеспечить возможность покупки медикаментов клиентами ВкусВилл с доставкой из дарксторов — закрытых складов торговой сети.
Для реализации этой задачи потребовалась тщательная техническая интеграция: нужно было связать IT-системы сторон, адаптировать процессы и обновить цепочку бизнес-операций. В результате потребитель получает возможность оформить заказ на продукты и лекарства в одном окне — через сайт или мобильное приложение ритейлера — и получить его уже в течение двух часов.
Схема проста:
АС передаёт каталог, остатки, цены ВкусВиллу, который размещает это у себя в каталоге;
Клиенты заказывают аптечный ассортимент на сайте или в мобильном приложении ВкусВилла, а он отдаёт эту информацию в АС;
АС собирает заказ, ВкусВилл его доставляет.

Изменения бизнес-процессов
Для реализации новой модели работы аптечной сети требовалось изменить привычные бизнес-процессы и физически встроить её в систему распределённых дарксторов ВкусВилл. Ключевая задача заключалась в оптимизации логистики: избежать лишнего этапа доставки — от аптеки до склада — и обеспечить сбор заказа в одном месте. Для этого было необходимо открыть полноценные аптечные пункты непосредственно на территории складов ритейлера.
На момент запуска проекта у ВкусВилл уже функционировало более 50 дарксторов в различных регионах присутствия. Сначала концепцию протестировали на одном из объектов в течение трёх месяцев. Пилотный запуск подтвердил эффективность идеи — и процесс масштабирования начался.
Создание аптечных точек на базе складов позволило добиться сверхбыстрой логистики: комбинированные заказы — продукты питания и лекарства — стали доставляться менее чем за два часа. При этом для каждого типа товара (продукты и медикаменты) формировались отдельные кассовые чеки — в соответствии с юридическими и бухгалтерскими требованиями.
У ведущих игроков рынка также растёт доля заказов, включающих лекарственные средства. Однако полноценный взрывной рост в этом сегменте сдерживает текущее законодательство: онлайн-доставка рецептурных препаратов пока запрещена. Снятие этого барьера могло бы открыть принципиально новые возможности для развития фарм-ритейла в e-commerce.
Для объединения IT-систем партнёров с цифровой платформой ВкусВилла была разработана специальная спецификация API — интерфейса программного взаимодействия. На её основе наши специалисты реализовали свыше десяти методов, обеспечивающих полноценную двустороннюю интеграцию с аптечной сетью. В их числе:
получение изображений и описаний лекарственных средств от Фарм-Оператора;
выгрузка списка аптек с актуальными остатками на складе;
создание заказов и отслеживание их статусов;
оплата заказов как онлайн, так и курьеру при получении;
генерация кассовых чеков;
отмена и возврат заказов;
и другие ключевые функции.
Мобильное приложение ВкусВилла использует REST API для получения информации о товарах, ценах и наличии, а также для размещения заказов. Каждую минуту оно обращается к API, чтобы синхронизировать статусы заказов в режиме, близком к реальному времени. Такая архитектура позволила создать стабильную и масштабируемую систему, обеспечивающую быстрый обмен данными между ритейлером и аптечной сетью.

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

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

Да, методы API в проектах отличаются: есть универсальная часть, подходящая многим и индивидуальная, написанная под конкретную интеграцию. Например, метод создания заказа есть в любых интеграциях и называется почти всегда одинаково «/order». Отличия только в разных входных и выходных параметрах и разной их обработке на стороне бэкенда.
В чем польза для наших клиентов от такого «готового» API?
Польза в том, что они экономят 100-300 часов проектного бюджета, выделенного на разработку и интеграцию, получают гарантию того, что мы это точно сделаем. И возможно дешевле, чем те, у кого нет опыта.
Кстати, неоднократное использование методов API на других проектах совершенно безопасно для всех клиентов, т.к. в интеграциях методы закрываются авторизацией. Например, во «ВкусВилл» авторизация идет через токен, а во «Все Аптеки» – через api key (для каждого агрегатора мы создаем свой ключ).
Как мы реализовали интеграцию: пошаговый подход
Интеграция IT-систем — это не просто «подключение» двух платформ, а целый комплексный процесс, состоящий из пяти ключевых этапов. Мы придерживаемся методичного подхода, который позволяет учесть особенности каждой интеграции и обеспечить устойчивую работу системы с первого дня. Он состоит из 5 этапов:
Разработка/получение спецификации на API.
Разработка методов API по требованиям спецификации. Создание универсальных свойств в сущности заказ, например “ID заказа в системе партнера интеграции” или “Источник заказа” для хранения уникального идентификатора заказа и типа агрегатора соответственно.
Задание параметров в настройках проекта, которые актуализируются под каждую интеграцию, например, тип цены (базовая/со скидкой).
Разработка скриптов логирования и обработки ошибок, входящих запросов для некоторых методов выходных данных. Во время разработки предусмотрено логирование входных параметров для каждого метода и выходных данных для методов по работе с заказами. Разработка учитывает обработку и вывод ошибок согласно стандартным кодам состояния HTTP запроса. Особенно актуально на первоначальном этапе разработки-тестирования и запуска.
Тестирование: внутреннее и с внешней системой.
Покажем некоторые моменты подробнее.
Интеграция начинается с разработки спецификации на 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 необходимо:
-
Создать пользователя и заполнить поля:
логин (на английском с маленькой буквы название интеграции, используется в логировании и HL(highload)-блоке (п.3). Например «vseapteki/uteka/…»;
пароль;
внешний код (USER_названиеИнтеграции).
-
У пользователя во вкладке “Доп.поля” выставить настройки rest api:
Разрешен доступ по ключу к Rest API: да (галочка);
-
Ключ к Rest API: генерируем не менее 30 символов (сгенерированный ключ передается агрегатору). Использование ключа:
query params: api-key - значение <сгенерированный ключ>
header: X-API-KEY - значение <сгенерированный ключ>
Заполнить в highload-блоке сопоставление статусов сайта и агрегатора через логин пользователя (см п.1.1).
Добавить доп. вкладку в модуль «код текущего проекта» и заполнить данными (настройками проекта).
При наличии минимального опыта внедрение и настройка интеграции требует лишь незначительных действий — участие программиста сводится к созданию новой вкладки в настройках проекта. Тем не менее, для достижения наилучшего результата стоит поручить эту задачу профессиональной команде разработчиков.
Интеграция аптечной сети с розничной сетью супермаркетов, специализирующихся на товарах для здорового образа жизни, — перспективная бизнес-модель. Покупатели, регулярно приобретающие полезные продуктовые наборы, со временем начинают включать в заказы и товары медицинского назначения.
Реализация этой интеграции потребовала не только технологических доработок, но и перестройки внутренних бизнес-процессов, связанных с обработкой заказов. Полученный опыт стал основой для дальнейших успешных коллабораций с крупными фарм-агрегаторами. Компания ИНТЕРВОЛГА разработала универсальный API, подходящий большинству участников фармацевтического e-commerce — это уникальное решение для интернет-аптек.
Если вы планируете объединить вашу онлайн-платформу (аптеку, интернет-магазин автозапчастей, сервис мероприятий, сайт отзывов, контентный ресурс и т.п.) с другим сайтом, агрегатором или маркетплейсом — заполните форму на сайте. Наши аналитики подготовят индивидуальное решение и оценят его реализацию.