Initial clean portal_sat

This commit is contained in:
el Mau 2023-01-17 01:07:39 -06:00
parent 61109d3665
commit c20d979e10
4 changed files with 57 additions and 9 deletions

1
.gitignore vendored
View File

@ -160,3 +160,4 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
portal_sat.bk.py

View File

@ -2,26 +2,20 @@
import falcon
import json
XML = """<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4">
<cfdi:Emisor Rfc="SPE11071516A"/>
</cfdi:Comprobante>
"""
from sat.util import get_uuid
class JSONTranslator():
def process_response(self, req, resp, resource, req_succeeded):
if not hasattr(resp.context, 'result'):
return
resp.body = json.dumps(resp.context.result)
resp.text = json.dumps(resp.context.result)
class AppApi(object):
def on_get(self, req, resp, rfc, cfdi):
resp.context['result'] = {'error': '', 'xml': XML}
resp.context['result'] = get_uuid(rfc, cfdi)
resp.status = falcon.HTTP_200

31
source/sat/portal_sat.py Normal file
View File

@ -0,0 +1,31 @@
import requests
from requests import Session, exceptions, adapters
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
class PortalSAT(object):
URL_MAIN = 'https://portalcfdi.facturaelectronica.sat.gob.mx/'
HOST = 'cfdiau.sat.gob.mx'
BROWSER = 'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0'
REFERER = 'https://cfdiau.sat.gob.mx/nidp/app/login?id=SATUPCFDiCon&sid=0&option=credential&sid=0'
PORTAL = 'portalcfdi.facturaelectronica.sat.gob.mx'
URL_LOGIN = 'https://{}/nidp/app/login'.format(HOST)
URL_FORM = 'https://{}/nidp/app/login?sid=0&sid=0'.format(HOST)
URL_PORTAL = 'https://portalcfdi.facturaelectronica.sat.gob.mx/'
URL_CONTROL = 'https://cfdicontribuyentes.accesscontrol.windows.net/v2/wsfederation'
URL_CONSULTA = URL_PORTAL + 'Consulta.aspx'
URL_RECEPTOR = URL_PORTAL + 'ConsultaReceptor.aspx'
URL_EMISOR = URL_PORTAL + 'ConsultaEmisor.aspx'
URL_LOGOUT = URL_PORTAL + 'logout.aspx?salir=y'
def __init__(self, cert, cfdi_uuid):
self._cert = cert
self._uuid = cfdi_uuid
self.error = ''
self.is_connect = False
self._session = Session()
a = adapters.HTTPAdapter(pool_connections=512, pool_maxsize=512, max_retries=5)
self._session.mount('https://', a)

22
source/sat/util.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
from uuid import UUID
from .portal_sat import PortalSAT
def validate_uuid(value):
try:
UUID(value)
return True
except ValueError:
return False
def get_uuid(rfc, cfdi):
data = {'error': '', 'xml': ''}
if not validate_uuid(cfdi):
data['error'] = 'UUID inválido'
return data
return data