Примеры работа с API продавца Wildberries в PHP

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);
PHP

Результат:

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);	
PHP

Результат:

В случаи успешного запроса возвращается 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);
PHP

Запрос вернет HTTP-код 204 в случаи успеха или массив с описанием ошибки.

22.03.2023
8913

Комментарии

, чтобы добавить комментарий.

Другие публикации

Примеры использования cURL в PHP
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
214117
+21
Примеры использования PDO MySQL
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
102002
+8
Яндекс.Доставка работа с API в PHP
Примеры работы с API Яндекс.Доставки (для заказа перевозки грузов корпоративным клиентам).
8284
+5
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
27700
+8
Интеграция с платежной системой PayKeeper в PHP
Платежная платформа PayKeeper позволяет принимать оплату заказов по ссылке, используя данный метод можно с легкостью...
9282
+1
Получить фото из Instagram без API
Так как Instagram и Fasebook ограничили доступ к API, а фото с открытого аккаунта всё же нужно периодически получать и...
24506
+7