https://docs.ozon.ru/api/seller
composer require gam6itko/ozon-seller
ΠΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Ozon-Api Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ PSR-18: HTTP Client ΠΈ PSR-17: HTTP Factories.
https://symfony.com/doc/current/components/http_client.html#psr-18-and-psr-17
composer require symfony/http-client
composer require nyholm/psr7
use Gam6itko\OzonSeller\Service\V1\ProductService;
use Symfony\Component\HttpClient\Psr18Client;
$config = [$_SERVER['CLIENT_ID'], $_SERVER['API_KEY'], $_SERVER['API_URL']];
$client = new Psr18Client();
$svc = new ProductService($config, $client);
//do stuff
composer require php-http/guzzle6-adapter
use Gam6itko\OzonSeller\Service\V1\CategoriesService;
use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle6\Client as GuzzleAdapter;
use Http\Factory\Guzzle\RequestFactory;
use Http\Factory\Guzzle\StreamFactory;
$config = [
'clientId' => '<ozon seller client-id>',
'apiKey' => '<ozon seller api-key>',
'host' => 'http://cb-api.ozonru.me/'
];
$client = new GuzzleAdapter(new GuzzleClient());
$requestFactory = new RequestFactory();
$streamFactory = new StreamFactory();
$svc = new CategoriesService($config, $client, $requestFactory, $streamFactory);
//do stuff
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π½ΡΠΆΠ½ΡΠΉ URL Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠΌ bin/is_realized.php
php bin/is_realized.php | grep /v2/posting/fbs/get
output
/v2/posting/fbs/get: Gam6itko\OzonSeller\Service\V2\Posting\FbsService::get
/v2/posting/fbs/get-by-barcode: NotRealized
ΠΠ²ΡΠΎΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΏΠ΅Π²Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅Ρ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΡΠΎ Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΡΠΊΡΡΡΡ issue ΠΈΠ»ΠΈ PR.
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ tests/Service/
use Gam6itko\OzonSeller\Service\V1\CategoriesService;
use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle6\Client as GuzzleAdapter;
$config = [
'clientId' => '<ozon seller client-id>',
'apiKey' => '<ozon seller api-key>',
'host' => 'http://cb-api.ozonru.me/' //sandbox
];
$adapter = new GuzzleAdapter(new GuzzleClient());
$svc = new CategoriesService($config, $adapter);
//Server Response example: https://cb-api.ozonru.me/apiref/en/#t-title_categories
$categoryTree = $svc->tree();
//Server Response example: https://cb-api.ozonru.me/apiref/en/#t-title_get_categories_attributes
$attributes = $svc->attributes(17038826);
/v2/posting/crossborder/get
use Gam6itko\OzonSeller\Service\V2\Posting\CrossborderService;
use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle6\Client as GuzzleAdapter;
$config = [
'clientId' => '<ozon seller client-id>',
'apiKey' => '<ozon seller api-key>',
'host' => 'http://cb-api.ozonru.me/'
];
$adapter = new GuzzleAdapter(new GuzzleClient());
$svc = new CrossborderService($config, $adapter);
$postingNumber = '39268230-0002-3';
$orderArr = $svc->get($postingNumber);
echo json_encode($orderArr);
{
"result": [
{
"address": {
"address_tail": "Π³. ΠΠΎΡΠΊΠ²Π°, ΡΠ». Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ, 1",
"addressee": "ΠΠ΅ΡΡΠΎΠ² ΠΠ²Π°Π½ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²ΠΈΡ",
"city": "ΠΠΎΡΠΊΠ²Π°",
"comment": "",
"country": "Π ΠΎΡΡΠΈΡ",
"district": "",
"phone": "+7 495 123-45-67",
"region": "ΠΠΎΡΠΊΠ²Π°",
"zip_code": "101000"
},
"auto_cancel_date": "2019-11-18T11:30:11.571Z",
"cancel_reason_id": 76,
"created_at": "2019-11-18T11:30:11.571Z",
"customer_email": "petrov@email.com",
"customer_id": 60006,
"in_process_at": "2019-11-18T11:30:11.571Z",
"order_id": 77712345,
"order_nr": "1111444",
"posting_number": "39268230-0002-3",
"products": [
{
"name": "Π€ΠΈΡΠ½Π΅Ρ-Π±ΡΠ°ΡΠ»Π΅Ρ",
"offer_id": "DEP-1234",
"price": "1900.00",
"quantity": 1,
"sku": 100056
}
],
"shipping_provider_id": 0,
"status": "awaiting_approve",
"tracking_number": ""
}
]
}
/v1/product/import
use Gam6itko\OzonSeller\Service\V1\ProductService;
use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle6\Client as GuzzleAdapter;
$config = [
'clientId' => '<ozon seller client-id>',
'apiKey' => '<ozon seller api-key>',
// use prod host by default
];
$adapter = new GuzzleAdapter(new GuzzleClient());
$svcProduct = new ProductService($config, $adapter);
$product = [
'barcode' => '8801643566784',
'description' => 'Red Samsung Galaxy S9 with 512GB',
'category_id' => 17030819,
'name' => 'Samsung Galaxy S9',
'offer_id' => 'REDSGS9-512',
'price' => '79990',
'old_price' => '89990',
'premium_price' => '75555',
'vat' => '0',
'vendor' => 'Samsung',
'vendor_code' => 'SM-G960UZPAXAA',
'height' => 77,
'depth' => 11,
'width' => 120,
'dimension_unit' => 'mm',
'weight' => 120,
'weight_unit' => 'g',
'images' => [
[
'file_name' => 'https://ozon-st.cdn.ngenix.net/multimedia/c1200/1022555115.jpg',
'default' => true,
],
[
'file_name' => 'https://ozon-st.cdn.ngenix.net/multimedia/c1200/1022555110.jpg',
'default' => false,
],
[
'file_name' => 'https://ozon-st.cdn.ngenix.net/multimedia/c1200/1022555111.jpg',
'default' => false,
],
],
'attributes' => [
[
'id' => 8229,
'value' => '4747',
],
[
'id' => 9048,
'value' => 'Samsung Galaxy S9',
],
[
'id' => 4742,
'value' => '512 ΠΠ',
],
[
'id' => 4413,
'collection' => ['1', '2', '13'],
],
[
'id' => 4018,
'complex_collection' => [
[
'collection' => [
[
'id' => 4068,
'value' => 'Additional video',
],
[
'id' => 4074,
'value' => '5_-NKRVn7IQ',
],
],
],
[
'collection' => [
[
'id' => 4068,
'value' => 'Another one video',
],
[
'id' => 4074,
'value' => '5_-NKRVn7IQ',
],
],
],
],
],
],
];
$svcProduct->import($product);
// or
$svcProduct->import([$product, $product1, $product2, ...]);
// or
$res = $svcProduct->import(['items' => [$product, $product1, $product2, ...] ]);
echo $res['task_id']; // save it for checking by `importInfo`