PHP code example of dmitrijkalugin / wildberries-api-client

1. Go to this page and download the library: Download dmitrijkalugin/wildberries-api-client library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

dmitrijkalugin / wildberries-api-client example snippets


use DmitrijKalugin\WildberriesApiClient\Services\WildberriesApiService;

class YourController extends Controller
{
    public function __construct(
        private WildberriesApiService $wildberriesApi
    ) {}

    public function getProducts()
    {
        $products = $this->wildberriesApi->getCards();
        return response()->json($products);
    }
}

Wildberries::setToken('your_new_token')->getSellerInfo();

// Проверка соединения с различными сервисами
WildberriesApiService::ping('common');     // common-api
WildberriesApiService::ping('content');    // content-api
WildberriesApiService::ping('marketplace'); // marketplace-api

// Информация о продавце
WildberriesApiService::getSellerInfo();

// Новости портала продавцов
WildberriesApiService::getNews([
    'from' => '2024-01-01',        // Дата от
    'fromID' => 7369               // ID новости от
]);

// Получение списка карточек товаров
$cards = WildberriesApiService::getCards([
    'limit' => 100,
    'offset' => 0
]);

// Создание карточек товаров
$createResult = WildberriesApiService::createCards([
    [
        'subjectID' => 105,
        'variants' => [
            [
                'vendorCode' => 'ART-001',
                'brand' => 'MyBrand',
                'title' => 'Название товара',
                'description' => 'Описание товара',
            ],
        ],
    ],
]);

// Обновление карточек товаров
$updateResult = WildberriesApiService::updateCards([
    [
        'nmID' => 123456,
        'title' => 'Новое название товара',
        'description' => 'Описание товара'
    ]
]);

// Получение медиафайлов товара
$media = WildberriesApiService::getMediaFiles(123456);

// Получение списка складов
$warehouses = WildberriesApiService::getWarehouses();

// Получение заказов
$orders = WildberriesApiService::getOrders([
    'dateFrom' => '2024-01-01',
    'dateTo' => '2024-01-31'
]);

// Получение остатков
$stocks = WildberriesApiService::getStocks([
    'dateFrom' => '2024-01-01'
]);

// Обновление остатков
$warehouseId = 123; // ID склада
$stocksUpdate = WildberriesApiService::updateStocks($warehouseId, [
    [
        'sku' => 'SKU123',
        'amount' => 10
    ]
]);

// Обновление цен
$pricesUpdate = WildberriesApiService::updatePrices([
    [
        'nmId' => 12345678,
        'price' => 1999
    ]
]);

// Статистика поставок
$incomes = WildberriesApiService::getIncomes([
    'dateFrom' => '2024-01-01'
]);

// Статистика продаж
$sales = WildberriesApiService::getSales([
    'dateFrom' => '2024-01-01',
    'flag' => 0
]);

// Остатки товаров
$stockStats = WildberriesApiService::getStockStatistics([
    'dateFrom' => '2024-01-01'
]);

// Получение рекламных кампаний
$campaigns = WildberriesApiService::getAdvertCampaigns();

// Получение отзывов
$feedbacks = WildberriesApiService::getFeedbacks([
    'isAnswered' => false,
    'take' => 100,
    'skip' => 0
]);

// Получение финансовых отчетов
$reports = WildberriesApiService::getFinanceReports([
    'dateFrom' => '2024-01-01',
    'dateTo' => '2024-01-31'
]);

// GET запрос
$response = WildberriesApiService::get('/api/endpoint', ['param' => 'value']);

// POST запрос
$response = WildberriesApiService::post('/api/endpoint', ['data' => 'value']);

// Запрос к конкретному сервису
$response = WildberriesApiService::requestToService(
    'content',           // сервис
    'GET',              // метод
    '/content/v2/cards', // endpoint
    ['query' => ['limit' => 100]]
);

use DmitrijKalugin\WildberriesApiClient\Exceptions\AuthenticationException;
use DmitrijKalugin\WildberriesApiClient\Exceptions\RateLimitException;
use DmitrijKalugin\WildberriesApiClient\Exceptions\WildberriesApiException;

try {
    $result = WildberriesApiService::getSellerInfo();
} catch (AuthenticationException $e) {
    // Ошибка авторизации (401)
    logger()->error('WB Auth Error: ' . $e->getMessage());
} catch (RateLimitException $e) {
    // Превышен лимит запросов (429)
    logger()->warning('WB Rate Limit: ' . $e->getMessage());
} catch (WildberriesApiException $e) {
    // Другие API ошибки
    logger()->error('WB API Error: ' . $e->getMessage());
    $apiErrors = $e->getApiErrors(); // Дополнительная информация об ошибках
}

return [
    // API токен
    'token' => env('WILDBERRIES_API_TOKEN'),
    
    // Режим песочницы
    'sandbox' => env('WILDBERRIES_SANDBOX', false),
    
    // HTTP настройки
    'http' => [
        'timeout' => 30,
        'retry_attempts' => 3,
        'retry_delay' => 1000,
    ],
    
    // Ограничения запросов
    'rate_limiting' => [
        'enabled' => true,
        'default_limit' => 60,
        'burst_limit' => 10,
    ],
    
    // Логирование
    'logging' => [
        'enabled' => env('WILDBERRIES_LOGGING', false),
        'channel' => env('WILDBERRIES_LOG_CHANNEL', 'default'),
        'level' => env('WILDBERRIES_LOG_LEVEL', 'info'),
    ],
];

use DmitrijKalugin\WildberriesApiClient\Services\WildberriesApiService;

class StockUpdater
{
    public function updateStocks(int $warehouseId, array $products)
    {
        $stocks = [];
        
        foreach ($products as $product) {
            $stocks[] = [
                'sku' => $product['sku'],
                'amount' => $product['quantity']
            ];
        }
        
        try {
            $result = WildberriesApiService::updateStocks($warehouseId, $stocks);
            logger()->info('Stocks updated successfully', $result);
        } catch (\Exception $e) {
            logger()->error('Failed to update stocks: ' . $e->getMessage());
            throw $e;
        }
    }
}

class OrderSynchronizer
{
    public function syncOrders(string $dateFrom, string $dateTo)
    {
        try {
            $orders = WildberriesApiService::getOrders([
                'dateFrom' => $dateFrom,
                'dateTo' => $dateTo
            ]);
            
            foreach ($orders as $order) {
                // Сохранение заказа в локальную БД
                $this->saveOrderToDatabase($order);
            }
            
        } catch (\Exception $e) {
            logger()->error('Order sync failed: ' . $e->getMessage());
            throw $e;
        }
    }
}
bash
php artisan vendor:publish --tag=wildberries-config