6. Покупательские возвраты


Заказ — покупка, которую совершил покупатель в Мегамаркете.

Лот — товарная единица, которая входит в заказ.

Сумма возврата — сумма, которую вернули продавцу за лот при возврате.


О полученных возвратах продавец должен оповещать Мегамаркет самостоятельно. Это зафиксировано в Приложении 3, пункте 1.5.15. к Единой оферте. Без уведомления мы не сможем корректно рассчитать выплаты по бонусным программам.

Оповещать нужно не позднее чем до конца следующего дня после получения товара продавцом. Оповещать Мегамаркет о возвратах вы можете с помощью API-метода order/return.  

Когда мы скорректируем выплаты по бонусным программам, система отправит продавцу и покупателю уведомление, что обращение закрыто.

Как авторизоваться и начать работу в сервисе Мегамаркета

Для обращения к сервису Мегамаркета нужен авторизационный токен. Его можно получить в личном кабинете, в разделе Настройки Интеграция API Авторизационный токен.


Для тестовой и продуктовой среды нужно использовать разные токены.


Ограничение на отправку запросов — до 5 запросов в секунду для одного продавца.

Заголовок (header) запросов для работы с партнёрским API: 

-header 'Content-Type: application/json'

Запросы с User-agent типа 'User-Agent': 'python-requests/2.26.0' система воспринимает как автоматические, поэтому блокирует.

Описание метода order/return


Запрос выполняется от продавца к Мегамаркету.


Тип средыАдрес метода для продуктовой и тестовой среды
order/return
(тестовая среда)
https://api-test.megamarket.tech/api/market/v1/orderService/order/return
order/return
(продуктовая среда)
https://api.megamarket.tech/api/market/v1/orderService/order/return


Запрос order/return
{
  "meta": {},
  "data": {
     "token": "********-****-****-****-************",
     "shipments": [
      {
        "shipmentId": "8866897345678",
        "returnReason": "string",
        "items": [
          {
            "itemIndex": "1",
            "refundedAmount": 690
          },
          {
            "itemIndex": "2",
            "refundedAmount": 830
          }
        ],
        "outletId": "09ST"
      }
    ]
  }
}


Структура данных в теле запросаОписаниеОбязательностьТип данных

1

meta

Поля для расширенной информации. Предназначены для особой обработки или обратной совместимости. Обычно всегда пустое

Да

Object

2

data

Общий блок с данными

Да

Object

2.1

token

Уникальный ключ для аутентификации продавца

Да

String

2.2

shipments

Данные об отправлениях

Да

Array

2.2.1

shipmentId

Идентификатор отправления Мегамаркета

Да

String

2.2.2

returnReason

Причина возврата:

1. incompleted — неполная комплектация товаров в заказе; 

2. incorrected — товар не соответствует заказанному;

3. defected — неисправный товар (брак);

4. damaged — товар повреждён;

5. expired — у товара истёк срок годности;

6. used — есть признаки, что товар был использован; 

7. not_suitable — товар не подошёл или покупатель передумал покупать товар

Да

String

2.2.3

items 

Данные о лотах

Да

Array

2.2.3.1

itemindex 

Порядковый номер лота. Приходит в order/new при создании заказа

Да

String 

2.2.3.2

refundedAmount

Это объём денежных средств, который продавец вернул покупателю. Значение refundedAmount должно быть равно окончательной цене лота (finalPrice) из ответа метода order/get или order/new

Да

Float (два знака после точки, если есть копейки)

2.2.4

outletId

Место, куда вернули товар 

Нет

String


Пример успешного ответа
{
  "data": {},
  "meta": {},
  "success": 1
}


В каких случаях могут возникать ошибки и примеры ответов

Некорректная причина возврата
{
"meta": {},
"success": 0,
"error": {
"message": "ошибка валидации: Невалидное значение в поле 'returnReason', возможно одно из следующих значений: incompleted incorrected defected damaged expired used not_suitable",
"code": 1001
}
}  
Заказ принадлежит другому продавцу
{
"meta": {},
"success": 0,
"error": {
"message": "Отправление 8993011293864 пренадлежит другому продавцу",
"code": 1002
}
}  
Заказа не существует
{
"meta": {},
"success": 0,
"error": {
"message": "Не удалось найти указанные отправления: [899301129386490909]",
"code": 1003
}
}  
Попытка вернуть отменённый лот
{
"meta": {},
"success": 0,
"error": {
"message": "Статус лота с индексом 1 из отправления 8017334203627 Отменен, создание возврата невозможно",
"code": 1004
}
}  
В отправлении нет лота с указанным индексом
{
"meta": {},
"success": 0,
"error": {
"message": "Для отправления 8017270340023 не найден лот с индексом 5",
"code": 1005
}
}  
Повторный возврат товара, который уже возвращён
{
"meta": {},
"success": 0,
"error": {
"message": "Найдены уже существующие заявки на возврат для отправления 8993011293864 лот с индексом 46467192310",
"code": 1006
}
}
Некорректная сумма
{
"success": 0,
"meta": {},
"error": {
"message": "Для лота с индексом 3 из отправления 8993120774328 указана цена возврата 51990, но ожидалась цена 7000.00",
"code": 1007
}
}
Некорректный способ возврата
{
"meta": {},
"success": 0,
"error": {
"message": "Возврат денежных средств покупателю производится Мегамаркетом",
"code": 1008
}
}
Возврат лота, для которого уже есть обращение
{
"meta": {},
"success": 0,
"error": {
"message": "Лот с идентификатором 46467198621 уже возвращен или находится в процессе возврата (IssueID = )",
"code": 1009
}
}
Попытка вернуть заказ с постоплатой
{
"meta": {},
"success": 0,
"error": {
"message": "Возврат денежных средств покупателю возможен только по предоплаченным заказам",
"code": 1010
}
}
Попытка вернуть лот, который ещё не доставлен
{
"meta": {},
"success": 0,
"error": {
"message": "Лот 2 не в статусе DELIVERED (Доставлен), повторите позднее",
"code": 3001
}
}

Ответы на вопросы

Взимается ли комиссия за возврат

Нет, дополнительных комиссий за возврат Мегамаркет не берёт. 

Что будет, если передать не то значение в refundedAmount 

Появится ошибка. В поле refundedAmount должно быть указано количество денег, которое заплатил покупатель. Бонусы не учитываются.

Зачем передавать refundedAmount, если Мегамаркет знает, какое значение продавец должен передать 

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

Для чего нужно сообщать место, куда вернули товар 

Если покупатель обратится с претензией, можно будет восстановить цепочку событий и понять, в какое место был отдан товар для возврата.

После отправки запроса возвращается ошибка

Проверьте, что: 

  • у лота заказа есть статус «Доставлен» (DELIVERED),
  • введён корректный номер отправления (shipmentId),
  • не сообщали ли вы раньше о заказе и лоте,
  • указана верная стоимость лота (refundedAmount).

Если всё верно, обратитесь в Службу поддержки.

Как понять, какую сумму указать в refundedAmount

Точная сумма указана в чеке. Также вы можете вызвать API-метод order/get или получить данные из запроса метода order/new — в поле finalPrice будет указана цена лота.