定制 keystore-api/keystore-client-php 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

keystore-api/keystore-client-php

最新稳定版本:1.0.9

Composer 安装命令:

composer require keystore-api/keystore-client-php

包简介

README 文档

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

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

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

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

Опционально можно передать 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
Ресурс не найден 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);

统计信息

  • 总下载量: 203
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-08-15