vlsv / sber-api-registry-oauth-client
Клиент для работы с токенами Sber API Registry
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^7.1
- symfony/serializer-pack: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- overtrue/phplint: ^5.3
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.26
README
Клиент для работы с токенами Sber API Registry
Получение access_token
для последующей работы с доступными API.
Базовые сведения
Описание доработок, которые необходимо выполнить на стороне сервиса вызова API - Настройки сервиса вызова API. Вызов API осуществляется согласно спецификации Oauth 2.0, который предполагает первичное получение токена, разрешающего выполнить непосредственный запрос API (access_token).
ВАЖНО! Новый токен нужно получать для каждого нового запроса к API. Срок жизни токена составляет 60 сек.
Токены реализуются двух видов:
- OAUTH-токен - если не требуется доступ к клиентским данным и не требуется согласие клиента на получение его данных.
- OIDC-токен - если продукт API предполагает работу с данными клиента, в рамках установленных согласий клиентов.
Требования к переменным окружения
Для получения токена потребуются:
ClientId
иClientSecret
для их получения зарегистрировать приложение.- В целях двустороннего TLS соединения выпустить сертификат.
Установка библиотеки
composer require vlsv/sber-api-registry-oauth-client
Получение сертификата
Официальная документация:
Подготовка сертификата
openssl pkcs12 -in {path_to_certificate}/cert.p12 -out {path_to_certificate}/cert.pem -nodes
Получение access_token
Приведенные параметры методов запроса токена - минимально необходимые, фактически их больше (см. исходники).
require_once(__DIR__ . '/vendor/autoload.php'); $config = new \Vlsv\SberApiRegistryOauthClient\ClientConfig( clientId: 'client_id', clientSecret: 'client_secret', certPath: 'cert_path', certPassword: 'cert_password', ); $oAuthClient = new \Vlsv\SberApiRegistryOauthClient\OAuthClient($config); // OAUTH-токен try { $accessToken = $oAuthClient ->getOauthToken(scope: 'https://api.sberbank.ru/qr/order.create') ->getAccessToken(); } catch (\Vlsv\SberApiRegistryOauthClient\Exception\ApiException $exception) { echo $exception->getMessage(); if ($exception->getResponseObject()) { echo $exception->getResponseObject()->getMoreInformation(); } } catch (\Throwable $exception) { echo $exception->getMessage(); } // OIDC-токен try { $accessToken = $oAuthClient->getOidcToken( scope: 'https://api.sberbank.ru/qr/order.create', code: 'authorization_code', redirectUri: 'redirect_uri', )->getAccessToken(); } catch (\Vlsv\SberApiRegistryOauthClient\Exception\ApiException $exception) { echo $exception->getMessage(); if ($exception->getResponseObject()) { echo $exception->getResponseObject()->getMoreInformation(); } } catch (\Throwable $exception) { echo $exception->getMessage(); }
Тесты
Все группы.
composer tests
Feature и unit.
composer tests-feature && composer tests-unit
Для интеграционных тестов (библиотеки):
cp phpunit.xml.dist phpunit.xml
Заполнить переменные CLIENT_ID
, CLIENT_SECRET
и пр. значениями полученными при регистрации согласно
официальной документации.
При вызове метода получения токена указан scope
из SberPay QR/Плати QR.
composer tests-integration