forked from apoloz/alfa-bank-sdk
Update documentation and examples, add new nominal accounts features and authentication methods
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -12,25 +12,26 @@ use Apoloz\AlfaBank\Enums\Environment;
|
||||
*/
|
||||
|
||||
// 1. Конфигурация
|
||||
$clientId = getenv('ALFA_BAAS_CLIENT_ID');
|
||||
$clientSecret = getenv('ALFA_BAAS_CLIENT_SECRET');
|
||||
$redirectUri = 'https://your-domain.com/callback';
|
||||
$cert = __DIR__ . '/certs/client.cer';
|
||||
$key = __DIR__ . '/certs/private.key';
|
||||
// Все эти данные вы получаете на Портале Разработчика и в Интернет-банке.
|
||||
$clientId = getenv('ALFA_BAAS_CLIENT_ID'); // ID приложения (Portal)
|
||||
$clientSecret = getenv('ALFA_BAAS_CLIENT_SECRET'); // Secret Key (Portal OR Generated via SDK)
|
||||
$redirectUri = 'https://your-domain.com/callback'; // Callback URL (Portal)
|
||||
$cert = __DIR__ . '/certs/client.cer'; // Public Cert (From Bank)
|
||||
$key = __DIR__ . '/certs/private.key'; // Private Key (Generated by You)
|
||||
|
||||
// 2. Инициализация сервиса авторизации
|
||||
$authService = AlfaBank::auth(
|
||||
$clientId,
|
||||
$clientSecret,
|
||||
$redirectUri,
|
||||
$cert,
|
||||
$key,
|
||||
Environment::SANDBOX
|
||||
// 2. Инициализация SDK (сразу с кредами)
|
||||
$baas = AlfaBank::baas(
|
||||
certificatePath: $cert,
|
||||
privateKeyPath: $key,
|
||||
environment: Environment::SANDBOX,
|
||||
clientId: $clientId,
|
||||
clientSecret: $clientSecret,
|
||||
redirectUri: $redirectUri
|
||||
);
|
||||
|
||||
// --- СЦЕНАРИЙ 1: Генерация ссылки на вход ---
|
||||
// Выведите эту ссылку в админке или логах
|
||||
$link = $authService->getAuthUrl(scopes: ['beneficiaries', 'payment']);
|
||||
// Используем нативный метод Saloon
|
||||
$link = $baas->getAuthorizationUrl(scopes: ['beneficiaries', 'payment']);
|
||||
echo "1. Перейдите по ссылке для авторизации:\n$link\n\n";
|
||||
|
||||
|
||||
@@ -41,17 +42,17 @@ $codeFromUrl = '...код из браузера...';
|
||||
if ($codeFromUrl !== '...код из браузера...') {
|
||||
try {
|
||||
echo "2. Обмен кода на токены...\n";
|
||||
$tokenData = $authService->exchangeCode($codeFromUrl);
|
||||
|
||||
echo "Access Token: " . substr($tokenData->access_token, 0, 20) . "...\n";
|
||||
echo "Refresh Token: " . $tokenData->refresh_token . "\n";
|
||||
echo "Expires In: " . $tokenData->expires_in . " sec\n";
|
||||
// Saloon делает всё сам:
|
||||
$authenticator = $baas->getAccessToken($codeFromUrl);
|
||||
|
||||
echo "Access Token: " . substr($authenticator->getAccessToken(), 0, 20) . "...\n";
|
||||
echo "Refresh Token: " . $authenticator->getRefreshToken() . "\n";
|
||||
echo "Expires At: " . $authenticator->getExpiresAt()->format('Y-m-d H:i:s') . "\n";
|
||||
|
||||
// TODO: Сохраните refresh_token в базу данных!
|
||||
// DB::table('settings')->updateOrInsert(['key' => 'alfa_refresh_token'], ['value' => $tokenData->refresh_token]);
|
||||
|
||||
} catch (
|
||||
Exception $e) {
|
||||
} catch (\Exception $e) {
|
||||
echo "Ошибка обмена кода: " . $e->getMessage() . "\n";
|
||||
}
|
||||
}
|
||||
@@ -62,17 +63,21 @@ $savedRefreshToken = '...saved_refresh_token...';
|
||||
if ($savedRefreshToken !== '...saved_refresh_token...') {
|
||||
try {
|
||||
echo "3. Обновление токена...\n";
|
||||
$newTokenData = $authService->refreshToken($savedRefreshToken);
|
||||
|
||||
// Обновляем токен
|
||||
$newAuthenticator = $baas->refreshAccessToken($savedRefreshToken);
|
||||
|
||||
// Автоматически применяем к коннектору (для текущего скрипта)
|
||||
$baas->authenticate($newAuthenticator);
|
||||
|
||||
echo "Токен обновлен!\n";
|
||||
|
||||
// Если пришел новый refresh_token — обновляем его
|
||||
if ($newTokenData->refresh_token) {
|
||||
if ($newAuthenticator->getRefreshToken()) {
|
||||
// DB::update(...)
|
||||
echo "Новый Refresh Token получен.\n";
|
||||
}
|
||||
} catch (
|
||||
Exception $e) {
|
||||
} catch (\Exception $e) {
|
||||
echo "Ошибка обновления токена: " . $e->getMessage() . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user