osvaldovictor / validate-docs-ao
Biblioteca PHP para validação de documentos pessoais angolanos, como Número de Identificação Fiscal (NIF), Bilhete de Identidade (BI) e outros. Ele é uma versão do Nifvalidation que uma lib js
Requires
- php: ^8.1
- ext-curl: *
- ext-dom: *
- ext-libxml: *
README
Biblioteca em PHP para consulta de dados de NIF de contribuintes em Angola,
reproduzindo a arquitetura da lib JavaScript nifvalidation.
Esta biblioteca automatiza uma consulta pública do portal do contribuinte. O uso é de sua responsabilidade; respeite os termos de uso do serviço e a legislação aplicável.
Instalação
composer require osvaldovictor/validate-docs-ao
Requisitos
- PHP 8.1 ou superior
- Extensões
curl,domelibxml - Acesso à internet
Uso básico
<?php require __DIR__ . '/vendor/autoload.php'; use function Osvaldovictor\ValidateDocsAo\getNifData; $data = getNifData('0000000000000'); echo $data->nif . PHP_EOL; echo $data->name . PHP_EOL; echo $data->type . PHP_EOL; echo $data->state . PHP_EOL; echo $data->vatRegime . PHP_EOL; echo $data->residenciaFiscal . PHP_EOL;
API
getNifData(string $nif, array $options = []): NifEntity
Função de alto nível para consultar os dados de um NIF/BI.
Opções suportadas:
browserAdapter: adaptador de sessão HTTP customizadoprovider: provedor customizado que implementeINifProviderretries: quantidade de tentativas extras em falhas temporáriastimeoutMs: timeout da requisição inicialresultTimeoutMs: timeout da requisição de resultadoenableCache: ativa cache em memória por NIFcacheTtlMs: TTL do cache em milissegundosdebug: ativa logs internoslogger: array com callbacksdebug,warneerrorverifySsl: controla a verificação SSL do adaptador cURL padrãocaFile: caminho explícito para um arquivo CA bundle PEMcaPath: diretório de certificados para o cURLuserAgent: user-agent usado pelo adaptador cURL padrão
NifService
Serviço responsável por:
- Validar a entrada
- Controlar retries com backoff simples
- Fazer cache opcional em memória
- Delegar a consulta ao provider
- Validar os dados extraídos antes de retornar
NifEntity
PortalContribuinteProvider
Provider padrão do portal do contribuinte. Ele simula a chamada AJAX JSF usada pela página pública de consulta de NIF.
Testes
composer test
Teste de integração real, opcional:
$env:VALIDATE_DOCS_AO_TEST_NIF="007532143HA045" composer test:integration
Se o seu PHP/cURL no Windows falhar por cadeia de certificados, prefira apontar um bundle atualizado em vez de desativar SSL:
$data = getNifData('007639171HA042', [ 'caFile' => 'C:/caminho/para/cacert.pem', ]);
Use verifySsl => false apenas para depuração local.
SSL no Windows
Se ocorrer erro como SSL certificate problem: unable to get local issuer certificate:
- Baixe um
cacert.pematualizado. - Configure
curl.cainfoe, opcionalmente,openssl.cafilenophp.ini. - Ou informe
caFilediretamente nas opções da função.
No ambiente atual, o PHP estava com curl.cainfo configurado, então o problema
provável era bundle desatualizado.