Browse Source

Metodo que gera qr code para NFC-e

pull/1/head
Junior Tada 11 years ago
parent
commit
6bac2e30e0
  1. 2
      pynfe/processamento/__init__.py
  2. 4
      pynfe/processamento/assinatura.py
  3. 36
      pynfe/processamento/danfe.py
  4. 2
      pynfe/utils/flags.py
  5. 81
      pynfe/utils/webservices.py

2
pynfe/processamento/__init__.py

@ -2,4 +2,4 @@ from .serializacao import SerializacaoXML
from .validacao import Validacao
from .assinatura import AssinaturaA1
from .comunicacao import ComunicacaoSefaz
from .danfe import DANFE
from .danfe import DanfeNfce

4
pynfe/processamento/assinatura.py

@ -1,10 +1,6 @@
# -*- coding: utf-8 -*-
import signxml
from OpenSSL import crypto
from pynfe.utils import etree
from pynfe.entidades.certificado import CertificadoA1
from pynfe.utils.flags import NAMESPACE_NFE, NAMESPACE_SIG
import subprocess

36
pynfe/processamento/danfe.py

@ -1,3 +1,37 @@
class DANFE(object):
# -*- coding: utf-8 -*-
import base64
import hashlib
from pynfe.utils.flags import VERSAO_QRCODE
from pynfe.utils.webservices import NFCE
class Danfe(object):
""" Classe abstrata para a geração do Danfe. """
pass
class DanfeNfce(Danfe):
""" Classe para geração de Danfe para Nota Fiscal de Consumidor Eletrônica (NFC-e). """
def gerar_qrcode(self, token, csc, xml, uf):
# Procura atributos no xml
nfe = xml[1][0][0][2]
chave = nfe[0].attrib['Id'].replace('NFe','')
data = nfe[0][0][7].text.encode()
tpamb = nfe[0][0][14].text
cpf = nfe[0][2][0].text
total = nfe[0][4][0][14].text
icms = nfe[0][4][0][1].text
digest = nfe[1][0][2][2].text.encode()
data = base64.b16encode(data).decode()
digest = base64.b16encode(digest).decode()
url = 'chNFe={}&nVersao={}&tpAmb={}&cDest={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format(
chave, VERSAO_QRCODE, tpamb, cpf, data.lower(), total, icms, digest.lower(), token)
url_hash = hashlib.sha1(url.encode()+csc.encode()).digest()
url_hash = base64.b16encode(url_hash).decode()
url = url + '&cHashQRCode=' + url_hash.upper()
return NFCE[uf.upper()]['QR'] + url

2
pynfe/utils/flags.py

@ -9,6 +9,8 @@ NAMESPACE_METODO = 'http://www.portalfiscal.inf.br/nfe/wsdl/'
VERSAO_PADRAO = '3.10'
VERSAO_QRCODE = '100'
TIPOS_DOCUMENTO = (
'CNPJ',
'CPF',

81
pynfe/utils/webservices.py

@ -11,7 +11,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'AC': {
'STATUS': '',
@ -19,7 +20,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://www.sefaznet.ac.gov.br/nfe/NFe.jsp?opc=3'
},
'AM': {
'STATUS': '',
@ -27,7 +29,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp?'
},
'RR': {
'STATUS': '',
@ -35,7 +38,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'PA': {
'STATUS': '',
@ -43,7 +47,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'AP': {
'STATUS': '',
@ -51,7 +56,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'TO': {
'STATUS': '',
@ -59,7 +65,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'MA': {
'STATUS': '',
@ -67,7 +74,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://www.nfce.sefaz.ma.gov.br/portal/consultarNFCe.jsp'
},
'PI': {
'STATUS': '',
@ -75,7 +83,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'CE': {
'STATUS': '',
@ -83,7 +92,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'RN': {
'STATUS': '',
@ -91,7 +101,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://www.nfe.rn.gov.br/portal/consultarNFCe.jsp?'
},
'PB': {
'STATUS': '',
@ -99,7 +110,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'PE': {
'STATUS': '',
@ -107,7 +119,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'AL': {
'STATUS': '',
@ -115,7 +128,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'SE': {
'STATUS': '',
@ -123,7 +137,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://www.nfe.se.gov.br/portal/consultarNFCe.jsp?'
},
'BA': {
'STATUS': '',
@ -131,7 +146,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'MG': {
'STATUS': '',
@ -139,7 +155,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'ES': {
'STATUS': '',
@ -147,7 +164,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'RJ': {
'STATUS': '',
@ -155,7 +173,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'SP': {
'STATUS': 'nfce.fazenda.sp.gov.br/ws/nfestatusservico2.asmx',
@ -163,7 +182,8 @@ NFCE = {
'RECIBO': 'nfce.fazenda.sp.gov.br/ws/nferetautorizacao.asmx',
'CHAVE': 'nfce.fazenda.sp.gov.br/ws/nfeconsulta2.asmx',
'INUTILIZACAO': 'nfce.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx',
'EVENTOS': 'nfce.fazenda.sp.gov.br/ws/recepcaoevento.asmx'
'EVENTOS': 'nfce.fazenda.sp.gov.br/ws/recepcaoevento.asmx',
'QR': 'nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx'
},
'PR': {
'STATUS': 'nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3',
@ -171,7 +191,8 @@ NFCE = {
'RECIBO': 'nfce.fazenda.pr.gov.br/nfce/NFeRetAutorizacao3',
'CHAVE': 'nfce.fazenda.pr.gov.br/nfce/NFeConsulta3',
'INUTILIZACAO': 'nfce.fazenda.pr.gov.br/nfce/NFeInutilizacao3',
'EVENTOS': 'nfce.fazenda.pr.gov.br/nfce/NFeRecepcaoEvento'
'EVENTOS': 'nfce.fazenda.pr.gov.br/nfce/NFeRecepcaoEvento',
'QR': ' http://www.dfeportal.fazenda.pr.gov.br/dfe-portal/rest/servico/consultaNFCe?'
},
'SC': {
'STATUS': '',
@ -179,7 +200,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'RS': {
'STATUS': 'sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx',
@ -187,7 +209,8 @@ NFCE = {
'RECIBO': 'sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx',
'CHAVE': 'sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx',
'INUTILIZACAO': 'sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx',
'EVENTOS': 'sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx'
'EVENTOS': 'sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx',
'QR': 'https://www.sefaz.rs.gov.br/NFCE/NFCE-COM.aspx'
},
'MS': {
'STATUS': '',
@ -195,7 +218,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'MT': {
'STATUS': '',
@ -203,7 +227,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': 'http://www.sefaz.mt.gov.br/nfe/portal/consultanfce'
},
'GO': {
'STATUS': '',
@ -211,7 +236,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
'DF': {
'STATUS': '',
@ -219,7 +245,8 @@ NFCE = {
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
'EVENTOS': '',
'QR': ''
},
}

Loading…
Cancel
Save