keystore-api / keystore-client-php
1.0.8
2025-05-13 22:50 UTC
Requires
- php: >=5.6
- ext-json: *
- guzzlehttp/guzzle: ^6.5
README
Установка
Устанавливать рекомендуется через composer выполнив:
composer require keystore-api/keystore-client-php "~1.0.0"
Использование
Аутентификация
- Аутентификация осуществляется через API-ключ
- Параметр для этого ключа называется "key"
- API-ключ доступен в разделе "Настройки" аккаунта
Начало работы
Полный вариант
$key = '<secret>'; $baseUrl = 'https://<domain>'; // Создание объекта аутентификации $auth = new AuthApiKey($key); // Создание HTTP клиента $client = new HttpGuzzleClient($baseUrl); // Создание HTTP провайдера данных $provider = new HttpApiProvider($httpClient, $auth); // Создание сервиса $service = new KeystoreClient($provider);
Сокращенный вариант
$key = '<secret>'; $baseUrl = 'https://<domain>'; // Создание сервиса $service = KeystoreClientFactory::create($baseUrl, $key);
Список категорий
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->categoryList();
Список групп
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->groupList();
С использованием параметров поиска
... $params = new GroupSearchParams(); $params ->setCategoryId(1) ->setPerPage(100); $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->groupList($params);
Список товаров
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->productList();
С использованием параметров поиска
⚠️ Для большинства сценариев использования, рекомендуем получать только активные товары, используя
метод setOnlyInStock(true)
.
... $params = new ProductSearchParams(); $params ->setCategoryId(1) ->setOnlyInStock(true) // Только товары в наличие ->setPage(2) // Установка страницы (пагинация) ->setPerPage(100); $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->productList($params);
Пример получения всех товаров
... $service = KeystoreClientFactory::create($baseUrl, $key); $params = new ProductSearchParams(); $params ->setOnlyInStock(true) ->setOnlyExclusive(true) ->setPerPage(500); $currentPage = 1; $allItems = []; do { $params->setPage($currentPage); $result = $service->productList($params); $meta = $result->getMeta(); // Добавляем продукты с текущей страницы в общий список $allItems = array_merge($allItems, $result->getItems()); $currentPage++; // Если это не последний запрос, добавляем задержку в 0.5 секунды перед следующим запросом if ($currentPage <= $meta->getPageCount()) { usleep(500000); } } while ($currentPage <= $meta->getPageCount());
Просмотр товара
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->productView(1);
Топ-100 товаров
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->productTopList();
Просмотр баланса
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->userBalance();
Создание заказа
... $params = new OrderCreateParams(1, 5); $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->orderCreate($params);
Получение статуса заказа
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->orderStatus(1);
Возможные статусы заказа:
Статус | Описание |
---|---|
unpaid | Заказ создан, но не оплачен |
in_process | Заказ в процессе обработки |
completed | Заказ завершен |
canceled | Заказ отменен |
error | Произошла ошибка во время выполнения заказа |
refund | По заказу совершен возврат средств |
Просмотр заказа
... $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->orderDownload(1);
Создание и получение информации по заказу
... $params = new OrderCreateParams(1, 5); // Создание заказа и получение информации о нем // В ответ возвращается один из объектов: // OrderCreatedInterface - если заказ создан, но не обработан (имеет статус PENDING) // OrderDetailInterface - если заказ создан и обработан (имеет статус OK) $service = KeystoreClientFactory::create($baseUrl, $key); $result = $service->awaitOrderCreate($params);
Данные ответа
Модель | Экземпляр класса |
---|---|
Список категорий | CategoryListInterface |
Список групп | GroupListInterface |
Список товаров | ProductListInterface |
Просмотр товара | ProductDetailInterface |
Топ-100 товаров | ProductListInterface |
Просмотр баланса | UserBalanceInterface |
Создание заказа | OrderCreatedInterface |
Статус заказа | OrderStatusInterface |
Просмотр заказа | OrderDetailInterface |
Создание и получение информации по заказу | OrderDetailInterface OrderCreatedInterface OrderDownloadInterface |
Обработка ошибок
Исключения
Модель | Экземпляр класса |
---|---|
Интерфейс всех исключений | KeystoreExceptionInterface |
Ошибка передаваемых данных | InvalidDataException |
Ошибка авторизации | UnauthorizedException |
Ошибка запроса | BadRequestException |
Ресурс не найден | NotFoundException |
HTTP клиент
Использование своего HTTP клиента
По умолчанию запросы отправляются через Guzzle. Для подключения своего HTTP клиента:
// Создание своего HTTP клиента class MyHTTPClient implements HttpClientInterface { ... } $httpClient = new MyHTTPClient(); // Создание сервиса $service = KeystoreClientFactory::http($httpClient, $auth);
Использование своего провайдера данных
По умолчанию запросы отправляются через HTTP. Для подключения своего провайдера:
// Создание своего провайдера class MyProvider implements ApiProviderInterface { ... } $provider = new MyProvider(); // Создание сервиса $service = new KeystoreClient($provider);