Интеграция API Wildberries и WooCommerce: автоматизация выгрузки остатков на чистом PHP

Синхронизация интернет-магазина WooCommerce с маркетплейсом Wildberries через готовые модули часто вызывает коллизии: остатки обновляются слишком медленно, а лимиты запросов к API WB (Rate Limits) превышаются, что приводит к блокировкам. Напишем легковесный и изолированный PHP-скрипт для выгрузки остатков пакетами через новый API WB (обновление по складам).

1. Авторизация и структура заголовков API WB

Для работы с Wildberries требуется передавать токен в заголовке Authorization. Настроим метод подготовки аргументов для нативного класса WP_Http:

function it_gig_get_wb_headers() {
    $token = 'your_wb_api_token_here';
    return [
        'headers' => [
            'Authorization' => $token,
            'Content-Type'  => 'application/json',
        ],
        'timeout' => 15
    ];
}

2. Пакетное обновление остатков на складе маркетплейса

Wildberries принимает остатки массивом, где каждому товару соответствует его штрихкод (баркод) и количество. Пишем метод, который собирает данные из WooCommerce и отправляет пакетный запрос на эндпоинт WB:

function it_gig_update_wb_stocks($stocks_data) {
    $url = 'https://wildberries.ru'; // 234567 - ID вашего склада WB
    $args = it_gig_get_wb_headers();
    
    $body_data = ['stocks' => []];
    foreach ($stocks_data as $barcode => $quantity) {
        $body_data['stocks'][] = [
            'sku'    => (string)$barcode,
            'amount' => (int)$quantity
        ];
    }
    
    $args['body'] = json_encode($body_data);
    $response = wp_remote_post($url, $args);
    
    if (is_wp_error($response)) {
        return false;
    }
    
    $code = wp_remote_retrieve_response_code($response);
    return ($code === 200);
}

Теги:

[wp_chatgpt_assistant]
Скопировано!