Работа с API OZONE
Последние записи
Рекомендую
Хостинг для сайта
Если выбираете хостинг под проект — советую Timeweb. Современная инфраструктура, широкий выбор тарифов от стартовых до VPS под нагрузку, отзывчивая техподдержка, которая отвечает по существу, а не отписками. Я сам держу на нём часть своих проектов и рекомендую клиентам.
Перейти Партнёрская ссылка. Для вас цена не меняется.Получаем остатки всех товаров в магазине на Ozone через API
function getProductBalance($page = 1){
$url = 'http://api-seller.ozon.ru/v1/product/info/stocks';
$headers = [
'Content-Type: application/json',
'Host: api-seller.ozon.ru',
'Client-Id: ' . $CLIENT_ID,
'Api-Key: ' . $API_CODE
];
$data = [
'page' => $page,
'page_size' => '1000',
];
$options = [
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => $headers
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
//std to array
return json_decode(json_encode(json_decode($result)), True);
}
$result = getProductBalance();
//Высчитываем кол-во полученных товаров по первому запросу
$number = count($result['result']['items']);
//Получаем общее кол-во товаров
$total = $result['result']['total'];
//Высчитываем кол-во запросов необходимых для получения общего кол-ва с текущим шагом
$pages = ceil($total / $number);
//Инициируем временную переменную куда будем добавлять вновь полученные товары
$items = $result['result']['items'];
for($i = 2; $i < $pages + 1; ++$i) {
$result = getProductBalance($i);
$items = array_merge($items,$result['result']['items']);
}
$result = [];
foreach ($items as $k => $v){
$result[$v['offer_id']] = $v;
}
Получаем информацию от Ozone об одном товаре по его id
function getStockById($data){
$url = 'http://api-seller.ozon.ru/v2/product/info';
$headers = [
'Content-Type: application/json',
'Host: api-seller.ozon.ru',
'Client-Id: ' . $CLIENT_ID,
'Api-Key: ' . $API_CODE
];
$options = [
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => $headers
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
//std to array
return json_decode(json_encode(json_decode($result)), True);
}
//Использование
$IDS = [
'offer_id' => '52523',
];
$product = getStockById($IDS);
Получаем информацию о конкретных товарах (вместе с остатками) по их id
function getStocksById($data){
$url = 'http://api-seller.ozon.ru/v2/product/info/list';
$headers = [
'Content-Type: application/json',
'Host: api-seller.ozon.ru',
'Client-Id: ' . $CLIENT_ID,
'Api-Key: ' . $API_CODE
];
$options = [
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => $headers
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
//std to array
return json_decode(json_encode(json_decode($result)), True);
}
// Использование
$IDS = [
'offer_id' => ['77777', '55555'],
'product_id' => [],
'sku' => [],
];
$products = getStocksById($IDS);
function COPYProduct($CopyProduct ){ $url = 'https://api-seller.ozon.ru/v1/product/import-by-sku'; $headers = [ 'Content-Type: application/json', 'Host: api-seller.ozon.ru', 'Client-Id: ' . '***', 'Api-Key: ' . '***' ]; $data_copy = [ "items"=> [ [ "name"=> 'case for phone', "offer_id"=> '666-2', "old_price"=> '', "premium_price"=> '', "price"=> '666', "sku"=> 287730983, "vat"=> '0' ] ] ]; $options = [ CURLOPT_URL => $url, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_HTTPHEADER => $headers ]; $ch = curl_init(); curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); //std to array return json_decode(json_encode(json_decode($result)), True); } $result_copy = COPYProduct($data_copy);Подскажите, в чем ошибка ? result приходит :Array ( [error] => Array ( [code] => BAD_REQUEST [message] => Invalid request payload [data] => Array( [0] => Array ( [name] => items [code] => TOO_FEW_ELEMENTS [value] => [] [message] => ) ) ) )Если проводить руками через песочницу ozon, тогда запрос проходит.