Browse Source

webservides para Paraná e Sao Paulo

pull/1/head
Junior Tada 11 years ago
parent
commit
103cdb923c
  1. 20
      pynfe/processamento/comunicacao.py
  2. 2
      pynfe/utils/flags.py
  3. 467
      pynfe/utils/webservices.py
  4. 2
      pynfe/utils/webservices_nfce.py
  5. 8
      test.py

20
pynfe/processamento/comunicacao.py

@ -3,13 +3,14 @@ import datetime
import requests import requests
from pynfe.utils import etree, so_numeros from pynfe.utils import etree, so_numeros
from pynfe.utils.flags import NAMESPACE_NFE, NAMESPACE_SOAP, VERSAO_PADRAO, CODIGOS_ESTADOS from pynfe.utils.flags import NAMESPACE_NFE, NAMESPACE_SOAP, VERSAO_PADRAO, CODIGOS_ESTADOS
from pynfe.utils.webservices import NFCE, NFE
from .assinatura import AssinaturaA1 from .assinatura import AssinaturaA1
class Comunicacao(object): class Comunicacao(object):
u"""Classe abstrata responsavel por definir os metodos e logica das classes u"""Classe abstrata responsavel por definir os metodos e logica das classes
de comunicação com os webservices da NF-e.""" de comunicação com os webservices da NF-e."""
_ambiente = 2 # 1 = Produção, 2 = Homologação
_ambiente = 1 # 1 = Produção, 2 = Homologação
uf = None uf = None
certificado = None certificado = None
certificado_senha = None certificado_senha = None
@ -26,7 +27,7 @@ class ComunicacaoSefaz(Comunicacao):
_versao = VERSAO_PADRAO _versao = VERSAO_PADRAO
_assinatura = AssinaturaA1 _assinatura = AssinaturaA1
def transmitir(self, nota_fiscal):
def autorizacao(self, nota_fiscal):
pass pass
def cancelar(self, nota_fiscal): def cancelar(self, nota_fiscal):
@ -37,16 +38,22 @@ class ComunicacaoSefaz(Comunicacao):
def status_servico(self, tipo): def status_servico(self, tipo):
""" Verifica status do servidor da receita. """ """ Verifica status do servidor da receita. """
""" tipo é a string com tipo de serviço que deseja consultar
Ex: nfe ou nfce
"""
if self._ambiente == 1: if self._ambiente == 1:
ambiente = 'https://' ambiente = 'https://'
else: else:
ambiente = 'https://homologacao.' ambiente = 'https://homologacao.'
if tipo == 'nfe': if tipo == 'nfe':
# nfe
url = ambiente + 'nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3'
# nfe Ex: https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3
url = ambiente + NFE[self.uf.upper()]['STATUS']
elif tipo == 'nfce':
# nfce Ex: https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3
url = ambiente + NFCE[self.uf.upper()]['STATUS']
else: else:
# nfce
url = ambiente + 'nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3'
# TODO implementar outros tipos de notas como NFS-e
pass
# Monta XML do corpo da requisição # Monta XML do corpo da requisição
raiz = etree.Element('consStatServ', versao='3.10', xmlns=NAMESPACE_NFE) raiz = etree.Element('consStatServ', versao='3.10', xmlns=NAMESPACE_NFE)
@ -59,7 +66,6 @@ class ComunicacaoSefaz(Comunicacao):
# Chama método que efetua a requisição POST no servidor SOAP # Chama método que efetua a requisição POST no servidor SOAP
return self._post(url, xml, self._post_header()) return self._post(url, xml, self._post_header())
#return bool(retorno)
def consultar_cadastro(self, instancia): def consultar_cadastro(self, instancia):
#post = '/nfeweb/services/cadconsultacadastro.asmx' #post = '/nfeweb/services/cadconsultacadastro.asmx'

2
pynfe/utils/flags.py

@ -196,5 +196,3 @@ CODIGOS_ESTADOS = {
'GO': '52', 'GO': '52',
'DF': '53', 'DF': '53',
} }

467
pynfe/utils/webservices.py

@ -0,0 +1,467 @@
# Nfc-e
NFCE = {
'RO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'AC': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'AM': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'RR': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'PA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'AP': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'TO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'MA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'PI': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'CE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'RN': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'PB': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'PE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'AL': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'SE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'BA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'MG': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'ES': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'RJ': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'SP': {
'STATUS': 'nfce.fazenda.sp.gov.br/ws/nfestatusservico2.asmx',
'AUTORIZACAO': 'nfce.fazenda.sp.gov.br/ws/nfeautorizacao.asmx',
'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'
},
'PR': {
'STATUS': 'nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3',
'AUTORIZACAO': 'nfce.fazenda.pr.gov.br/nfce/NFeAutorizacao3',
'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'
},
'SC': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'RS': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'MS': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'MT': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'GO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
'DF': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': ''
},
}
# Nfe
NFE = {
'RO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'AC': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'AM': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'RR': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'PA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'AP': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'TO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'MA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'PI': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'CE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'RN': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'PB': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'PE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'AL': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'SE': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'BA': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'MG': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'ES': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'RJ': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'SP': {
'STATUS': 'nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx',
'AUTORIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx',
'RECIBO': 'nfe.fazenda.sp.gov.br/ws/nferetautorizacao.asmx',
'CHAVE': 'nfe.fazenda.sp.gov.br/ws/nfeconsulta2.asmx',
'INUTILIZACAO': 'nfe.fazenda.sp.gov.br/ws/nfeinutilizacao2.asmx',
'EVENTOS': 'nfe.fazenda.sp.gov.br/ws/nfestatusservico2.asmx',
'CADASTRO': 'nfe.fazenda.sp.gov.br/ws/cadconsultacadastro2.asmx'
},
'PR': {
'STATUS': 'nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3', # CONSULTA STATUS DO SERVIÇO
'AUTORIZACAO': 'nfe.fazenda.pr.gov.br/nfe/NFeAutorizacao3', # AUTORIZACAO
'RECIBO': 'nfe.fazenda.pr.gov.br/nfe/NFeRetAutorizacao3', # CONSULTA RECIBO
'CHAVE': 'nfe.fazenda.pr.gov.br/nfe/NFeConsulta3', # CONSULTA CHAVE DE ACESSO
'INUTILIZACAO': 'nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3', # INUTILIZAÇAO
'EVENTOS': 'nfe.fazenda.pr.gov.br/nfe/NFeRecepcaoEvento', # REGISTRO DE EVENTOS
'CADASTRO': 'nfe.fazenda.pr.gov.br/nfe/CadConsultaCadastro2' # CONSULTA CADASTRO
},
'SC': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'RS': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'MS': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'MT': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'GO': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
'DF': {
'STATUS': '',
'AUTORIZACAO': '',
'RECIBO': '',
'CHAVE': '',
'INUTILIZACAO': '',
'EVENTOS': '',
'CADASTRO': ''
},
}

2
pynfe/utils/webservices_nfce.py

@ -1,2 +0,0 @@
# Paraná

8
test.py

@ -100,17 +100,13 @@ nota_fiscal.adicionar_produto_servico(codigo='000328', # id do produto (000328 e
cofins_aliquota_percentual=Decimal('3.00'), cofins_aliquota_percentual=Decimal('3.00'),
cofins_valor=Decimal('3.51')) cofins_valor=Decimal('3.51'))
#_fonte_dados.adicionar_objeto(nota_fiscal)
serializador = SerializacaoXML(_fonte_dados, homologacao=True) serializador = SerializacaoXML(_fonte_dados, homologacao=True)
xml = serializador.exportar(retorna_string=True).decode('utf-8') xml = serializador.exportar(retorna_string=True).decode('utf-8')
certificado = "JC.pfx"
senha = '12345328'
certificado = "certificado_A1.pfx"
senha = 'sua_senha'
# assinatura # assinatura
a1 = AssinaturaA1(certificado, senha) a1 = AssinaturaA1(certificado, senha)
xml = a1.assinar_nfe(xml) xml = a1.assinar_nfe(xml)
# escreve # escreve
with open('teste.xml', 'wb') as arquivo: with open('teste.xml', 'wb') as arquivo:
arquivo.write(xml) arquivo.write(xml)
#print serializador._serializar_nota_fiscal(nota_fiscal)
Loading…
Cancel
Save