PHP code example of ailos / sdk

1. Go to this page and download the library: Download ailos/sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ailos / sdk example snippets


// Homologação (padrão)
$sdk = new \Ailos\Sdk\AilosSdk(
    clientCredentials:    $clientCredentials,
    cooperadoCredentials: $cooperadoCredentials,
    environment:          'homologacao',
);

// Produção
$sdk = new \Ailos\Sdk\AilosSdk(
    clientCredentials:    $clientCredentials,
    cooperadoCredentials: $cooperadoCredentials,
    environment:          'producao',
);



use Ailos\Sdk\AilosSdk;
use Ailos\Sdk\Auth\Credentials\ClientCredentials;
use Ailos\Sdk\Auth\Credentials\CooperadoCredentials;

$clientCredentials = new ClientCredentials(
    consumerKey:    'sua-consumer-key',
    consumerSecret: 'seu-consumer-secret',
);

$cooperadoCredentials = new CooperadoCredentials(
    urlCallback:          'https://sua-aplicacao.com.br/ailos/callback',
    ailosApiKeyDeveloper: 'seu-uuid-developer',
    codigoCooperativa:    '0001',
    codigoConta:          '123456',
    senha:                'senha-do-cooperado',
);

$sdk = new AilosSdk(
    clientCredentials:    $clientCredentials,
    cooperadoCredentials: $cooperadoCredentials,
    environment:          'homologacao',
);

// Inicia o fluxo de autenticação
// O JWT será enviado pela Ailos para a sua urlCallback
$sdk->authenticate();

// POST /ailos/callback
$sdk->callbackHandler()->handleFromGlobals();

// routes/api.php
use Illuminate\Http\Request;

Route::post('/ailos/callback', function (Request $request) {
    $sdk->callbackHandler()->handleFromArray($request->all());

    return response()->json(['message' => 'Autenticação concluída.']);
});

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;

#[Route('/ailos/callback', methods: ['POST'])]
public function callback(Request $request): JsonResponse
{
    $sdk->callbackHandler()->handleFromJson($request->getContent());

    return $this->json(['message' => 'Autenticação concluída.']);
}

$app->post('/ailos/callback', function (Request $request, Response $response) use ($sdk) {
    $sdk->callbackHandler()->handleFromArray((array) $request->getParsedBody());

    $response->getBody()->write(json_encode(['message' => 'Autenticação concluída.']));
    return $response->withHeader('Content-Type', 'application/json');
});

$payload = $sdk->callbackHandler()->handleFromArray($request->all());

$state = $payload->state(); // "identificador-da-chamada"

// POST /ailos/callback

// 1. Leia e processe o payload da forma que preferir
$body  = json_decode(file_get_contents('php://input'), associative: true);
$jwt   = $body['code']  ?? '';
$state = $body['state'] ?? '';

// 2. Lógica customizada antes de informar o JWT ao SDK
if ($state !== $_SESSION['ailos_state_esperado']) {
    http_response_code(422);
    echo json_encode(['error' => 'State inválido.']);
    exit;
}

// 3. Informe o JWT ao SDK manualmente
$sdk->handleCallback($jwt);

if ($sdk->isAuthenticated()) {
    // Retorna o JWT como string — renova automaticamente se necessário
    $jwt = $sdk->getJwtValue();

    // Use o JWT no header das suas requisições à API Ailos
    $headers = [
        'x-ailos-authentication: ' . $jwt,
    ];
}

$sdk->logout();

use Ailos\Sdk\Exceptions\AilosSdkException;
use Ailos\Sdk\Exceptions\AuthenticationException;
use Ailos\Sdk\Exceptions\InvalidCredentialsException;
use Ailos\Sdk\Exceptions\TokenExpiredException;
use Ailos\Sdk\Exceptions\HttpException;

try {
    $sdk->authenticate();

} catch (InvalidCredentialsException $e) {
    // Consumer Key, Consumer Secret ou dados do cooperado inválidos
    echo 'Credenciais inválidas: ' . $e->getMessage();

} catch (TokenExpiredException $e) {
    // Token expirou e não pode ser renovado — novo login necessário
    echo 'Token expirado: ' . $e->getMessage();

} catch (AuthenticationException $e) {
    // Falha genérica no fluxo de autenticação
    echo 'Erro de autenticação: ' . $e->getMessage();

} catch (HttpException $e) {
    // Falha na camada HTTP (timeout, erro 5xx, etc.)
    echo 'Erro HTTP ' . $e->getStatusCode() . ': ' . $e->getMessage();

} catch (AilosSdkException $e) {
    // Qualquer outro erro do SDK
    echo 'Erro no SDK: ' . $e->getMessage();
}

try {
    $sdk->callbackHandler()->handleFromArray($request->all());

} catch (AuthenticationException $e) {
    // Payload inválido ou campo 'code' ausente
    echo 'Erro no callback: ' . $e->getMessage();
}