FTP API #
Каталог #
Раздел технического описания механизма работы процесса загрузки и синхронизации каталога через протокол FTP, посредством загрузки определенных файлов в директории.
АПИ импорта остатков, товаров, аптек #
Для загрузки остатков, продуктов и аптек партнёрская сеть должна предоставить програмный доступ к своим ресурсам.
Формат и способ загрузки #
В данный момент мы поддерживаем следующие форматы файлов: CSV
(приоритетнее), JSON
, XML
.
Файлы должны быть в кодировке UTF-8 или Windows-1251.
В случае, если у Партнера нет своего FTP сервера, Ютека может предоставить доступ на свой FTP сервер.
Остатки #
Остатки загружаются раз в 15 минут.
Ожидаемые поля в файлах остатков:
Поле | Обязательное | Описание |
---|---|---|
productId |
ID товара | |
pharmacyId |
ID аптеки | |
price |
Цена | |
quantity |
Остаток | |
partNumber |
Партия | |
expirationDate |
Срок годности | |
|
Примеры #
CSV
Рекомендуемый разделитель: ;
, но можно ,
, если технически можете сформировать корректный csv.
productId;pharmacyId;price;quantity;partNumber;expirationDate
123456;12345;123.45;1;12345;01.02.2020
FF02345;11-33;123.45;1;12345;
EP-1230;11-33;123.45;1;12345;07.04.2025
XML
<?xml version="1.0" encoding="UTF-8"?>
<stocks>
<stock>
<partNumber>12345</partNumber>
<pharmacyId>12345</pharmacyId>
<price>123.45</price>
<productId>123456</productId>
<quantity>1</quantity>
<expirationDate>01.02.2020</expirationDate>
</stock>
</stocks>
JSON
[
{
"productId": "123456",
"pharmacyId": "12345",
"price": 123.45,
"quantity": 1,
"partNumber": "12345",
"expirationDate": "01.02.2020"
}
]
Товары #
Загружаются раз в 3 часа, период можно увеличивать до 1 дня.
products.csv
Поле | Обязательное | Описание |
---|---|---|
productId |
уникальный идентификатор товара в аптечной сети. | |
barcode |
Штрихкод | |
title |
Название | |
vendor |
Производитель | |
country |
Страна | |
egk / rls / katren |
ЕГК/RLS/Katren - коды значительно ускорят привязку товаров к нашему каталогу | |
|
Аптеки #
Загружаются раз в 3 часа, период можно увеличивать до 1 дня.
Поле | Обязательное | Описание | Комментарий |
---|---|---|---|
pharmacyId |
уникальный идентификатор аптеки | ||
title |
Название аптеки | ||
address |
Адрес | С точностью до дома. Если возможно, без дополнительных комментариев, вида пом.75843б, за магазином канцтоваров |
|
phone |
Телефон | В международном формате (+71234567890 ). Если это городской номер телефона, то с кодом города (например для Новосибирска это +7(383)000‒00‒00 ) |
|
workingHours |
Часы работы в формате | ||
location |
GPS координаты Latitude,Longitude |
При подстановке в гугл/яндекс/другие карты должна показываться точка на аптеку. По координатам проверяется адрес, если он не точен | |
email |
Email аптеки для связи | Мы можем присылать email оповещения в аптеку при поступлении новых или отмене заказов |
CSV
В корень фтп выгружается файл pharmacies.csv
.
Этот файл должен быть в кодировке UTF-8 (либо Windows-1251, если нет технической возможности).
Рекомендуемый разделитель: ;
, но можно ,
, если технически можете сформировать корректный csv.
pharmacyId;title;address;phone;workingHours;location;email
АП-11;Аптека 24/7/365: №11;Санкт-Петроград, улица Пушкина, д. 17;+78015553535;"{""1"":{""close"":""21:00"",""open"":""09:00""},""2"":{""close"":""21:00"",""open"":""09:00""},""3"":{""close"":""21:00"",""open"":""09:00""},""4"":{""close"":""21:00"",""open"":""09:00""},""5"":{""close"":""23:00"",""open"":""10:00""},""7"":{""close"":""18:00"",""open"":""12:00""}}";55.754867,37.5550808;info@uteka.ru
А-АА;"Аптека ""Аптечная Аптека""";Москва, Люберцы, улица Пушкина, д. 17;+78015553535;"{""1"":{""close"":""00:00"",""open"":""00:00""},""2"":{""close"":""00:00"",""open"":""00:00""},""3"":{""close"":""00:00"",""open"":""00:00""},""4"":{""close"":""00:00"",""open"":""00:00""},""5"":{""close"":""00:00"",""open"":""00:00""},""6"":{""close"":""00:00"",""open"":""00:00""},""7"":{""close"":""00:00"",""open"":""00:00""}}";55.754867,37.5550808;info@uteka.ru
Заказы #
Раздел технического описания механизма работы процесса обмена заказами и статусами по ним через протокол FTP, посредством загрузки определенных файлов в директории.
Ютека будет загружать свои запросы в папку orders/outgoing
. А аптечная сеть должна загружать свои запросы в папку orders/incoming
.
Передача запроса считается успешной, когда файл будет удалён с ftp-сервера получателем.
ID заказов - внутренние ID Ютеки.
Возможные запросы от Ютеки в аптечную сеть #
Создание заказа #
Имя файла соответствует номеру заказа + .xml
.
Например, файл с запросом на создание заказа с номером 1234 будет лежать в папке orders/outgoing
и называться 1234.xml
, полный путь: orders/outgoing/1234.xml
Запрос
<Order>
<OrderID>123</OrderID>
<Pharmacy>Основной склад</Pharmacy>
<Items>
<ProductID>60001090</ProductID>
<Quantity>2</Quantity>
<Price>880</Price>
</Items>
<Items>
<ProductID>60001040</ProductID>
<Quantity>1</Quantity>
<Price>73000</Price>
</Items>
<Amount>74760</Amount>
<Name>Кирилл</Name>
<Phone>9997651151</Phone>
</Order>
Отмена заказа #
Имя файла соответствует status_<id>.xml
.
Например, файл с запросом на отмену заказа с номером 1234 будет лежать в папке orders/outgoing
и называться status_1234.xml
, полный путь: orders/outgoing/status_1234.xml
Запрос
<Status>
<OrderID>4567</OrderID>
<Status>cancelled</Status>
</Status>
Возможные запросы от аптечной сети в Ютеку #
Имя файла #
Имя файла соответствует status_<id>.xml
.
Например, файл с запросом на отмену заказа с номером 1234 будет лежать в папке orders/incoming
и называться 1234.xml
, полный путь: orders/incoming/status_1234.xml
Отменён аптекой #
При отмене со стороны аптеки нужно указывать причину (например, “нет на складе” или “отказ покупателя”)
Запрос
<Status>
<OrderID>4567</OrderID>
<Status>cancelled</Status>
<Comment>Нет на складе</Comment>
</Status>
Подтверждён #
Фармацевт в аптеке увидел заказ или заказ дошёл до аптеки и сохранился со стороны аптечной сети.
Запрос
<Status>
<OrderID>4567</OrderID>
<Status>approved</Status>
</Status>
Готов к выдаче #
Покупатель может идти в аптеку.
Запрос
<Status>
<OrderID>4567</OrderID>
<Status>ready</Status>
</Status>
Продан #
Запрос
<Status>
<OrderID>4567</OrderID>
<Status>completed</Status>
</Status>