3 changed files with 82 additions and 9 deletions
-
23pynfe/processamento/comunicacao.py
-
30pynfe/utils/descompactar.py
-
38tests/consulta_distribuicao.txt
@ -0,0 +1,30 @@ |
|||
|
|||
""" |
|||
@author: Lucas Resende |
|||
|
|||
classe que descompacta o gzip recebido pela consulta distribuicao |
|||
|
|||
""" |
|||
|
|||
from io import BytesIO |
|||
import base64 |
|||
import gzip |
|||
from lxml import etree |
|||
|
|||
class DescompactaGzip(object): |
|||
@staticmethod |
|||
def descompacta(stringZipada): |
|||
""" |
|||
:paramn stringZipada: String |
|||
|
|||
:return : Etree |
|||
""" |
|||
arq = BytesIO() |
|||
arq.write(base64.b64decode(stringZipada)) |
|||
arq.seek(0) |
|||
zip = gzip.GzipFile(fileobj=arq) |
|||
texto = zip.read() |
|||
arq.close() |
|||
zip.close() |
|||
descompactado = texto.decode('utf-8') |
|||
return etree.fromstring(descompactado) |
|||
@ -0,0 +1,38 @@ |
|||
from pynfe.processamento.comunicacao import ComunicacaoSefaz |
|||
from pynfe.utils.descompactar import DescompactaGzip |
|||
from pynfe.utils.flags import NAMESPACE_NFE |
|||
from lxml import etree |
|||
|
|||
CNPJ = 'CPNJ_DA_EMPRESA' |
|||
CHAVE = 'CHAVE_DA_NOTA_DA_CONSULTA' |
|||
certificado = "/certs/cert.pfx" |
|||
senha = '1234' |
|||
uf = 'pi' |
|||
homologacao = False |
|||
con = ComunicacaoSefaz(uf, certificado, senha, homologacao) |
|||
xml = con.consulta_distribuicao(cnpj=CNPJ,chave=CHAVE) |
|||
#print('\n\n Retorno:') |
|||
#print(xml.text) |
|||
|
|||
print('Descompactado \n\n') |
|||
|
|||
# exemplo de leitura da resposta |
|||
ns = {'ns': NAMESPACE_NFE} |
|||
#esse retorno precisa ser melhorado |
|||
|
|||
resposta = etree.fromstring(xml.content) |
|||
|
|||
#desconpactando a mensagem |
|||
|
|||
zip_resposta = resposta.xpath('//ns:retDistDFeInt/ns:loteDistDFeInt/ns:docZip', namespaces=ns)[0].text |
|||
|
|||
des_resposta = DescompactaGzip.descompacta(zip_resposta) |
|||
|
|||
#recuperando valores do resultado da descompactacao |
|||
|
|||
chave = des_resposta.xpath('//ns:resNFe/ns:chNFe',namespaces=ns)[0].text |
|||
|
|||
valor = des_resposta.xpath('//ns:resNFe/ns:vNF',namespaces=ns)[0].text |
|||
|
|||
|
|||
print('chave:{}\nvalor:{}'.format(chave,valor)) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue