// use Apoloz\AlfaBank\Core\AlfaBankConnector; use Apoloz\AlfaBank\Core\AlfaConfig; use Apoloz\AlfaBank\Enums\Environment; use Apoloz\AlfaBank\Requests\Accounts\GetAccountsRequest; use Apoloz\AlfaBank\Sbp\SbpConnector; use Apoloz\AlfaBank\Services\OpenSslCmsSigner; use Psr\Log\LoggerInterface; class AlfaBank { /** * Performs a health check on the connection. * Throws an exception if authentication or account listing fails. */ public static function check( string $certificatePath, string $privateKeyPath, string $clientId, string $clientSecret, Environment $environment = Environment::SANDBOX, ?string $caBundlePath = null ): bool { $baas = self::baas($certificatePath, $privateKeyPath, $environment, $caBundlePath); $baas->login($clientId, $clientSecret); $baas->send(new GetAccountsRequest); return true; } public static function baas( string $certificatePath, string $privateKeyPath, Environment $environment = Environment::SANDBOX, ?string $caBundlePath = null, ?string $clientId = null, ?string $clientSecret = null, ?string $redirectUri = null, ?string $signingCertificatePath = null, ?string $signingPrivateKeyPath = null, ?LoggerInterface $logger = null, ): AlfaBankConnector { $config = new AlfaConfig( baseUrl: $environment->value, certificatePath: $certificatePath, privateKeyPath: $privateKeyPath, caBundlePath: $caBundlePath, clientId: $clientId, clientSecret: $clientSecret, redirectUri: $redirectUri, signingCertificatePath: $signingCertificatePath, signingPrivateKeyPath: $signingPrivateKeyPath ); $signerCert = $signingCertificatePath ?: $certificatePath; $signerKey = $signingPrivateKeyPath ?: $privateKeyPath; $signer = new OpenSslCmsSigner($signerCert, $signerKey); $connector = new AlfaBankConnector($config, $signer); if ($logger) { $connector->withLogging($logger); } return $connector; } // //
// public static function sbp( string $certificatePath, string $privateKeyPath, string $keyNameAlias, Environment $environment = Environment::SANDBOX, ?string $caBundlePath = null, ?string $signingCertificatePath = null, ?string $signingPrivateKeyPath = null, ?LoggerInterface $logger = null, ): SbpConnector { $baseUrl = $environment === Environment::PRODUCTION ? Environment::SBP_PRODUCTION->value : Environment::SBP_SANDBOX->value; $config = new AlfaConfig( baseUrl: $baseUrl, certificatePath: $certificatePath, privateKeyPath: $privateKeyPath, caBundlePath: $caBundlePath, signingCertificatePath: $signingCertificatePath, signingPrivateKeyPath: $signingPrivateKeyPath ); return new SbpConnector($config, $keyNameAlias, logger: $logger); } //
}