Skip to content

Интеграция сборов за хранение

Руководство по получению данных о платном хранении через Wildberries SDK и сверке с еженедельными отчётами.

Быстрый старт

typescript
import { WildberriesSDK } from 'daytona-wildberries-typescript-sdk';

const sdk = new WildberriesSDK({ apiKey: process.env.WB_API_KEY });

// Получить детализацию платного хранения за период
const storageData = await getStorageFees(sdk, '2024-12-02', '2024-12-08');

Два источника данных о хранении

1. Paid Storage API (Рекомендуется для детализации)

Модуль: sdk.reports

ХарактеристикаЗначение
ДетализацияПо товару, складу, дню
Max период8 дней за запрос
Ключевое полеwarehousePrice
Поля для ExcelВсе поля совпадают

2. Weekly Realization Report (Для сверки итогов)

Модуль: sdk.finances

ХарактеристикаЗначение
ДетализацияАгрегированные суммы по дням
Max период~365 дней
Ключевое полеstorage_fee
nm_idВсегда 0 (без привязки к товару)

Реализация: Paid Storage API

Типы

typescript
interface PaidStorageItem {
  date: string;                    // Дата расчёта
  warehouse: string;               // Название склада
  warehouseCoef: number;           // Коэффициент склада
  nmId: number;                    // Артикул WB
  barcode: string;                 // Баркод
  subject: string;                 // Предмет (категория)
  brand: string;                   // Бренд
  vendorCode: string;              // Артикул продавца
  volume: number;                  // Объём товара (л)
  warehousePrice: number;          // Сумма хранения, рублей
  barcodesCount: number;           // Количество единиц
}

Функция получения данных

typescript
async function fetchStorageChunk(
  sdk: WildberriesSDK,
  dateFrom: string,
  dateTo: string
): Promise<PaidStorageItem[]> {
  // Шаг 1: Создать задание
  const task = await sdk.reports.paidStorage({ dateFrom, dateTo });
  const taskId = task.data.taskId;

  // Шаг 2: Ожидать выполнения
  let status = 'processing';
  while (status !== 'done') {
    await delay(5000);
    const statusResponse = await sdk.reports.getTasksStatu3(taskId);
    status = statusResponse.data.status;

    if (status === 'canceled' || status === 'purged') {
      throw new Error(`Task ${taskId} failed: ${status}`);
    }
  }

  // Шаг 3: Скачать отчёт
  return sdk.reports.getTasksDownload3(taskId);
}

const delay = (ms: number) => new Promise(r => setTimeout(r, ms));

Rate Limits

МетодЛимитРекомендация
paidStorage()1 req/minСоздавать задания последовательно
getTasksStatu3()1 req/5secПоллинг каждые 5 сек
getTasksDownload3()1 req/min
getSupplierReportdetailbyperiod()1 req/minПагинация через rrdid

Важные замечания

  1. Paid Storage API ограничен 8 днями — для недельного периода достаточно одного запроса, для месяца нужно ~4 запроса.

  2. Weekly Report агрегирует хранение — поле storage_fee содержит суммы по дням без привязки к товарам (nm_id = 0).

  3. Разница в копейках нормальна — округление на стороне WB даёт расхождение ~0.01%.

  4. Категория отсутствует в API — только subject (Предмет). Если нужна категория, потребуется маппинг через справочник категорий.

  5. Время обработки — задание Paid Storage обычно выполняется за 5-30 секунд.


Источники данных о хранении

Wildberries предоставляет несколько API для работы с данными о хранении. Выбор зависит от задачи:

Какой API выбрать?

СценарийAPIЭндпоинт
Расчёт текущих затрат на хранениеcommon-api/api/v1/tariffs/box
Планирование новой поставкиsupplies-api/api/v1/acceptance/coefficients
Сверка с финансами (детализация)statistics-api/api/v1/paid_storage
Сверка с финансами (агрегат)statistics-api/api/v1/supplier/reportDetailByPeriod

См. также


← Назад к руководствам

Made with ❤️ for the Wildberries developer community