Skip to main content
O SUOT ANTT SDK adota o mesmo padrão de resultado do SUOT Fiscal SDK: toda operação retorna um objeto Result tipado. O Result encapsula tanto o sucesso quanto a rejeição esperada do negócio — e lança InfrastructureException apenas para falhas técnicas que escapam do domínio regulatório. Essa separação é intencional: ela força o código consumidor a tratar explicitamente cada caso.

Estados possíveis do Result

Toda chamada a um handler pode resultar em um dos três estados abaixo:
EstadoMecanismoQuando ocorre
Sucesso$result->isSuccess() === trueA ANTT processou a operação e retornou dados válidos
Rejeição esperada$result->isSuccess() === falseA ANTT rejeitou a operação por regra de negócio (ex.: CIOT duplicado, RNTRC inativo)
Falha técnicaInfrastructureException lançadaErro de conectividade, timeout, autenticação ou resposta malformada

Inspecionando o Result

O padrão de inspeção é consistente em todas as operações do SDK:
<?php

use Suot\Antt\Core\Exception\InfrastructureException;

try {
    $result = $handler->operacao(command: $command);

    if ($result->isSuccess()) {
        // Sucesso: acesse os dados da operação
        $dados = $result->getData();

        // Use $dados conforme o tipo da operação
    } else {
        // Rejeição esperada: a ANTT recusou a operação por regra de negócio
        $rejeicao = $result->getRejection();

        echo 'Código de rejeição: ' . $rejeicao->codigo . PHP_EOL;
        echo 'Mensagem: ' . $rejeicao->mensagem . PHP_EOL;

        // Trate a rejeição conforme o seu fluxo de negócio
    }
} catch (InfrastructureException $e) {
    // Falha técnica: não tente reprocessar o Command imediatamente
    // Registre o erro, notifique o time de operações e aplique retry com backoff
    echo 'Falha técnica: ' . $e->getMessage() . PHP_EOL;
    echo 'Código: ' . $e->getCode() . PHP_EOL;
}

Dados no sucesso

O tipo retornado por $result->getData() varia conforme a operação executada:
OperaçãoDados disponíveis
Registrar CIOTnumeroCiot, registradoEm, situacao
Consultar CIOTnumeroCiot, registradoEm, situacao, dados completos da operação
Encerrar CIOTconfirmação de encerramento, encerradoEm
Consultar RNTRCnumeroRntrc, situacaoCadastral, validadeRegistro, categoria, nomeRazaoSocial, uf
Consulte a documentação de cada operação para os campos exatos disponíveis no objeto de dados:
  • CIOT — campos do Result de registro e consulta
  • RNTRC — campos do Result de consulta cadastral

Rejeições esperadas vs. falhas técnicas

A distinção entre rejeição esperada e falha técnica é central para o modelo de tratamento de erros do SDK:
  • Rejeição esperada — a ANTT processou a requisição e retornou uma negativa fundamentada em regra regulatória. O Result contém o código e a mensagem da rejeição. Não há exceção. A ação correta é corrigir os dados e reconstruir o Command.
  • Falha técnica — algo impediu que a operação chegasse à ANTT ou que a resposta fosse processada corretamente. O SDK lança InfrastructureException. A ação correta é registrar o erro, não reprocessar o Command imediatamente e aplicar uma política de retry com backoff.
Nunca faça retry automático de uma rejeição esperada. Se $result->isSuccess() retornar false, o problema está nos dados da operação — reenviar o mesmo Command sem corrigi-lo apenas duplicará a rejeição.
Consulte a página de Rejeições para exemplos detalhados de diagnóstico e tratamento de cada tipo de erro.