2.1 Работа с API-вызовами

Описание терминологии партнёрского API

ТерминРасшифровка
МерчантИнтернет-магазин, который сотрудничает с Мегамаркетом
ОфферТорговое предложение Мерчанта на Мегамаркете о продаже конкретного товара по определенной цене.
ЗаказСделка купли-продажи Офферов, оформленная клиентом на Мегамаркете и состоящая из Отправлений от одного или нескольких Мерчантов.
ОтправлениеГрузовые места, перемещаемые с торгового объекта Мерчанта на сортировочный центр Мегамаркета с конечной целью доставки клиенту в составе Заказа. В личном кабинете Мерчанта указано как «# заказа СберМегаМаркет».
Идентификатор заказа МерчантаНомер заказа в системе учёта заказов Мерчанта.
Грузовое местоФизически неделимый груз с нанесённой на него Этикеткой, состоящий из одного или нескольких Лотов и подготовленный к погрузке, транспортировке, хранению, выгрузке.
ЭтикеткаЛист с сопроводительной информацией и штрих-кодов наклеенный на Грузовое место.
ЛотОтдельная единица товара, входящая в состав Грузового места.

Авторизация

  • Для обращения к сервису Мегамаркета используется авторизационный токен. Его можно получить в личном кабинете, в разделе Настройки → Интеграция API → Авторизационный токен
  • Для доступа к тестовой и рабочей среде необходимо использовать разные токены
  • Для обращения к сервису Продавца в Мегамаркете необходимо предоставить ссылки на методы order/new, order/cancel. При отправке запросов, поддерживается тип базовой авторизации.
  • На стороне Мегамаркет существует ограничение на отправку запросов. До 5 запросов в секунду на мерчанта
  • Заголовок(header) запросов для работы с партнёрским API --header 'Content-Type: application/json' 
  • Запросы с User-agent типа 'User-Agent': 'python-requests/2.26.0' будут блокироваться нашей системой, так как считаются автоматическими



Отправка запросов на методы API


Продавца возможна только при помощи https. На вебхостинге, к которому обращается сервис API Мегамаркет должен быть установлен SSL-сертификат. Использование самоподписанных SSL-сертификатов недопустимо. Взаимодействие с API происходит при помощи POST-запросов. 


Список и описание методов API

Методы, с помощью которых Мегамаркет выполняет обращение к Мерчанту

НаименованиеОписание
Order/NewСоздание и передача Отправления Продавцу
Order/CancelОтмена Лотов со стороны Мегамаркет

Методы, с помощью которых Мерчант выполняет обращение к Мегамаркету

НаименованиеОписание
Order/ConfirmПодтверждение, что лоты заказа берутся в обработку мерчантом
Order/PackingПодтверждение мерчантом комплектации лотов в грузовые места
Order/ShippingПодтверждение мерчантом отгрузки грузовых мест
Order/RejectОтказ мерчанта от отгрузки лотов в отправлении (допускается в том числе частичная отмена)
Sticker/PrintЗапрос этикетки по номеру отправления

URL методов в тестовой среде

Order/Confirm  https://api-test.megamarket.tech/api/market/v1/orderService/order/confirm

Order/Packing https://api-test.megamarket.tech/api/market/v1/orderService/order/packing

Order/Shipping  https://api-test.megamarket.tech/api/market/v1/orderService/order/shipping

Order/Reject https://api-test.megamarket.tech/api/market/v1/orderService/order/reject

Sticker/Print https://api-test.megamarket.tech/api/market/v1/orderService/sticker/print


Описание процесса обработки Заказов при помощи API


  1. При появлении нового Заказа Мегамаркет отправляет мерчанту запрос order/new, который содержит номер Заказа, номер отправления, информацию по всем Лотам, содержащимся в отправлении, дату отгрузки, а также данные для печати этикетки.

  2. Продавец проверяет, какие лоты в отправлении он готов отгрузить, а какие не готов. После этого мерчант отправляет два запроса, order/confirm, в котором содержатся все лоты, которые мерчант готов отгрузить, и order/reject, в котором содержатся все лоты, которые мерчант отгрузить не готов. Если мерчант готов отгрузить все лоты, то отправляется только order/confirm, если мерчант не готов отгрузить все лоты, то отправляется только order/reject.
  3. После того как мерчант отправил order/confirm, он приступает к комплектации отправления. Комплектация подразумевает распределение лотов, входящих в отправление по грузовым местам (запрос order/packing), а также печать и наклеивание этикетки на каждое грузовое место (запрос sticker/print). Мерчант решает самостоятельно, сколько нужно сформировать грузовых мест для каждого отправления, а
    также сколько лотов комплектовать в каждое из грузовых мест. ВАЖНО! В текущей реализации процесса отправка запроса на комплектацию отправления возможна только один раз. Если комплектация произведена некорректно (реальное распределение лотов по грузовым местам в отправлении/скомплектованное количество лотов не соответствует таковому в запросе order/packing), то заказ или будет исполнен частично, или вообще не доедет до клиента. В случае некорректного распределения лотов по грузовым местам при комплектации необходимо незамедлительно связаться со специалистами по работе с мерчанта.
  4. После того как мерчант отправил order/packing и подтвердил комплектацию, мерчант передаёт скомплектованное отправление на отгрузку. После передачи отправления курьеру, мерчант отправляет
    запрос order/shipping.

Бизнес-процесс обработки Заказов при помощи API

draw.io

Diagram attachment access error: cannot display diagram


Общий шаблон запросов к API Мегамаркет


Пример запроса
{
    "data": {
        "token": "MerchToken"
        // данные запроса//
    },
    "meta": {}
}


Шаблон ожидаемого ответа от мерчанта в случае успешного выполнения запроса


Пример запроса
{
    "success": 1,
    "meta": {},
    "data": {
        // результат выполнения операции//
    }
}

Необходимо также передавать 200 ответ по HTTP.


Шаблон ожидаемого ответа от мерчанта в случае неуспешного выполнения запроса


Пример запроса
{
    "success": 0,
    "meta": {},
    "error": {
        // свободный формат описания ошибки//
    }
}

Важно передавать ответ с кодом, отличным от 200 по HTTP. В таком случае система будет инициировать повторную отправку запроса с периодичностью в N минут.


Подробное описание методов

Запросы, которые инициирует Мегамаркет обращаясь в систему Мерчанта

Запросы к мерчанту отправляются по https. Чтобы обезопасить API мерчанта от несанкционированных запросов, мерчант может включить аутентификацию по логину и паролю (Basic auth), и добавить параметры доступа  в разделе ЛКМ «Настройки» - «Интеграция по API».

Ресурсы для интеграции 


Наименование ресурсаСсылка на ресурсПояснение
Тестовая Витринаhttps://web.goodsteam.tech/Используется для оформления заказов на тестовом окружении. (Log - MerchantId
Pass - 2gfb4y7NWBSSo1B)

Инструкция по работе с ЛКМ