承接 marcelabeh/emissor-nfse-nacional 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

NFSe Nacional

Packagist PHP Version PHPStan Tests License

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 ArchitectureSOLIDPSR-12PSR-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)NfseResponse
  • consultarPorChave(string)NfseResponse|null
  • consultarDpsPorChave(string)array
  • cancelar(EventoRequest)EventoResponse
  • consultarEventos(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

🔐 Dependências

👩‍💻 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 marcelabeh/emissor-nfse-nacional 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 71
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 13
  • 点击次数: 51
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 13
  • Watchers: 1
  • Forks: 46
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0-or-later
  • 更新时间: 2026-05-13