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 |
{ "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 будет указана цена лота.