Browse Source

Ajustes gerais

tags/0.1
Marinho Brandão 16 years ago
parent
commit
9624c61f73
  1. 3
      README
  2. 4
      pynfe/processamento/__init__.py
  3. 31
      pynfe/processamento/comunicacao.py
  4. 11
      run_fake_soap_server.py
  5. 2
      tests/01-basico.txt
  6. 2
      tests/03-processamento-03-assinatura.txt
  7. 5
      tests/03-processamento-04-comunicacao.txt
  8. 17
      tests/04-servidor-soap.txt
  9. BIN
      tests/certificado.pfx

3
README

@ -83,3 +83,6 @@ Referências
- Lista de codigos para campo EX TIPI - Lista de codigos para campo EX TIPI
- http://www.fisconet.com.br/ipi/tipi/04.htm - http://www.fisconet.com.br/ipi/tipi/04.htm
- Certificado para testes
- http://nf-eletronica.com/blog/?p=133

4
pynfe/processamento/__init__.py

@ -1,6 +1,6 @@
from interfaces import InterfaceXML
from serializacao import SerializacaoXML
from validacao import Validacao from validacao import Validacao
from assinatura import AssinaturaA1 from assinatura import AssinaturaA1
from comunicacao import Comunicacao
from comunicacao import ComunicacaoSefaz
from danfe import DANFE from danfe import DANFE

31
pynfe/processamento/comunicacao.py

@ -1,3 +1,34 @@
# -*- coding: utf-8 -*-
class Comunicacao(object): class Comunicacao(object):
u"""Classe abstrata responsavel por definir os metodos e logica das classes
de comunicação com os webservices da NF-e."""
servidor = None
porta = None
def __init__(self, servidor, porta):
self.servidor = servidor
self.porta = porta
class ComunicacaoSefaz(Comunicacao):
u"""Classe de comunicação que segue o padrão definido para as SEFAZ dos Estados."""
def transmitir(self, nota_fiscal):
pass
def cancelar(self, nota_fiscal):
pass
def situacao_nfe(self, nota_fiscal):
pass
def status_servico(self):
pass
def consultar_cadastro(self, instancia):
pass
def inutilizar_faixa_numeracao(self, faixa):
pass pass

11
run_fake_soap_server.py

@ -1,12 +1,13 @@
from soaplib.wsgi_soap import SimpleWSGISoapApp from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Array, Null
class ServidorNFEFalso(SimpleWSGISoapApp): class ServidorNFEFalso(SimpleWSGISoapApp):
from soaplib.serializers.primitive import String, Integer, Array, Null
@soapmethod(String, Integer, _returns=String)
def ping(self, palavra, vezes):
return ','.join([palavra for i in range(vezes)])
@soapmethod(String, Integer, _returns=Array(String))
def ping(self, nome, vezes):
ret = [nome for i in range(vezes)]
print ret
return ret
if __name__ == '__main__': if __name__ == '__main__':
porta = 8080 porta = 8080

2
tests/01-basico.txt

@ -91,7 +91,7 @@ Os pacotes da biblioteca sao:
>>> from pynfe import processamento >>> from pynfe import processamento
>>> set([attr for attr in dir(processamento) if not attr.startswith('__')]) == set([ >>> set([attr for attr in dir(processamento) if not attr.startswith('__')]) == set([
... 'AssinaturaA1', 'Comunicacao', 'DANFE', 'InterfaceXML', 'Validacao',
... 'AssinaturaA1', 'ComunicacaoSefaz', 'DANFE', 'InterfaceXML', 'Validacao',
... 'assinatura', 'comunicacao', 'danfe', 'interfaces', 'validacao']) ... 'assinatura', 'comunicacao', 'danfe', 'interfaces', 'validacao'])
True True

2
tests/03-processamento-03-assinatura.txt

@ -15,7 +15,7 @@ Assinando NF-e
Na hora de assinar, selecionar um Certificado Digital Na hora de assinar, selecionar um Certificado Digital
>>> assinatura = AssinaturaA1(certificado, 'senha')
>>> assinatura = AssinaturaA1(certificado, senha='associacao')
TODO: A senha deveria ser criptografada de forma a evitar que alguem entre nesse TODO: A senha deveria ser criptografada de forma a evitar que alguem entre nesse
processo e a capture. processo e a capture.

5
tests/03-processamento-04-comunicacao.txt

@ -0,0 +1,5 @@
PROCESSAMENTO - COMUNICACAO
===========================
>>> from pynfe.processamento import ComunicacaoSefaz

17
tests/04-servidor-soap.txt

@ -5,9 +5,18 @@ Este teste vai verificar um servidor, executado atraves do comando
'run_fake_soap_server.py', para enviar requisicoes SOAP e esperar as 'run_fake_soap_server.py', para enviar requisicoes SOAP e esperar as
responstas em formato WSDL, de forma a simular o servidor da SEFAZ. responstas em formato WSDL, de forma a simular o servidor da SEFAZ.
Usando suds
>>> from suds.client import Client >>> from suds.client import Client
>>> url = 'http://localhost:8080/ServidorNFEFalso?wsdl'
>>> #client = Client(url)
>>> #print client
>>> #print client.service.ping('mario', 5)
>>> client = Client('http://localhost:8080/ServidorNFEFalso?wsdl', cache=None)
>>> client.set_options(retxml=True)
>>> print client.service.ping('mario', 5)
Usando soaplib
>>> #from run_fake_soap_server import ServidorNFEFalso
>>> #from soaplib.client import ServiceClient, make_service_client
>>> #client = make_service_client('http://localhost:8080/', ServidorNFEFalso())
>>> #print client.ping('Brasil', 5)
['Brasil', 'Brasil', 'Brasil', 'Brasil', 'Brasil']

BIN
tests/certificado.pfx

Loading…
Cancel
Save