Обработка заказов

Внимание. Маркет постепенно перестает поддерживать XML. Поэтому мы рекомендуем переходить на JSON. Сейчас XML можно использовать, если добавить в запрос Content-Type: application/xml. Без этого будут ошибки.

С помощью партнерского API вы можете обрабатывать заказы, поступающие от пользователей Маркета. Процесс обработки заказов предполагает обмен данными между Маркетом и магазином.

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

  1. Порядок взаимодействия через API при обработке заказов
    1. Изменение даты доставки
    2. Изменение состава заказа
    3. Отмена заказа магазином
    4. Отмена заказа покупателем
    5. Резервирование товаров на складе
  2. Запрос информации о заказах

Порядок взаимодействия через API при обработке заказов

  1. Когда покупатель начинает оформление заказа, магазину поступает запрос POST /cart с целью актуализации данных по наличию товаров, доставке и т. п. Ответ магазина должен содержать актуальные данные.

  2. Когда покупатель завершает оформление заказа, на стороне Маркета формируется заказ со статусом RESERVED (зарезервирован), а магазину поступает запрос POST /order/accept на принятие заказа.

    Магазин должен отправить ответ с подтверждением принятия заказа ("accepted": true) или с отказом от заказа ("accepted": false).

    Примечание. Если магазин принимает заказ, необходимо зарезервировать товары на складе.
  3. Маркет отправляет магазину данные о статусе заказа. Статус зависит от способа оплаты.

    Оплата при оформлении

    Маркет отправляет магазину запрос POST /order/status со статусом заказа UNPAID (не оплачен). У покупателя есть 30 минут, чтобы оплатить заказ. После оплаты Маркет отправляет магазину запрос POST /order/status со статусом заказа PROCESSING (обрабатывается) — магазин может обрабатывать заказ. Если заказ не оплачен в течение 30 минут, Маркет отправляет магазину запрос POST /order/status со статусом заказа CANCELLED (отменен).

    Оплата при получении

    Маркет отправляет магазину запрос POST /order/status со статусом заказа PROCESSING (обрабатывается) — магазин может обрабатывать заказ.

  4. Магазин готовит заказ к отправке покупателю.

    1. Если в заказе есть товары, подлежащие маркировке в системе «Честный ЗНАК» (из определенных категорий товаров), при сборке заказа магазин должен отправить запрос PUT /campaigns/{campaignId}/orders/{orderId}/cis c кодами идентификации единиц товаров. Эти коды Маркет указывает в чеке.

      Внимание. Для товаров, которые подлежат маркировке, передача кодов идентификации является обязательной.
    2. На данном этапе магазин может изменить дату доставки (например, если он не успевает подготовить заказ в срок или пользователь попросил перенести доставку) или отменить заказ (например, если товар отсутствует на складе или был поврежден при упаковке).

      Если в заказе товар на заказ с долгой доставкой (31-60 дней), в течение 7 дней с даты оформления заказа подтвердите дату доставки. Для этого отправьте запрос PUT /campaigns/{campaignId}/orders/{orderId}/delivery/date со значением параметра "reason": "USER_MOVED_DELIVERY_DATES".

  5. После отгрузки заказа службе доставки магазин должен отправить запрос PUT /campaigns/{campaignId}/orders/{orderId}/status со статусом заказа DELIVERY.

    После отгрузки магазин может изменить дату доставки (например, если служба доставки не успевает доставить заказ в срок или пользователь попросил перенести доставку) или отменить заказ (например, если служба доставки не может доставить заказ).

  6. Если служба доставки присваивает посылкам трек‑номера, отправьте запрос POST /campaigns/{campaignId}/orders/{orderId}/delivery/track. Он передает Маркету трек‑номер, по которому покупатель может отследить посылку со своим заказом через службу доставки.

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

    Передать трек‑номер можно, только если заказ находится в статусе PROCESSING, DELIVERY или PICKUP.

  7. Если пользователь оформил самовывоз, по прибытии заказа в пункт самовывоза магазин должен отправить запрос PUT /campaigns/{campaignId}/orders/{orderId}/status со статусом заказа PICKUP.

  8. Когда пользователь получил заказ, магазин должен отправить запрос PUT /campaigns/{campaignId}/orders/{orderId}/status со статусом заказа DELIVERED.

  9. Магазин может отслеживать дальнейшие изменения статуса заказа через партнерский API, запрашивая информацию об этом заказе или обо всех заказах. Подробнее см. в разделе Запрос информации о заказах.

Изменение даты доставки

Если вы не можете доставить заказ в заявленный срок или покупатель попросил вас перенести доставку, отправьте запрос PUT /campaigns/{campaignId}/orders/{orderId}/delivery/date.

Обратите внимание:

  • Дату можно перенести максимум на 3 дня.
  • Обновлять дату для одного заказа можно не более 3 раз. Для заказов с долгой (31-60 дней) доставкой — не более 4 раз.

Изменение состава заказа

Если вы не можете доставить покупателю все заказанные товары в нужном количестве или покупатель уменьшил количество единиц товара, отправьте запрос PUT /campaigns/{campaignId}/orders/{orderId}/items. Учитывайте, что состав заказа можно изменить, только если заказ принимает статус PROCESSING, DELIVERY или PICKUP. При этом можно только уменьшить количество товара или убрать его вовсе, если покупатель заказал несколько одинаковых товаров. Увеличить количество, заменить товар другим или добавить новые товары не удастся.

Совет. Перед изменением состава заказа отправьте запрос GET /campaigns/{campaignId}/orders/{orderId}, чтобы получить идентификаторы товаров. Они понадобятся во входных данных запроса PUT /campaigns/{campaignId}/orders/{orderId}/items.

Отмена заказа магазином

Если магазину нужно отменить полученный заказ, он должен отправить запрос PUT /campaigns/{campaignId}/orders/{orderId}/status со статусом заказа CANCELLED (отменен) и причиной отмены в параметре substatus. Отменить заказ можно, если он находится в статусе PROCESSING, DELIVERY или PICKUP.

Причины отмены заказа
Магазин может отменить заказ, если:
  • товар числится в базе, но отсутствует на складе;
  • нет товара нужного цвета;
  • последний товар оказался с браком;
  • последний товар был поврежден;
  • пользователь решил изменить состав заказа;
  • пользователь отменил заказ по собственным причинам.
Примечание. Учитывайте, что сотрудники сервиса отслеживают заказы, которые были отменены. В дальнейшем это может повлиять на ваш индекс качества. Если вы отменили заказ после подтверждения, вам также придется оплатить комиссию за отмену.

Отмена заказа покупателем

Покупатель может отменить заказ в течение его обработки или доставки. Если заказ еще обрабатывается (имеет статус PROCESSING), вам не нужно подтверждать отмену заказа — он будет отменен автоматически.

Если заказ уже передан службе доставки (принимает статус DELIVERY или PICKUP) и пользователь отменил его, вы получите уведомление от Маркета с помощью запроса POST /order/cancellation/notify.

Вы можете предупредить службу доставки об отмене заказа в течение 48 часов. Если служба узнала об отмене до передачи заказа покупателю, подтвердите отмену с помощью запроса PUT /campaigns/{campaignId}/orders/{orderId}/cancellation/accept. Если заказ уже доставлен, отклоните отмену с помощью этого же запроса. Тогда у покупателя останется заказ, и деньги за него возвращаться не будут.

Чтобы узнать, какие заказы были отменены в статусе DELIVERY или PICKUP, отправьте запрос GET /campaigns/{campaignId}/orders. В его URL добавьте входной параметр onlyWaitingForCancellationApprove=true. Вы также можете узнать об отмененных заказах через личный кабинет или почту — на нее придет уведомление об отмене.

Если в течение 48 часов вы не подтвердите или отклоните отмену, заказ будет отменен автоматически.

Резервирование товаров на складе

После того как магазин принял заказ, он должен дождаться получения статуса PROCESSING, чтобы начать обработку заказа. Если покупатель выбрал оплату при оформлении, Маркет передаст этот статус в течение 30 минут, пока покупатель оплачивает заказ. На это время магазин должен отложить (зарезервировать) товары из заказа на своем складе на указанное время. Иначе возможна ситуация, что к моменту получения статуса PROCESSING от Маркета какого-либо товара уже не будет в наличии.

Запрос информации о заказах

В любой момент магазин может получить актуальную информацию как о конкретном заказе, так и обо всех своих заказах, оформленных на Маркете. Чтобы получить эти данные, магазину необходимо выполнить запрос GET /campaigns/{campaignId}/orders/{orderId} или GET /campaigns/{campaignId}/orders.