Wildberries предоставляет продавцам возможность управлять магазином и получать статистику по API, через протокол HTTP RestAPI.Подробнее на https://openapi.wb.ru/
Авторизация осуществляется по токену, которые владелец личного кабинета (главный пользователь) самостоятельно генерирует в разделе Профиль > Настройки > Доступ к новому API.
Созданный токен следует добавлять в каждый запрос, прибавляя к запросу заголовок (http-header) формата 'Authorization: ТОКЕН_API'.
Описание метода: https://openapi.wb.ru/#tag/Kontent-Prosmotr/paths/~1content~1v1~1cards~1cursor~1list/post
$token = 'ТОКЕН_API';
$data = array(
'sort' => array(
'cursor' => array(
'limit' => 1000
),
'filter' => array(
'withPhoto' => -1
)
)
);
$ch = curl_init('https://suppliers-api.wildberries.ru/content/v1/cards/cursor/list');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization:' . $token,
'Content-Type:application/json'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res, true);
print_r($res);
Результат:
Array(
[data] => Array(
[cards] => Array(
[0] => Array(
[sizes] => Array(
[0] => Array(
[techSize] => 0
[skus] => Array(
[0] => БАРКОД
)
)
)
[mediaFiles] => Array(
[0] => URL_ИЗОБРАЖЕНИЯ
[1] => URL_ИЗОБРАЖЕНИЯ
[2] => URL_ИЗОБРАЖЕНИЯ
)
[colors] => Array(
[0] => белый
)
[updateAt] => 2022-12-22T12:32:46Z
[vendorCode] => АРТУКЛ_ПРОДОВЦА
[brand] => БРЕНД
[object] => НАЗВАНИЕ_ТОВАРА
[nmID] => ID_WB
)
...
)
)
)
Описание метода: https://openapi.wb.ru/#tag/Ceny/paths/~1public~1api~1v1~1prices/post
За раз можно загрузить не более 1000 номенклатур, обновление цент происходит по ID тавара в Wildberries (nmID).
$token = 'ТОКЕН_API';
// Получаем товары из БД
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prod`");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
$items = array();
foreach ($prods as $i => $prod) {
$items[] = array(
'nmId' => intval($prod['wb_id']),
'price' => round($prod['price']), // Без копеек
);
}
$ch = curl_init('https://suppliers-api.wildberries.ru/public/api/v1/prices');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization:' . $token,
'Content-Type:application/json'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($items, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res, true);
print_r($res);
Результат:
В случаи успешного запроса возвращается id очереди на обработку:
array {
[uploadId] => 123456789
[alreadyExists] => true
}
Описание метода: https://openapi.wildberries.ru/#tag/Marketplace-Ostatki/paths/~1api~1v3~1stocks~1%7Bwarehouse%7D/put
Обновление количества товаров происходит по баркоду (barcode). За раз можно загрузить не более 1000 номенклатур.
$token = 'ТОКЕН_API';
// Получаем товары из БД
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prod`");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
$items = array();
foreach ($prods as $i => $prod) {
$items[] = array(
'sku' => $prod['barcode'],
'amount' => intval($prod['stock'])
);
}
$data = array(
'stocks' => $items
);
$ch = curl_init("https://suppliers-api.wildberries.ru/api/v3/stocks/{ID_СКЛАДА}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization:' . $token,
'Content-Type:application/json'
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$res = curl_exec($ch);
curl_close($ch);
echo $http_code;
$res = json_decode($res, true);
print_r($res);
Запрос вернет HTTP-код 204 в случаи успеха или массив с описанием ошибки.