100yuristov/sto-yuristov-client

There is no license information available for the latest version (v2.1.0) of this package.

API client for 100yuristov.com service

Maintainers

👁 100yuristov

Package info

github.com/Sunsetboy/StoYuristovClient

pkg:composer/100yuristov/sto-yuristov-client

Statistics

Installs: 97

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.1.0 2026-03-15 09:31 UTC

Requires

Suggests

Provides

None

Conflicts

None

Replaces

None

Unknown License 01dc00cd0403ef7effe4ca6c4f4658a6719fc505

This package is auto-updated.

Last update: 2026-06-15 09:56:10 UTC


README

Установка

composer require 100yuristov/sto-yuristov-client

Пакет не привязан к конкретной HTTP-библиотеке. Вам нужно установить любой PSR-18-совместимый HTTP-клиент. Например, Guzzle:

composer require guzzlehttp/guzzle php-http/guzzle7-adapter

Или Symfony HttpClient:

composer require symfony/http-client nyholm/psr7

Базовое использование

С Guzzle

use GuzzleHttp\Client as GuzzleClient;
use Http\Adapter\Guzzle7\Client as GuzzleAdapter;
use GuzzleHttp\Psr7\HttpFactory;
use StoYuristov\StoYuristovClient;
use StoYuristov\StoYuristovLead;

$adapter = GuzzleAdapter::createWithConfig(['timeout' => 5]);
$factory = new HttpFactory();

$client = new StoYuristovClient(
 appId: ВАШ_APP_ID,
 secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
 httpClient: $adapter,
 requestFactory: $factory,
 streamFactory: $factory,
);

С Symfony HttpClient

use Symfony\Component\HttpClient\Psr18Client;
use StoYuristov\StoYuristovClient;

$psr18 = new Psr18Client();

$client = new StoYuristovClient(
 appId: ВАШ_APP_ID,
 secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
 httpClient: $psr18,
 requestFactory: $psr18,
 streamFactory: $psr18,
);

Отправка лида

use StoYuristov\StoYuristovLead;
use StoYuristov\Exception\ValidationException;
use StoYuristov\Exception\ApiException;

$lead = new StoYuristovLead(
 name: 'Иван Иванов',
 phone: '+79001234567',
 email: 'ivan@example.com',
 town: 'Москва',
 type: StoYuristovLead::TYPE_QUESTION,
 question: 'Как составить договор аренды?',
 price: 35, // опционально, если включён приём цены лида
);

try {
 $response = $client->sendLead($lead);
 echo $response->message; // описание ответа
 echo $response->leadId; // ID созданного лида
} catch (ValidationException $e) {
 // Ошибки валидации на стороне клиента
 print_r($e->getErrors());
} catch (ApiException $e) {
 // Ошибка API или HTTP
 echo $e->getMessage();
 echo $e->getHttpStatusCode();
} catch (\Psr\Http\Client\ClientExceptionInterface $e) {
 // Ошибка транспорта (сеть недоступна и т.п.)
 echo $e->getMessage();
}

Типы лида

Константа Значение Описание
StoYuristovLead::TYPE_QUESTION 1 Вопрос (по умолчанию)
StoYuristovLead::TYPE_CALL 2 Запрос обратного звонка

Тестовый режим

В тестовом режиме лиды проверяются, но не сохраняются.

$client = new StoYuristovClient(
 appId: ВАШ_APP_ID,
 secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
 httpClient: $httpClient,
 requestFactory: $requestFactory,
 streamFactory: $streamFactory,
 testMode: true,
);

Для тестирования против локального окружения можно передать кастомный baseUrl:

$client = new StoYuristovClient(
 appId: ВАШ_APP_ID,
 secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
 httpClient: $httpClient,
 requestFactory: $requestFactory,
 streamFactory: $streamFactory,
 baseUrl: 'http://100yuristov.local/api/',
 testMode: true,
);

Повторные попытки и таймауты

Библиотека не навязывает конкретный механизм ретраев — это задача HTTP-клиента. Пример с php-http/retry-plugin:

composer require php-http/httplug php-http/retry-plugin php-http/guzzle7-adapter
use Http\Client\Common\PluginClient;
use Http\Client\Common\Plugin\RetryPlugin;
use Http\Adapter\Guzzle7\Client as GuzzleAdapter;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Psr7\HttpFactory;

$guzzle = new GuzzleClient(['timeout' => 5, 'connect_timeout' => 2]);
$adapter = new GuzzleAdapter($guzzle);
$factory = new HttpFactory();

$retryPlugin = new RetryPlugin(['retries' => 3]);
$pluginClient = new PluginClient($adapter, [$retryPlugin]);

$client = new StoYuristovClient(
 appId: ВАШ_APP_ID,
 secretKey: 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
 httpClient: $pluginClient,
 requestFactory: $factory,
 streamFactory: $factory,
);

Подпись запроса

Подпись вычисляется автоматически перед каждой отправкой, указывать её вручную не нужно.

Запуск тестов локально

composer install
make test