Expand description
§dfe
Crate Rust para integração com os webservices da SEFAZ brasileira. Emite, cancela e distribui NF-e e NFC-e; gera DANFE em PDF e imprime via ESC/POS.
§Início rápido
[dependencies]
dfe = "0.5.7"§Funcionalidades
| Módulo | Responsabilidade |
|---|---|
emissao | Emissão de NF-e e NFC-e via NFeBuilder |
cancelar | Cancelamento via CancelarBuilder |
substituicao | Cancelamento por substituição de NFC-e (110112) via SubstituicaoBuilder |
carta_correcao | Carta de Correção Eletrônica (110110) via CartaCorrecaoBuilder |
danfe | Geração de DANFE em PDF via DanfeBuilder |
escpos | Impressão ESC/POS via EscPosBuilder e EscPosNFCeBuilder |
distribuicao | Distribuição de DF-e (Ambiente Nacional) |
status | Status do webservice SEFAZ (NF-e 55 / NFC-e 65) via NFeService |
manifestacao | Manifestação do destinatário |
xml_extractor | Extração de campos de XML autorizado |
tipos | Structs e enums de domínio (Icms, Det, Ide, …) |
§Exemplo — Emissão de NF-e
use dfe::{NFeBuilder, DfeError};
use dfe::tipos::{Det, Emit, Icms, Ide, Pag, Pis, Cofins, Total, Transp};
let resp = NFeBuilder::new()
.cert("./cert.pfx", "senha")
.ide(Ide { c_uf: 35, mod_: 55, serie: 1, n_nf: 1, tp_amb: 2, ..Default::default() })
.emitente(Emit { cnpj: Some("11111111111111".into()), ..Default::default() })
.itens(vec![Det {
c_prod: "001".into(), x_prod: "PRODUTO".into(), ncm: "22030000".into(),
cfop: 5102, q_com: 1.0, v_un_com: 10.0, v_prod: 10.0,
icms: Icms::sn102(0, "400"),
pis: Pis::Nt { cst: "07".into() },
cofins: Cofins::Nt { cst: "07".into() },
..Default::default()
}])
.total(Total::default())
.transporte(Transp::default())
.pagamento(Pag::default())
.emitir()
.await?;
println!("cStat: {}", resp.protocolo.inf_prot.c_stat);§Tratamento de erros
Todas as funções públicas retornam Result<T, DfeError>.
use dfe::DfeError;
match result {
Ok(_) => {}
Err(DfeError::Certificado(m)) => eprintln!("Problema no .pfx: {m}"),
Err(DfeError::Validacao(m)) => eprintln!("Dado inválido: {m}"),
Err(DfeError::Webservice(m)) => eprintln!("Falha SEFAZ: {m}"),
Err(e) => eprintln!("Erro: {e}"),
}Re-exports§
pub use cancelar::CancelarBuilder;pub use consulta_situacao::ConsultaSituacaoBuilder;pub use danfe::DanfeBuilder;pub use escpos::EscPosBuilder;pub use escpos::EscPosNFCeBuilder;pub use escpos::EscPosDanfeNFeBuilder;pub use manifestacao::ManifestacaoBuilder;pub use substituicao::SubstituicaoBuilder;pub use carta_correcao::CartaCorrecaoBuilder;pub use emissao::NFeBuilder;pub use inutilizacao::InutilizacaoBuilder;pub use emissao::NFeAssinada;pub use emissao::Response as EmissaoResponse;pub use emissao::transmitir_xml_assinado;pub use error::DfeError;pub use status::NFeService;pub use status::NFeServiceResponse;pub use xml_extractor::XmlExtractor;pub use xml_extractor::XmlExtractorSignature;
Modules§
- cancelar
- carta_
correcao - Carta de Correção Eletrônica (CC-e) — evento tpEvento 110110 (MOC /
CCe_v1.00.xsd). - consulta_
situacao - Consulta de situação da NF-e/NFC-e —
consSitNFe(NfeConsultaProtocolo4). - danfe
- distribuicao
- emissao
- error
- escpos
- inutilizacao
- Inutilização de faixa de numeração (
inutNFe, serviçoNFeInutilizacao4). - manifestacao
- Manifestação do destinatário — evento de NF-e processado pelo Ambiente Nacional.
- status
- Status do webservice SEFAZ (
consStatServ,NFeStatusServico4). - substituicao
- Cancelamento por substituição de NFC-e — evento tpEvento 110112 (NT 2018.004).
- tipos
- xml_
extractor
Structs§
- Cert
Info - Metadados legíveis de um certificado digital A1 (PKCS#12 /
.pfx).
Functions§
- format_
cnpj - Aplica a máscara
00.000.000/0000-00a um CNPJ numérico ou alfanumérico. - is_
xml_ valid - sanitize_
cnpj - Remove a formatação de um CNPJ/CPF (pontos, barra, traço, espaços), preservando letras e normalizando para maiúsculas.
- validate_
cnpj - Valida o dígito verificador de um CNPJ, numérico ou alfanumérico.
- validate_
cpf - Valida o dígito verificador de um CPF.