0 голосов
от (8 баллов) в категории Опросы
редактировать от

Суть вопроса / опроса

С конца 2020 года у Wildberries появился функционал "Продажа со склада поставщика", который позволяет с помощью API-сервиса представить свои товары у них на сайте, не отправляя их физически на их склады, до того, как товар не будет оплачен.

Кому из владельцев магазина нужен модуль для PrestaShop, который будет осуществлять такую выгрузку товаров на сайт Wildberries по описанной выше модели работы? Если такой модуль нужен, то проголосуйте за данный вопрос. Если действительно есть спрос, то модуль будет разработан.

Описание API Wildberries

API Stock&Price

Поставщик присылает один раз все текущие остатки по всем SKU, затем в оперативном режиме присылает остатки только по тем SKU, по которым были изменения.

Передача остатков на складах поставщика:

Production URL https://wbxgate.wildberries.ru/stocks

Тестовый URL https://wbxgate-test.wildberries.ru/stocks

Авторизация:

Не требуется передавать заголовок X-Auth-Token. Токен передается в теле запроса.

POST - запрос

Тело запроса:

{
  "token": string, // ВАШ_ТОКЕН
  "data": [
    {
      "nmId": int,
      "stocks": 	[
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          }
      ]
    },
    {
      "nmId": int,
      "stocks": 	[
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          },
          {
            "chrtId": int,
            "price": int,
            "quantity": int,
            "storeId": int
          }
      ]
    }
  ]
}

  • “token“ - токен полученный при регистрации
  • “data” - массив c пересылаемыми данными
  • “nmId” - идентификатор номенклатуры, по которой присылаются остатки
  • “stocks” - массив с информацией по остаткам, цене и складам для каждой chrtId (SKU)
  • “chrtId” - идентификатор размера, по которому присылаются остатки
  • “price” - цена товара
  • “quantity” - реальное количество единиц товара
  • “storeId” - идентификатор склада

Дополнение 1:

  • Код размера (chrtId)
  • Артикул WB (nmId)

Данные поля можно получить на странице с перечнем номенклатуры поставщика.

Дополнение 2:

  • ID склада (storeId)

Данное поле можно получить в настройках склада поставщика. В рамках одного артикула (nmId) необходимо всегда присылать актуальные остатки по всем связанным SKU (chrtId).

При успешной заливке остатков: *RESPONSE STATUS == 200*

При неуспешной заливке: *RESPONSE STATUS != 200* и *RESPONSE:*

{
  "error": "error message text"
  "errorDetails": "details text"
}

API Orders

Интерфейс для работы со сборочными заданиями (заказами).

Production URL https://suppliers-orders.wildberries.ru

Тестовый URL https://suppliers-orders-test.wildberries.ru

Авторизация:

При вызове каждого метода должен передаваться заголовок X-Auth-Token с выданным токеном.

1. Получение списка заказов:
1.1. Получить заказы в промежутке времени:
GET /api/v1/orders?date_start=2020-09-14T00:00:00+03:00&date_end=2020-09-15T00:00:00+03:00

Параметры:
"date_start" - дата в формате rfc3339 с которой нужно получить заказы
"date_end" - дата в формате rfc3339 по которую нужно получить заказы

1.2. Получить все заказы позже указанного времени: GET /api/v1/orders?date_start=2020-09-14T00:00:00+03:00

Параметры:
"date_start" - дата в формате rfc3339 с которой нужно получить заказы

Формат ответа:

[
  {
    "order_id": string, // Идентификатор заказа (32 символа макс.)
    "wb_wh_id": int64, // Идентификатор склада WB, на которой заказ должен быть доставлен
      "items": [
        {
          "rid": string, // (32 символа макс.)
          Уникальный идентификатор вещи, разный у одинаковых chrt_id, по ним
          надо отчитываться об отменах и подборе
          “status”: int8,
          "chrt_id": int64, // Идентификатор артикула
          "total_price": int64, // Стоимость товара с учетом скидок в копейках!
          "sticker": {
            "wbsticker_encoded": string(15), // Закодированное значение стикера (представляется на этикетке в формате Code-128)
            "wbsticker_id": int64, // Идентификатор этикетки
            "wbsticker_svg_base64": string(5000), // Полное представление этикетки в векторном формате
            "wb_sticker_zpl": string(300), // Полное представление этикетки в формате ZPL (горизонтальное положение)
            "wb_sticker_zpl_v": string(300), // Полное представление этикетки в формате ZPL (вертикальное положение)
            "wbsticker_id_parts": {
              "A": string(15), // Первая часть идентификатора этикетки (для печати подписи)
              "B": string(15) // Вторая часть идентификатора этикетки
            }
          }
        }
      ]
  }
]

В случае успеха возвращается HTTP статус 200 (204 - нет заказов)

В случае неудачи возвращается статус отличный от 200 (400 не передан временной диапазон, 500 проблемы на стороне нашего сервиса)

2. Обновление статуса заказа:

PUT - Запрос

Тело запроса:

[
  {
    "order_id": string, // Идентификатор заказа (32 символа макс.)
    "items": [
      {
        "rid": string, // (32 символа макс.)
        Уникальный идентификатор вещи, разный у одинаковых chrt_id,
        по ним надо отчитываться об отменах и подборе
        “status”: int8
      }
    ]
  }
]

В случае успеха возвращается HTTP статус 200

В случае неудачи возвращается статус отличный от 200 (400 проблемы с валидацией переданных данных, 500 проблемы на стороне нашего сервиса)

"status": int8 (0,1,2,3)

0- Новый заказ
1- Принял заказ
2- Подобран
3- Не подобран

Status&Error

Production URL https://marketplace-remotewh.wildberries.ru

Тестовый URL https://marketplace-remotewh-test.wildberries.ru

Авторизация:

При вызове каждого метода должен передаваться заголовок X-Auth-Token с выданным токеном.

Метод получения статуса товаров по сборочным заданиям/заказам

GET /api/public/v1/supply_tasks/status

Параметры:
order_ids - список идентификаторов сборочных заданий/заказов, по которым необходимо получить статус товаров (максимум 50 идентификаторов в одном запросе) через запятую, обязательный при отсутствии date_start и date_end
date_start, date_end - период, за который необходимо получить все изменения статусов, даты в формате rfc3339, обязательный при отсутствии task_ids

Механика работы параметров:
- Если запрашивается статус только по task_ids , то по заданию будет возвращен последний актуальный на текущий момент статус.
- Если в запросе указаны date_start, date_end (как при наличии task_ids, так и без), то будут возвращены все изменения статуса, которые произошли в указанный период. task_ids в данном случае выступает в качестве дополнительного фильтра, т.е. можно получить статусы за период по конкретным заданиям.

Формат ответа:

В случае успеха статус 200:

[
	{
		"order_id": string, // идентификатор сборочного задания/заказа
		"items": [
			{
				"rid": string,  // уникальный идентификатор вещи
				"chrt_id": int, // идентификатор артикула
				"status": int,  // код статуса
				"price": float, // цена
				"date": string  // дата статуса в формате rfc3339
			},
			...
		] // массив статусов по каждому RID
	},
	...
]

Коды статусов:

0- Информация о статусе отсутствует
1- Отмена заказа
2- Клиент получил товар
3- Клиент вернул/отказался от товара
4- Товар поступил на склад WB

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

В случае неудачи статус отличный от 200:

{
  "success": bool,  // флаг успешности операции
  "errors": string  // текст ошибки
}

Метод получения списка возвратов

GET /api/public/v1/supply_tasks/returns

Параметры:
- date_start - дата в формате rfc3339, с которой нужно получить возвраты, обязательный
- date_end- дата в формате rfc3339, по которую нужно получить возвраты, обязательный

Формат ответа:

В случае успеха статус 200:

[
	{
		"order_id": string, // идентификатор сборочного задания
		"items": [
			{
				"rid": string,  // уникальный идентификатор вещи
				"chrt_id": int, // идентификатор артикула
				"date": string  // дата статуса в формате rfc3339
			},
			...
		] // массив RID, которые были возвращены
	},
	...
]

В случае неудачи статус отличный от 200:

{
  "success": bool,  // флаг успешности операции
  "errors": string  // текст ошибки
}

Метод уведомления об ошибке

POST /api/public/v1/suppliers/errors/add

Request

{
  "source": string, // источник ошибки
  "error": string,  // текст ошибки (произвольная строка)
  "error_type": string, // тип ошибки (произвольная строка)
  "additional": json // json с доп. информацией (произвольный формат)
}
  • Возможные варианты source:
  • orders - ошибки, связанные с сервисом заказов
  • stocks - ошибки, связанные с сервисом остатков
  • items_status - ошибки, связанные с сервисом получения статуса товаров и списка возвратов

Формат ответа:

В случае успеха статус 200:

{
  "success": bool // флаг успешности операции
}

В случае неудачи статус отличный от 200:

{
  "success": bool,  // флаг успешности операции
  "errors": string  // текст ошибки
}


1 Ответ

+1 голос
от (8 баллов)
редактировать от

Как оказалось, возможен и второй вариант работы по модели FBS - через личный кабинет поставщика. Начать можно и с него. В руководстве есть все подробности.

Добро пожаловать на сайт. Здесь можно задавать вопросы по CMS PrestaShop и получать на них ответы.
...