marcelabeh/emissor-nfse-nacional
Composer 安装命令:
composer require marcelabeh/emissor-nfse-nacional
包简介
Biblioteca PHP para emissão, consulta e cancelamento de NFS-e Nacional (Sefin) — Clean Architecture, validação XSD v1.01, assinatura SHA-256, suporte IBS/CBS
README 文档
README
Biblioteca PHP para integração com NFSe Nacional - Pacote Composer reutilizável para emissão, consulta e cancelamento de Notas Fiscais de Serviço Eletrônicas no padrão nacional.
Clean Architecture • SOLID • PSR-12 • PSR-3 (logging) • PHP 8.3+ • PHPStan Level 8
📦 Instalação
composer require marcelabeh/emissor-nfse-nacional
🚀 Uso Rápido
use MarcelaBeh\EmissorNfseNacional\Presentation\Facade\NfseNacionalFacade; use MarcelaBeh\EmissorNfseNacional\Presentation\Factory\ConfigFactory; use NFePHP\Common\Certificate; // 1. Carregar certificado $certificado = Certificate::readPfx(file_get_contents($caminhoCertificado), $senha); // 2. Criar configuração $config = ConfigFactory::createHomologacao('codigo-ibge-municipio'); // 3. Criar facade (aceita Configuration|array — sem cast) $nfse = NfseNacionalFacade::create($config, $certificado); // 4. Emitir DPS $response = $nfse->emitirDps($dpsRequest);
📚 Documentação
| Documento | Descrição |
|---|---|
| GUIA_IMPLEMENTACAO.md | Guia completo de uso com exemplos |
| ARQUITETURA.md | Arquitetura do sistema e decisões de design |
| SEGURANCA_COMPLIANCE.md | Diretrizes de segurança |
| CONTRIBUTING.md | Como contribuir |
| CHANGELOG.md | Histórico de alterações |
| examples/ | Exemplos práticos de uso |
✅ Requisitos
- PHP 8.3+
- ext-dom, ext-curl, ext-zlib, ext-openssl, ext-mbstring
🔧 Qualidade de Código
composer test # PHPUnit composer cs # PHP-CS-Fixer (dry-run) composer cs:fix # PHP-CS-Fixer (aplicar) composer stan # PHPStan nível 8 composer check # Tudo junto
Métricas:
- ✅ Suíte completa de testes unitários e de integração
- ✅ PHPStan nível 8 (máximo rigor) - 0 erros
- ✅ Clean Architecture com SOLID
- ✅ PSR-12 (estilo) e PSR-3 (logging)
- ✅ Conformidade com os schemas NFSe Nacional v1.00 e v1.01
📁 Estrutura
src/
├── Domain/ # Entidades e Value Objects
├── Application/ # Services e DTOs
├── Infrastructure/ # HTTP, XML, Segurança
└── Presentation/ # Facade e Factories
🏛️ Padrões Aplicados
| Padrão | Onde |
|---|---|
| Clean Architecture | Separação em camadas (Domain → Application → Infrastructure → Presentation) |
| Facade | NfseNacionalFacade - ponto único de entrada |
| Factory | ServiceFactory, ConfigFactory - criação de dependências |
| DTO | DpsRequest, NfseResponse, EventoRequest - transporte de dados |
| Value Object | Cnpj, Cpf, Money, ChaveAcesso - imutáveis e auto-validáveis |
| Validator | DpsValidator, XsdValidator - validação de entrada e XML |
🔄 Fluxo de Uso
1. Carregar certificado → Certificate::readPfx()
2. Criar configuração → ConfigFactory::createHomologacao() ou createProducao()
3. Instanciar facade → NfseNacionalFacade::create()
4. Montar request → DpsRequest / EventoRequest
5. Executar operação → facade->emitirDps() / consultarPorChave() / cancelar()
📄 API Principal
NfseNacionalFacade - Ponto único de entrada:
emitirDps(DpsRequest)→NfseResponseconsultarPorChave(string)→NfseResponse|nullconsultarDpsPorChave(string)→arraycancelar(EventoRequest)→EventoResponseconsultarEventos(string)→array
⚠️ Avisos Importantes
Configuração do Município
A variável prefeitura deve receber o código IBGE do município (7 dígitos), conforme especificação dos XSDs da NFSe (ABRASF).
Encoding XML
O XML pode vir em ISO-8859-1. Use o segundo parâmetro se necessário:
$nfse->consultarPorChave('CHAVE', false);
🐛 Erros da SEFIN
Quando a emissão/evento é rejeitado, a SEFIN retorna os erros estruturados. A resposta os expõe:
$response->mensagem; // primeiro erro, ex.: "E0617 - Não é permitido informar alíquota..." $response->erros; // lista completa: [['codigo' => 'E0617', 'descricao' => '...'], ...] $response->dados; // payload cru da SEFIN
Os códigos (E0617, E1860, ...) e suas descrições vêm da própria SEFIN. Causas comuns de rejeição:
- CNPJ/CPF do prestador não habilitado na NFS-e Nacional
- Dados fiscais inconsistentes com o município/regime
- Indisponibilidade do ambiente de homologação
🤝 Créditos e Agradecimentos
Este projeto é uma reestruturação completa com Clean Architecture do projeto original.
📦 Projeto Original
- Repositório: hadder/nfse-nacional
- Autor: Fernando Friedrich (@fernando-friedrich)
- Contribuição: Base inicial e compreensão das regras de negócio NFSe Nacional
🔐 Dependências
- NFePHP/sped-common - Manipulação de certificados digitais A1/A3 e assinatura XML
- Projeto mantido pela comunidade brasileira desde 2008
- github.com/nfephp-org/sped-common
- Criado por Roberto L. Machado (@robmachado)
👩💻 Manutenção Atual
- Marcela Beatriz (@marcelabeh)
- Arquitetura: Clean Architecture + SOLID + DDD
- Análise estática: PHPStan level 8
📜 Licença
LGPL-3.0-or-later (GNU Lesser General Public License v3.0 ou posterior)
Veja o arquivo LICENSE para detalhes completos.
💼 O que isso significa?
✅ Você PODE:
- Usar comercialmente (grátis)
- Modificar o código
- Distribuir em projetos proprietários
- Vender produtos que usam esta biblioteca
⚠️ Você DEVE:
- Manter o copyright original
- Se modificar A BIBLIOTECA, compartilhar as mudanças (LGPL)
- Incluir uma cópia da licença LGPL
marcelabeh/emissor-nfse-nacional 适用场景与选型建议
marcelabeh/emissor-nfse-nacional 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 71 次下载、GitHub Stars 达 13, 最近一次更新时间为 2026 年 05 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「nfephp」 「dps」 「brasil」 「nfse」 「fiscal」 「ibs」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 marcelabeh/emissor-nfse-nacional 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 marcelabeh/emissor-nfse-nacional 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 marcelabeh/emissor-nfse-nacional 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Symfony2 integration with Omnipay - multi-gateway, payment processing library.
Payment Express (DPS) A2A (Account 2 Account) driver for the Omnipay payment processing library
PHP extension with Brazilian states and formats for CPF, CNPJ and ZIP
SilverStripe payment provider integration. Currently supported: DPS, Eway, Paypal, Paystation, Worldpay
Transforme NFe(xml) em objetos PHP (e vice-versa)
SilverStripe Payment Express Module
统计信息
- 总下载量: 71
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 51
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: LGPL-3.0-or-later
- 更新时间: 2026-05-13
