PHP code example of keystore-api / keystore-client-php

1. Go to this page and download the library: Download keystore-api/keystore-client-php 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/ */

    

keystore-api / keystore-client-php example snippets


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

...

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

...

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

...

$params = new OrderCreateParams(1, 5);

// Создание заказа и получение информации о нем
// В ответ возвращается один из объектов:
// OrderCreatedInterface - если заказ создан, но не обработан (имеет статус PENDING)
// OrderDetailInterface - если заказ создан и обработан (имеет статус OK)
$service = KeystoreClientFactory::create($baseUrl, $key);
$result = $service->awaitOrderCreate($params);

// Создание своего HTTP клиента
class MyHTTPClient implements HttpClientInterface
{
    ...
}
$httpClient = new MyHTTPClient();
// Создание сервиса
$service = KeystoreClientFactory::http($httpClient, $auth);

// Создание своего провайдера
class MyProvider implements ApiProviderInterface
{
    ...
}

$provider = new MyProvider();
// Создание сервиса
$service = new KeystoreClient($provider);