Quickstart
š ComeƧando RĆ”pidoā
Instalaçãoā
composer require nfse-nacional/nfse-php
Configuração BĆ”sicaā
Tudo começa com o NfseContext, onde você define o ambiente (Produção/Homologação) e o certificado digital.
use Nfse\Nfse;
use Nfse\Http\NfseContext;
use Nfse\Enums\TipoAmbiente;
// 1. Configure o contexto
$context = new NfseContext(
ambiente: TipoAmbiente::Homologacao,
certificatePath: '/path/to/certificate.pfx',
certificatePassword: 'minha-senha'
);
// 2. Instancie a faƧade principal
$nfse = new Nfse($context);
Escolha seu ServiƧoā
A biblioteca divide as funcionalidades em dois serviƧos principais:
Para Empresas (Prestadores)ā
Use o ContribuinteService para emitir notas, consultar DPS, e baixar documentos fiscais.
$contribuinte = $nfse->contribuinte();
// Exemplo: Emitir uma nota
$resultado = $contribuinte->emitir($dps);
Para Prefeituras (MunicĆpios)ā
Use o MunicipioService para baixar a arrecadação, consultar contribuintes no cadastro nacional e gerenciar parâmetros.
$municipio = $nfse->municipio();
// Exemplo: Baixar notas emitidas contra o municĆpio
$notas = $municipio->baixarDfe(nsu: 100);
Exemplo RĆ”pido: Emitindo uma Nota (DPS)ā
use Nfse\Dto\Nfse\DpsData;
use Nfse\Support\IdGenerator;
// 1. Gere o ID Ćŗnico
$id = IdGenerator::generateDpsId('CNPJ_TRESTADOR', 'COD_MUN', 'SERIE', 'NUMERO');
// 2. Crie o objeto DPS
$dps = new DpsData([
'@attributes' => ['versao' => '1.00'],
'infDPS' => [
'@attributes' => ['Id' => $id],
'tpAmb' => 2,
'dhEmi' => date('Y-m-d\TH:i:s'),
'verAplic' => 'App 1.0',
'serie' => '1',
'nDPS' => '1001',
'dCompet' => date('Y-m-d'),
'tpEmit' => 1,
'cLocEmi' => '3550308', // SĆ£o Paulo
'prest' => ['CNPJ' => '12345678000199'],
'toma' => [
'CPF' => '11122233344',
'xNome' => 'Tomador de Exemplo'
],
'serv' => [
'locPrest' => ['cLocPrestacao' => '3550308'],
'cServ' => [
'cTribNac' => '01.01',
'xDescServ' => 'Descrição do Serviço'
]
],
'valores' => [
'vServPrest' => [
'vReceb' => 100.00,
'vServ' => 100.00
],
'trib' => [
'tribMun' => [
'tribISSQN' => 1,
'tpRetISSQN' => 2, // Sem retenção
'pAliq' => 5.00
]
]
]
]
]);
// 3. Envie
try {
$nfseData = $contribuinte->emitir($dps);
echo "Sucesso! Nota emitida: " . $nfseData->infNfse->numeroNfse;
} catch (\Exception $e) {
echo "Erro: " . $e->getMessage();
}