Примеры запросов к Seller API для добавление товаров, обновление остатков из PHP.
Для доступа к API понадобится «Client Id» и «API key», узнать их можно в настройках, в разделе «API ключи»:
Чтобы добавить товар нужно передать идентификатор категории озона, узнать их можно в xlsx-файле на странице https://seller.ozon.ru/app/products/import/file (кнопка «Скачать категории»).
Так же по id категории загружаются характеристики и заполняются значениями. В каждой категории свой набор характеристик, некоторые из них обязательные для заполнения.
<?php
// Доступы к API:
$client_id = 'Client Id';
$token = 'API key';
// Получение товаров и БД:
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prods` WHERE `ozon` = 1 LIMIT 100");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
if (!empty($prods)) {
$items = array();
foreach ($prods as $prod) {
// Получаем характеристики категории
$data = array(
'attribute_type' => 'ALL',
'category_id' => array($prod['ozon_category']),
'language' => 'RU'
);
$ch = curl_init("https://api-seller.ozon.ru/v3/category/attribute");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Api-Key:' . $token,
'Client-Id:' . $client_id,
'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);
// Заполнение характеристик
$attributes = array();
$res = json_decode($res, true);
foreach ($res['result'][0]['attributes'] as $attr) {
// Бренд
if ($prodres['name'] == 'Бренд') {
$attributes[] = array(
'complex_id' => 0,
'id' => $attr['id'],
'values' => array(
array(
'value' => $prod['name']
)
)
);
}
// Описание товара
if ($prodres['name'] == 'Аннотация') {
$attributes[] = array(
'id' => $attr['id'],
'values' => array(
array(
'dictionary_value_id' => 0,
'value' => strip_tags($prod['text'])
)
)
);
}
if ($prodres['name'] == 'Артикул') {
$attributes[] = array(
'id' => $attr['id'],
'values' => array(
array(
'dictionary_value_id' => 0,
'value' => $prod['sku']
)
)
);
}
}
$item = array(
'attributes' => $attributes,
'barcode' => $prod['barcode'],
'category_id' => $prod['ozon_category'],
//'color_image' => '',
//'complex_attributes' => array(),
'currency_code' => 'RUB',
'depth' => $prod['depth'],
'dimension_unit' => 'mm',
'height' => $prod['height'],
'images' => array(
'https://example.com/img/' . $prod['img_1'],
'https://example.com/img/' . $prod['img_2'],
),
//'images360' => array(),
'name' => $prod['name'],
'offer_id' => $prod['id'],
//'pdf_list' => array(),
//'premium_pric' => '900',
'price' => $prod['price'],
'old_price' => $prod['price_old'];
//'primary_image' => '',
'vat' => '0',
'weight' => $prod['weight'],
'weight_unit' => 'g',
'width' => $prod['width']
);
$items[] = $item;
}
$data = array(
'items' => $items
);
$ch = curl_init('https://api-seller.ozon.ru/v2/product/import');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Api-Key:' . $token,
'Client-Id:' . $client_id,
'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
(
[result] => Array(
[task_id] => 123456789
)
)
При обновлении товара по API, все правки в товаре сделанные в личном кабинете Ozon будут затерты.
В данном примере цены задаются для нескольких товаров из БД магазина.
<?php
// Доступы к API:
$client_id = 'Client Id';
$token = 'API key';
// Получение товаров и БД:
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prods` WHERE `ozon` = 1 LIMIT 100");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
if (!empty($prods)) {
$items = array();
foreach ($prods as $prod) {
$items[] = array(
'auto_action_enabled' => 'UNKNOWN',
'currency_code' => 'RUB',
'min_price' => '0',
'offer_id' => $prod['id'],
'old_price' => 0,
'price' => strval($prod['price']),
);
}
$data = array(
'prices' => $items
);
$ch = curl_init('https://api-seller.ozon.ru/v1/product/import/prices');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Api-Key:' . $token,
'Client-Id:' . $client_id,
'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
// Доступы к API:
$client_id = 'Client Id';
$token = 'API key';
// Получение товаров и БД:
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prods` WHERE `ozon` = 1 LIMIT 100");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
if (!empty($prods)) {
$items = array();
foreach ($prods as $prod) {
$items[] = array(
'offer_id' => $prod['id'],
'stock' => $prod['count'],
);
}
$data = array(
'stocks' => $items
);
$ch = curl_init('https://api-seller.ozon.ru/v1/product/import/stocks');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Api-Key:' . $token,
'Client-Id:' . $client_id,
'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);
}