@@ -148,10 +148,12 @@ def consulta_distribuicao(self, cnpj, nsu=0):
148
148
pass
149
149
150
150
def consulta_cadastro (self , modelo , cnpj ):
151
+ # UF que utilizam a SVRS - Sefaz Virtual do RS: Para serviço de Consulta Cadastro: AC, RN, PB, SC
152
+ lista_svrs = ['AC' ,'RN' ,'PB' ,'SC' ]
151
153
# RS implementa um método diferente na consulta de cadastro
152
154
if self .uf .upper () == 'RS' :
153
155
url = NFE ['RS' ]['CADASTRO' ]
154
- elif self .uf .upper () == 'SVRS' :
156
+ elif self .uf .upper () in lista_svrs :
155
157
url = NFE ['SVRS' ]['CADASTRO' ]
156
158
elif self .uf .upper () == 'SVC-RS' :
157
159
url = NFE ['SVC-RS' ]['CADASTRO' ]
@@ -295,13 +297,17 @@ def _get_url(self, modelo, consulta):
295
297
# nfe Ex: https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3
296
298
self .url = NFE [self .uf .upper ()][ambiente ] + NFE [self .uf .upper ()][consulta ]
297
299
elif modelo == 'nfce' :
298
- # nfce Ex: https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3
299
- self .url = NFCE [self .uf .upper ()][ambiente ] + NFCE [self .uf .upper ()][consulta ]
300
+ # PE é o unico UF que possiu NFE proprio e SVRS para NFCe
301
+ if self .uf .upper () == 'PE' :
302
+ self .url = NFCE ['SVRS' ][ambiente ] + NFCE ['SVRS' ][consulta ]
303
+ else :
304
+ # nfce Ex: https://homologacao.nfce.fazenda.pr.gov.br/nfce/NFeStatusServico3
305
+ self .url = NFCE [self .uf .upper ()][ambiente ] + NFCE [self .uf .upper ()][consulta ]
300
306
else :
301
307
raise Exception ('Modelo não encontrado! Defina modelo="nfe" ou "nfce"' )
302
308
# Estados que utilizam outros ambientes
303
309
else :
304
- lista_svrs = ['SE' ]
310
+ lista_svrs = ['AC' , 'RN' , 'PB' , 'SC' , ' SE' ]
305
311
if self .uf .upper () in lista_svrs :
306
312
if self ._ambiente == 1 :
307
313
ambiente = 'HTTPS'
@@ -410,13 +416,23 @@ def _post(self, url, xml):
410
416
chave_cert = (cert , chave )
411
417
# Abre a conexão HTTPS
412
418
try :
413
- xml_declaration = '<?xml version="1.0" encoding="utf -8"?>'
419
+ xml_declaration = '<?xml version="1.0" encoding="UTF -8"?>'
414
420
# limpa xml com caracteres bugados para infNFeSupl em NFC-e
415
421
xml = re .sub ('<qrCode>(.*?)</qrCode>' ,
416
422
lambda x :x .group (0 ).replace ('<' ,'<' ).replace ('>' ,'>' ).replace ('amp;' ,'' ),
417
423
etree .tostring (xml , encoding = 'unicode' ).replace ('\n ' ,'' ))
418
424
xml = xml_declaration + xml
419
425
426
+ # adapter para substituir ssl por tls
427
+ # s = requests.Session()
428
+ # s.mount(url, AdapterTLSV1())
429
+ # print(xml)
430
+ # # print(self._post_header())
431
+ # # Faz o request com o servidor
432
+ # result = s.post(url, xml, headers=self._post_header(), cert=chave_cert, verify=False, timeout=120)
433
+ # result.encoding = 'utf-8'
434
+ # return result
435
+ print (url )
420
436
# Faz o request com o servidor
421
437
result = requests .post (url , xml , headers = self ._post_header (), cert = chave_cert , verify = False , timeout = 120 )
422
438
result .encoding = 'utf-8'
@@ -649,3 +665,15 @@ def _post_https(self, url, xml, metodo):
649
665
raise Exception ('Método não implementado no autorizador.' )
650
666
except Exception as e :
651
667
raise e
668
+
669
+ """ Adapter para conexão tls """
670
+ from requests .adapters import HTTPAdapter
671
+ from requests .packages .urllib3 .poolmanager import PoolManager
672
+ import ssl
673
+
674
+ class AdapterTLSV1 (HTTPAdapter ):
675
+ def init_poolmanager (self , connections , maxsize , block = False ):
676
+ self .poolmanager = PoolManager (num_pools = connections ,
677
+ maxsize = maxsize ,
678
+ block = block ,
679
+ ssl_version = ssl .PROTOCOL_TLSv1_2 )
0 commit comments