PHPackages                             keystore-api/keystore-client-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. keystore-api/keystore-client-php

ActiveLibrary[HTTP &amp; Networking](/categories/http)

keystore-api/keystore-client-php
================================

1.0.9(9mo ago)0213MITPHPPHP &gt;=5.6

Since Aug 15Pushed 9mo ago2 watchersCompare

[ Source](https://github.com/keystore-api/keystore-client-php)[ Packagist](https://packagist.org/packages/keystore-api/keystore-client-php)[ RSS](/packages/keystore-api-keystore-client-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (2)Versions (11)Used By (0)

Keystore API Client
===================

[](#keystore-api-client)

Установка
---------

[](#установка)

Устанавливать рекомендуется через composer выполнив:

```
composer require keystore-api/keystore-client-php "~1.0.0"

```

Использование
-------------

[](#использование)

### Аутентификация

[](#аутентификация)

- Аутентификация осуществляется через API-ключ
- Параметр для этого ключа называется "key"
- API-ключ доступен в разделе "Настройки" аккаунта

### Начало работы

[](#начало-работы)

#### Полный вариант

[](#полный-вариант)

```
$key = '';
$baseUrl = 'https://';

// Создание объекта аутентификации
$auth = new AuthApiKey($key);
// Создание HTTP клиента
$client = new HttpGuzzleClient($baseUrl);
// Создание HTTP провайдера данных
$provider = new HttpApiProvider($httpClient, $auth);
// Создание сервиса
$service = new KeystoreClient($provider);
```

#### Сокращенный вариант

[](#сокращенный-вариант)

```
$key = '';
$baseUrl = 'https://';

// Создание сервиса
$service = KeystoreClientFactory::create($baseUrl, $key);
```

### Список атрибутов

[](#список-атрибутов)

```
...

$service = KeystoreClientFactory::create($baseUrl, $key);
$result = $service->attributeList();
```

### Список категорий

[](#список-категорий)

```
...

$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();
```

#### С использованием параметров поиска

[](#с-использованием-параметров-поиска-1)

⚠️ Для большинства сценариев использования, рекомендуем получать только активные товары, используя метод `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 getPageCount()) {
        usleep(500000);
    }
} while ($currentPage getPageCount());
```

### Просмотр товара

[](#просмотр-товара)

```
...

$service = KeystoreClientFactory::create($baseUrl, $key);
$result = $service->productView(1);
```

### Топ-100 товаров

[](#топ-100-товаров)

```
...

$service = KeystoreClientFactory::create($baseUrl, $key);
$result = $service->productTopList();
```

### Просмотр баланса

[](#просмотр-баланса)

```
...

$service = KeystoreClientFactory::create($baseUrl, $key);
$result = $service->userBalance();
```

### Создание заказа

[](#создание-заказа)

Опционально можно передать `idempotenceId` - обычно это ID заказа в вашей системе.

Если заказ от вас с таким idempotenceId уже создан, то вместо создания нового будет возвращена информация о существующем заказе.

```
...

$params = new OrderCreateParams(1, 5);
$params->setIdempotenceId('your-order-id');

$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Ресурс не найденNotFoundExceptionHTTP клиент
-----------

[](#http-клиент)

### Использование своего 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);
```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance58

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~80 days

Recently: every ~70 days

Total

10

Last Release

280d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3efd6cb4314b883e6faaae9b8749c5659ba4851a6655baa9ad2d25b7381f44e8?d=identicon)[keystore-api](/maintainers/keystore-api)

---

Top Contributors

[![keystore-api](https://avatars.githubusercontent.com/u/142335536?v=4)](https://github.com/keystore-api "keystore-api (16 commits)")

---

Tags

httpclientrest

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/keystore-api-keystore-client-php/health.svg)

```
[![Health](https://phpackages.com/badges/keystore-api-keystore-client-php/health.svg)](https://phpackages.com/packages/keystore-api-keystore-client-php)
```

###  Alternatives

[printu/labelary

PHP API for Labelary.com

34616.9k](/packages/printu-labelary)[printu/customerio

PHP API for Customer.io

241.1M2](/packages/printu-customerio)[slimpay/hapiclient

An HTTP Client using HAL as the format for resources.

14317.3k](/packages/slimpay-hapiclient)[zoonman/pixabay-php-api

PixabayClient is a PHP HTTP client library to access Pixabay's API

3354.7k](/packages/zoonman-pixabay-php-api)[e-moe/guzzle6-bundle

Integrates Guzzle 6 into your Symfony application

11259.2k](/packages/e-moe-guzzle6-bundle)[meteocontrol/vcom-api-client

HTTP Client for meteocontrol's VCOM API - The VCOM API enables you to directly access your data on the meteocontrol platform.

175.7k1](/packages/meteocontrol-vcom-api-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
