PHP
Пакет: valeryverkhoturov/wb-api-client на Packagist.
- PHP: 8.1+
- HTTP: Guzzle 7
- Автозагрузка: PSR-4, корневое пространство
ValeryVerkhoturov\WbApiClient\ - Обёртка секретов:
SecretStringв каждом под-пространстве
Установка
composer require valeryverkhoturov/wb-api-clientГде лежит исходник
PHP здесь — отдельный случай: Packagist требует, чтобы composer.json был в корне обходимого репозитория, поэтому PHP-клиент живёт в отдельном репозитории — ValeryVerkhoturov/wb-api-client-php — а не под clients/php в моно-репозитории.
Соседний репозиторий подключён как git-submodule по пути clients/php в основном репозитории, так что ежедневный CI-прогон генерирует все восемь языков в одном месте, а затем коммитит и тегает оба репозитория синхронно. Для конечного потребителя через Composer это прозрачно — просто composer require и работайте.
Форма пространств имён
Корневое пространство: ValeryVerkhoturov\WbApiClient\. Каждая категория WB — PascalCase-подпространство:
use ValeryVerkhoturov\WbApiClient\Items\Configuration;
use ValeryVerkhoturov\WbApiClient\Items\Api\ItemsApi;Под-пространства
General, Items, OrdersFbs, OrdersDbw, Dbs, InStorePickup, OrdersFbw, Promotion, Communications, Rates, Analytics, Reports, Finances.
Полный список API на под-пространство: README проекта wb-api-client-php.
Авторизация
<?php
require 'vendor/autoload.php';
use ValeryVerkhoturov\WbApiClient\Items\Configuration;
use ValeryVerkhoturov\WbApiClient\Items\Api\ItemsApi;
use GuzzleHttp\Client;
$config = (new Configuration())
->setAccessToken('<ваш JWT WB>');
$api = new ItemsApi(new Client(), $config);
$result = $api->someEndpoint();setAccessToken принимает обычную строку и хранит её внутри как SecretString: var_dump($config) покажет токен замаскированным, а не сырым.
Получить сырое значение:
$raw = $config->getAccessToken(); // string|nullUser-Agent
Каждый запрос отправляет ValeryVerkhoturov/wb-api-client/php (не дефолт openapi-generator). Чтобы добавить свой идентификатор приложения:
$config = (new Configuration())
->setAccessToken(TOKEN)
->setUserAgent('MyApp/1.2.3 ValeryVerkhoturov/wb-api-client/php');Свой Guzzle-клиент
Собственный клиент для прокси, middleware, кастомных таймаутов:
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
$stack = HandlerStack::create();
// $stack->push(...); // ваш middleware
$http = new Client([
'timeout' => 60,
'handler' => $stack,
'proxy' => getenv('HTTPS_PROXY') ?: null,
]);
$api = new ItemsApi($http, $config);Тестирование
Переопределите host на Configuration:
$config = (new Configuration())
->setHost('http://localhost:8080')
->setAccessToken('test-token');См. также
