Documentação PyNFE!¶
Contents:
Visão Geral¶
Biblioteca de interface com o webservice de Nota Fiscal Eletronica, (NF-e/NFC-e) da SEFAZ, oficializada pelo Ministerio da Fazendo do Governo do Brasil. Desenvolvido e testado com Python 3 no GNU/Linux.
A NF-e visa substituir as notas fiscais séries 1 e 1A. A NFC-e visa substituir as notas fiscais modelo 2 e cupom fiscal emitido por ECF.
Dependências¶
- Java 8u51 - para a geração da DANFE
- lxml - biblioteca de leitura e gravação de arquivos XML, de alta performance e fácil de implementar.
- xmlsec1 e openssl - assinatura e validação do XML
- requests - biblioteca para a comunicação com os webservices da SEFAZ
Referências¶
Site oficial da Nota Fiscal eletrônica - http://www.nfe.fazenda.gov.br/portal/
lxml - http://lxml.de/
- Tutorial de lxml
requests - http://docs.python-requests.org/en/latest/ - https://github.com/kennethreitz/requests - https://pypi.python.org/pypi/requests
Exemplos de arquivos XML - http://www.javac.com.br/jc/downloads.javac?cat=3
Schemas para validação dos arquivos - http://www.nfe.fazenda.gov.br/portal/schemas.aspx
- Validao de XML via XSD no lxml
- Lista de codigos para campo EX TIPI
- Certificado para testes
Instalação:
sudo pip3 install https://github.com/leotada/PyNFe/archive/master.zip
Exemplos de uso¶
Consulta Status:
from pynfe.processamento.comunicacao import ComunicacaoSefaz
certificado = "/home/user/certificado.pfx"
senha = 'senha'
uf = 'pr'
homologacao = True
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
xml = con.status_servico('nfe')
print (xml.text)
Consulta Notas Emitidas para um CNPJ (apenas NF-e e no RS):
from pynfe.processamento.comunicacao import ComunicacaoSefaz
certificado = "/home/user/certificado.pfx"
senha = 'senha'
uf = 'rs'
homologacao = True
con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
# informar cnpj que deseja consultar (String) e nsu (inteiro) (por default se não informar nsu ele assumirá o valor 0, retornando as dos últimos 15 dias)
xml = con.consulta_notas_cnpj(cnpj='cnpj_somente_numeros', nsu=0)
print (xml.text)