Доброго дня.
Відправила вам повну інструкцію по організації роботи через API з геоаптекою (apteki.ua). Прошу налаштувати.
Инструкция по отправке данных для публикации в geoapteka.ua
Подготовка данных:
Файл с данными должен удовлетворять спецификации формата JSON и быть создан в кодировке
UTF-8 без BOM.
Спецификация структуры данных JSON:
{
"meta": {
"id": "string", // Идентификатор торговой точки (внешний код)
"name": "string", // Название торговой точки
"head": "string", // Название торговой сети (юр. лица)
"addr": "string", // Адрес торговой точки
"code": "string" // Код ЕДРПОУ (ОКПО)
},
"data": [{
"id": "string", // Идентификатор товара в торговой точке (внешний код)
"name": "string", // Полное наименование препарата + производитель (через пробел)
"quant": 0.0, // Количество (остаток) (float, разделитель точка)
"price": 0.0, // Интернет-цена (float, разделитель - точка)
"price_cntr": 0.0, // Цена розничная (float, разделитель - точка)
"price_list": [{ // Список типов программ и цен (массив)
"t": "string", // Тип программы
"p": 0.0 // Цена программы (float, разделитель - точка)
}],
"pfactor": 1 // Коэффициент распаковки (integer)
}]
}
Пример файла *data.json* с данными из 3 позиций:
{
"Meta": {
"id": "1",
"head": "ТОВ \"ТЕСТ-Фарма\"",
"name": "Аптека No24 (тест геоаптеки)",
"addr": "г.Киев, ул.Тестовая,146/13",
"code": "12345678"
},
"Data": [
{
"id": "1027",
"name": "Абьюфен табл. 400мг No30 Бушара",
"quant": 1,
"price": 64.5,
"price_cntr": 68.7,
"price_list": [{
"t": "tozheo"
"p": 1.0
}],
"pfactor": 3
}]
{
"id": "1031",
"name": "Авелокс табл. 400мг No5 Bayer",
"quant": 5,
"price": 464.02,
"price_cntr": 475.72
},
{
"id": "6432",
"name": "Гиналгин табл. ваг. No10 ICN Polfa Rzeszow",
"quant": 0.5,
"price": 62.08,
"price_cntr": 65.78,
"pfactor": 3
}]}
Отправка данных:
Данные отправляются на сервер по протоколу HTTPS методом POST, при этом следует
обязательно указать параметры заголовка *X-Morion-Skynet-Tag* и *X-Morion-Skynet-Key*, а также
рекомендуется указывать уникальное имя отправителя в *User Agent*.
Адрес отправки данных:
https://skynet.morion.ua/data/add
Значение параметра *X-Morion-Skynet-Tag*:
data.geoapt.ua
Значение параметра *X-Morion-Skynet-Key*:
* Устанавливается при подписании догово ра, уточняйте у вашего менеджера
Пример команды отправки файла с данными *data.json* при помощи служебной
программы cURL:
curl -X POST -A "UniqUserAgent" -T "data.json" –H "X-Morion-Skynet-Tag: data.geoapt.ua" -H "X-
Morion-Skynet-Key: xxxxxxxx" https://skynet.morion.ua/data/add
Рекомендуется отправлять данные программно прямо из своих учетных систем при
помощи доступных http-клиентов, минуя этап формирования файла с данными на жестком диске.
Максимальная периодичность отправки данных - один раз в час, минимальная - два раза в
сутки. Максимальная продолжительность публикации данных без обновлений - 24 часа. Если
данные не обновлялись за это время, то они будут автоматически удалены из публикации.
Примечания:
[Markdown]:https://ru.wikipedia.org/wiki/Markdown
[JSON]:http://json.org/json-ru.html
[UTF-8]:https://ru.wikipedia.org/w/index.php?title=UTF -8
[BOM]:https://ru.wikipedia.org/w/index.php?oldid=70741439
[HTTPS]:https://ru.wikipedia.org/wiki/HTTPS
[POST]:https://ru.wikipedia.org/wiki/POST_(HTTP)
[cURL]:https://ru.wikipedia.org/wiki/CURL
Получение заказов для аптечной сети
по методу pop-order
Оглавление
Общее описание: ........................................................................................................... 1
ШАГ 1. Метод test-order ................................................................................................. 2
ШАГ 2. Получение заказа методом pop-order.............................................................. 3
ШАГ 3. Отправка статусов с помощью метода upd-order. .......................................... 4
Форматы запросов ......................................................................................................... 5
Общее описание:
Pop-order – метод самостоятельного забора заказов из API автоматического
резервирования проекта GeoApteka.
Метод предусматривает регламент обработки полученных заказов:
Срок жизни заказов для самостоятельного забора составляет 10 минут. В
течение 10 минут сеть должна произвести запрос на получение доступных
для нее заказов, т.е. «забрать заказ»;
Регламент на подтверждение комплектации заказа составляет 40 минут,
т.е. в течение 40 минут сеть должна отправить статус, свидетельствующий
об успешном укомплектовании заказа;
Регламент на исход работы с заказом (отклонение или выполнение)
составляет 48 часов;
Если в отведенное регламентом время на любом из этапов, сеть не
обработала заказ, то он передается на внутреннюю службу обработки
Morion (Call Centre), и в дальнейшем, будет недоступен для сети, любые
дальнейшие манипуляции с заказом средствами API автоматического
резервирования будут невозможны.
Используемый протокол: HTTP
Используемый формат: JSON
Кодировка: UTF-8 без BOM
Коды ответа сервера:
200 - запрос выполнен успешно.
403 - неверный логин или пароль в запросе.
500 - внутренняя ошибка сервиса (в теле ответа будет содержаться описание
ошибки для облегчения наладки).
2
ШАГ 1. Метод test-order
Позволяет создать тестовый заказ для сети в GeoApteka.
Ссылка на метод: https://booking.geoapteka.com.ua/test-order
Учетные данные для метода:
Логин: qwe
Пароль: 123456789
Метод test-order создает заказ в GeoApteka так, если бы он был создан
пользователем сайта. В разделе «Форматы запросов» описана структура запроса
для создания заказа по этому методу.
Приведем практический пример:
{
"agent": "GeoAPT", // это поле оставляется в таком виде;
"phone": "380503550472", // вводится номер телефона специалиста, который тестирует;
"shops": [{
"id_shop": "1234567", // идентификатор аптеки в МОРИОН
"shipping": "pickup", // признак самовывоза
"data": [{
"id": "7167", // идентификатор Цитрамона Дарница в кодах МОРИОН
"quant": 5.0, // запрашиваемое количество препарата
"price": 6.79 // цена по выгружаемому прайсу
}]}]}
Такой запрос с заказом отправляется для тестирования. Его срок жизни – 10
минут, в течение 10 минут его нужно «забрать» методом pop-order. По прошествии
10 минут, заказ перестанет быть доступен для сети.
3
ШАГ 2. Получение заказа методом pop-order
Ссылка на метод: https://booking.geoapteka.com.ua/pop-order
Учетные данные уточните у технического специалиста проекта GeoApteka
или менеджера.
По данному методу отправляется запрос вида (пример):
["123892"] - запрос для конкретной точки и [“*”] - для всех точек.
По этому запросу метод отдает все доступные для Вашей сети заказы,
поступившие в ГеоАптека или для одной точки. При тестировании, Вы увидите
свой тестовый заказ в таком виде (приведен пример):
[
{
"id_shop": "123892", // идентификатор аптеки в кода МОРИОН;
"ext_id_shop": "47", // Ваш идентификатор аптеки (пример);
"phone": "380503550472",
"test": true, // признак тестового заказа;
"MsgFlags": 0,
"timestamp": 1578061387, // время создания;
"agent": "GeoAPT",
"id_order": "073588678", // номер заказа в ГеоАптеке;
"shipping": "pickup",
"state": "New",
"attribute": "autobook",
"data": [
{
"id": "7167", // код препарата (Цитрамон-Дарница No6) в Морион
"ext_id": "1326df04-f7ad-44e5-be47-a94177fe75f4", // этот же препарат во внешних
кодах (в Ваших);
"quant": 5, // запрошенное количество единиц товара;
"price": 6.79 // цена за единицу;
}
]
}
]
После того как заказ получен необходимо подтвердить наличие искомого
товара в сети в течение 40 минут, т.е. отправить статус "Confirmed". Для этого
используется метод upd-order.
4
ШАГ 3. Отправка статусов с помощью метода upd-order.
Ссылка на метод: https://booking.geoapteka.om.ua/upd-order
Учетные данные уточните у технического специалиста проекта GeoApteka
или менеджера.
Укомплектовка заказа подтверждается в течение 40 минут, т.е. в течение
этого времени отправляется запрос со статусом "Confirmed":
{
"agent": "GeoApt",
"phone": "380503550472",
"id_shop": "123892",
"ext_id_shop": "47",
"test": true,
"id_order": "073588678",
"ext_id_order": "IA546688", // в это поле вносится внутренний идентификатор заказа,
внесенное в это поле значение будет отправлено пользователю в СМС-уведомлении.
"state": "Confirmed",
"shipping": "pickup",
"data": [{
"id": "7167",
"ext_id": "1326df04-f7ad-44e5-be47-a94177fe75f4",
"quant": 5.0,
"price": 6.79
}
]
}
Если в ответ возвращается HTTP Status Code 200, то запрос успешно
принят и таймер переключается на ожидание получения данных об успешном
исходе (Completed/Canceled).
Регламент: 48 часов, т.е. в течение двух суток мы ожидаем ответа о статусе
заказа. Для передачи ответа об отмене (или успешном закрытии) также
используется метод upd-order, но отправляется запрос вида, приведенного
ниже со статусом "Canceled" в случае с отменой или "Completed" в случае с
успешным выполнением.
{
"agent": "GeoApt",
"phone": "380503550472",
"id_shop": "4318368",
"ext_id_shop": "47",
"test": true,
"id_order": "073588678",
"ext_id_order": "IA546688",
"state": "Canceled",
"shipping": "pickup",
"data": [{
"id": "7167",
"ext_id": "1326df04-f7ad-44e5-be47-a94177fe75f4",
"quant": 5.0,
"price": 6.79
}
]
}
В данном случае заказ был отменен.
5
Форматы запросов
1) Формат тела тестового запроса по методу test-order:
{
"agent": "string", // Маркер точки запроса, например
"phone": "string", // Телефон пользователя
"shops": [{
"id_shop": "string", // Идентификатор торговой точки
"shipping": "string", // Способ доставки товара
"data": [{
"id": "string", // Идентификатор товара
"quant": 0.0, // Количество
"price": 0.0 // Цена
}]
}]
}
2) Формат запроса по методу pop-order:
["string"] // Перечень идентификаторов торговых точек, по которым необходимо
получить заказы
Пример:
["111222"] - для одной аптеки сети
или
["111222", "333444", "5556667"] – для группы аптек сети
или
Запрос вида: ["*"] – для всех аптек сети
3) Формат запроса по методу upd-order:
{
"agent": "string", // Маркер точки запроса, например "CorpName"
"phone": "string", // Телефон пользователя
"id_shop": "string", // Идентификатор торговой точки
"ext_id_shop": "string", // Внешний идентификатор торговой точки (*)
"test": false, // Флаг тестового запроса
"id_order": "string", // Номер брони в аптеке
"ext_id_order": "string", // Внешний номер брони в аптеке (обязательное поле)
"state": "string", // Статус обработки запроса
"shipping": "string", // Способ доставки товара
"data": [{
"id": "string", // Идентификатор товара
"ext_id": "string", // Внешний идентификатор товара (*)
"quant": 0.0, // Количество
"price": 0.0 // Цена
}]
}
6
Поле "state" описывает следующие состояния резерва:
Confirmed - заказ подтвержден и зарезервирован в торговой точке;
Updated - заказ изменен со стороны торговой точки;
Completed - заказ был продан покупателю;
Canceled - заказ был отменен торговой точкой, либо покупателем.