100yuristov / sto-core-client
There is no license information available for the latest version (dev-master) of this package.
API client for 100 Yuristov Core service
dev-master
2026-03-30 10:57 UTC
Requires
- php: ^8.4
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.8
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^10.5
Suggests
- guzzlehttp/guzzle: Popular PSR-18 compatible HTTP client
- php-http/discovery: Auto-discover installed PSR-18 clients
- symfony/http-client: Symfony PSR-18 HTTP client
This package is not auto-updated.
Last update: 2026-03-30 22:29:26 UTC
README
PHP-клиент для интеграции сайтов с ядром сети 100 Юристов.
Требования
- PHP 8.2+
- PSR-18 HTTP-клиент (например, Guzzle или Symfony HTTP Client)
- PSR-17 фабрики запросов и потоков
Установка
composer require 100yuristov/sto-core-client
Инициализация
Для работы с SDK необходимы api_key и api_secret сайта, которые выдаёт администратор ядра.
SDK не привязан к конкретному HTTP-клиенту — передайте любой PSR-18 совместимый:
Guzzle:
use GuzzleHttp\Client as GuzzleClient; use GuzzleHttp\Psr7\HttpFactory; use StoCore\StoClient; $httpClient = new GuzzleClient(); $factory = new HttpFactory(); $client = new StoClient( apiKey: 'ваш_api_key', apiSecret: 'ваш_api_secret', httpClient: $httpClient, requestFactory: $factory, streamFactory: $factory, );
Symfony HTTP Client:
use Symfony\Component\HttpClient\Psr18Client; use StoCore\StoClient; $httpClient = new Psr18Client(); $client = new StoClient( apiKey: 'ваш_api_key', apiSecret: 'ваш_api_secret', httpClient: $httpClient, requestFactory: $httpClient, streamFactory: $httpClient, );
По умолчанию клиент обращается к https://core.100yuristov.com. Чтобы изменить адрес, передайте параметр baseUrl:
$client = new StoClient( apiKey: 'ваш_api_key', apiSecret: 'ваш_api_secret', httpClient: $httpClient, requestFactory: $factory, streamFactory: $factory, baseUrl: 'https://staging.core.100yuristov.com', );
Создание вопроса
use StoCore\CreateQuestionRequest; use StoCore\Exception\ApiException; $request = new CreateQuestionRequest( externalId: '123', // ID вопроса на вашем сайте text: 'Текст вопроса', authorName: 'Иван', price: 1000, // в копейках currency: 'RUB', ); try { $question = $client->createQuestion($request); echo $question->id; // ID вопроса в ядре echo $question->externalId; // ваш исходный ID echo $question->createdAt; // дата создания } catch (ApiException $e) { echo $e->getMessage(); // текст ошибки от API echo $e->getHttpStatusCode(); // HTTP статус }
Параметры CreateQuestionRequest
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
externalId |
string | да | ID вопроса на вашем сайте |
text |
string | да | Текст вопроса |
authorName |
string | нет | Имя автора |
price |
int | нет | Цена в копейках (по умолчанию 0) |
currency |
string | нет | Валюта (по умолчанию RUB) |
Обработка ошибок
Все ошибки API выбрасывают StoCore\Exception\ApiException:
| HTTP статус | Причина |
|---|---|
| 401 | Неверный api_key или подпись |
| 409 | Вопрос с таким external_id уже существует |
| 500 | Внутренняя ошибка ядра |