nfse-nacional/nfse-php
Composer 安装命令:
composer require nfse-nacional/nfse-php
包简介
This is my package nfse
关键字:
README 文档
README
Versão estável aberta para sugestões e melhorias
Discussão: modelo arquitetural estável
A bibiloteca se mostrou bastante útil no dia a dia, mas nem tudo que parece “útil” é realmente bom de verdade. Com o tempo, a gente consegue enxergar com mais clareza o ruído gerado por determinadas interfaces e abstrações.
A experiência real de utilização permitiu identificar pontos da arquitetura que podem ser refinados e simplificados, principalmente nas responsabilidades, interfaces e abstrações entre objetos e classes.
Algumas ideias presentes no modelo atual foram úteis durante a evolução do projeto, mas certas decisões arquiteturais acabaram adicionando complexidade e ruído desnecessários em alguns cenários de uso. Esse processo de amadurecimento faz parte da evolução natural do SDK.
A próxima versão será uma oportunidade para consolidar uma arquitetura mais simples, previsível e sustentável no longo prazo, além de tornar a construção de uma versão estável algo mais aberto, democrático e colaborativo com a comunidade.
A ideia é evoluir o projeto sem perder o foco principal: oferecer uma das maneiras mais modernas e eficientes de integrar aplicações PHP com a NFS-e Nacional.
Conto com a ajuda e sugestões de todos para construirmos uma versão estável sólida e sustentável no longo prazo.
📦 Instalação
composer require nfse-nacional/nfse-php
🛠️ Uso dos Serviços
O pacote expõe dois serviços principais através da NfseContext: ContribuinteService (para emissores) e MunicipioService (para prefeituras).
Configuração Inicial
use Nfse\Nfse; use Nfse\Http\NfseContext; use Nfse\Enums\TipoAmbiente; $context = new NfseContext( ambiente: TipoAmbiente::Homologacao, certificatePath: '/path/to/certificate.pfx', certificatePassword: 'password' ); $nfse = new Nfse($context);
🏢 ContribuinteService
Focado nas necessidades de empresas que emitem notas.
$service = $nfse->contribuinte(); // Principais Métodos: // 1. Emitir NFS-e $nfseData = $service->emitir($dps); // Retorna NfseData // 2. Consultar NFS-e $nfseData = $service->consultar('CHAVE_ACESSO'); // 3. Baixar Documentos (Notas recebidas/emitidas) $docs = $service->baixarDfe(nsu: 100); // 4. Outros métodos úteis $service->consultarDps('ID_DPS'); $service->downloadDanfse('CHAVE_ACESSO'); // Retorna PDF binário $service->registrarEvento('CHAVE_ACESSO', $xmlEvento); // Ex: Cancelamento $service->consultarParametrosConvenio('CODIGO_MUNICIPIO');
🏛️ MunicipioService
Focado nas necessidades de prefeituras e órgãos gestores.
$service = $nfse->municipio(); // Principais Métodos: // 1. Baixar Arrecadação e Notas $docs = $service->baixarDfe(nsu: 100, tipoNSU: 'GERAL'); // 2. Consulta Cadastral (CNC) $dados = $service->consultarContribuinte('CPF_CNPJ'); // 3. Parâmetros e Configurações $params = $service->consultarParametrosConvenio('CODIGO_MUNICIPIO'); $aliquotas = $service->consultarAliquota('COD_MUN', 'COD_SERV', 'COMPETENCIA');
📝 Exemplo de DPS (Declaração de Prestação de Serviço)
Abaixo, um exemplo completo de como montar o objeto DPS para emissão.
use Nfse\Dto\Nfse\DpsData; use Nfse\Support\IdGenerator; // Gerar ID único para a DPS $idDps = IdGenerator::generateDpsId('12345678000199', '3550308', '1', '1001'); $dps = new DpsData([ '@attributes' => ['versao' => '1.00'], 'infDPS' => [ '@attributes' => ['Id' => $idDps], 'tpAmb' => 2, // 1-Produção, 2-Homologação 'dhEmi' => date('Y-m-d\TH:i:s'), 'verAplic' => '1.0.0', 'serie' => '1', 'nDPS' => '1001', 'dCompet' => date('Y-m-d'), 'tpEmit' => 1, // 1-Prestador 'cLocEmi' => '3550308', // Código IBGE Município 'prest' => [ 'CNPJ' => '12345678000199' ], 'toma' => [ 'CPF' => '11122233344', 'xNome' => 'Cliente Exemplo' ], 'serv' => [ 'locPrest' => [ 'cLocPrestacao' => '3550308' ], 'cServ' => [ 'cTribNac' => '01.01', // Código Tributação Nacional 'xDescServ' => 'Desenvolvimento de Software' ] ], 'valores' => [ 'vServPrest' => [ 'vReceb' => 1000.00, 'vServ' => 1000.00 ], 'trib' => [ 'tribMun' => [ 'tribISSQN' => 1, // 1-Tributável 'tpRetISSQN' => 2, // 1-Retido, 2-Não Retido 'pAliq' => 5.00 ] ] ] ] ]); // Emitir $nfse->contribuinte()->emitir($dps);
🌍 Municípios Atendidos
A biblioteca é compatível com todos os municípios que aderiram ao padrão nacional da NFS-e. Você pode consultar a lista atualizada de municípios conveniados através dos links oficiais:
🚀 Municípios Testados (Mesmo Contrato API)
Alguns municípios utilizam servidores próprios, mas seguem rigorosamente o contrato da API Nacional (DPS). Então resolvemos corretamente os endpoints no pacote. Abaixo temos uma lista de municipios que foram testados nesse contexto.
| Município | UF | Status | Observação |
|---|---|---|---|
| Catanduva | SP | ✅ Testado | Utiliza infraestrutura própria (RLZ) seguindo contrato nacional. |
Exemplo com Endpoint Customizado:
O pacote também permite que você informe endpoints próprios caso você queira usar um servidor diferente.
use Nfse\Http\NfseContext; use Nfse\Dto\Http\Endpoint; use Nfse\Enums\TipoAmbiente; $context = new NfseContext( ambiente: TipoAmbiente::Producao, certificatePath: '/path/to/cert.pfx', certificatePassword: 'password', endpoint: new Endpoint([ 'production' => 'https://164.152.60.237/nota/nacional', 'homologation' => 'https://catanduva.prefeitura.rlz.com.br/nota/nacional', ]) );
Ou enviar o código do município homologado pela nfse-nacional/nfse-php através do parâmetro correspondente
use Nfse\Http\NfseContext; use Nfse\Dto\Http\Endpoint; use Nfse\Enums\TipoAmbiente; $context = new NfseContext( ambiente: TipoAmbiente::Producao, certificatePath: '/path/to/cert.pfx', certificatePassword: 'password', codigoMunicipio: '3511102' // Catanduva/SP );
Endpoints por Município
Alguns municípios utilizam endpoints próprios mesmo seguindo o padrão nacional da NFS-e. Consulte a lista completa no arquivo:
📚 Documentação Completa
Para detalhes profundos sobre cada DTO e configurações avançadas, visite nossa Documentação Oficial.
License
The MIT License (MIT). Please see License File for more information.
nfse-nacional/nfse-php 适用场景与选型建议
nfse-nacional/nfse-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.78k 次下载、GitHub Stars 达 149, 最近一次更新时间为 2025 年 12 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nfse」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 nfse-nacional/nfse-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nfse-nacional/nfse-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 nfse-nacional/nfse-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Pacote para utilização do Plugnotas em PHP
Biblioteca para geração de NFSE de Belo Horizonte
API para geração e comunicação da NFSe com as Prefeituras. Este é um fork do projeto nfephp-org/sped-nfse que foi descontinuado
API para geração e comunicação de RPS e NFSe no padão E-Governe.
Pacote para geração de NFSe Coplan usando componentes NFePHP (https://github.com/nfephp-org)
Pacote para geração de NFSe ISSNET usando componentes NFePHP (https://github.com/nfephp-org)
统计信息
- 总下载量: 4.78k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 149
- 点击次数: 25
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-30