11 Inicio
Mauricio Baeza edited this page 2021-07-15 18:11:00 -05:00

cfdi-descarga

Descarga de forma masiva documentos del SAT

Usamos los web service proporcionados por el SAT

Ten a la mano la FIEL del emisor y la contraseña de la misma en un directorio de trabajo, los archivos deben llamarse fiel.cer y fiel.key

  1. Descarga o clona (recomendado) este repositorio:
git clone https://git.cuates.net/elmau/cfdi-descarga.git
  1. Entra al directorio del proyecto
cd cfdi-descarga
  1. De preferencias usa un entorno virtual e instala las dependencias.
pip install -r requirements.txt
  1. Copia el archivo de configuración.
cd source
cp conf.py.ejemplo conf.py
  1. Establece un valor para la variable TOKEN en este archivo.
TOKEN = 'super_secret'

Se usa para cifrar la FIEL. Para obtener un token puedes usar:

from secrets import token_hex
token_hex(32)

Si cambias este valor, tienes que volver a validar la FIEL.

IMPORTANTE: es posible saltarse este paso, y firmar las peticiones si ya tienes la fiel en formato PEM en el directorio de la fiel, pero NO es recomendado.

  1. Primero validamos la FIEL (-fv), indica la ruta al directorio (-fd) de la FIEL.
./cfdi-descarga.py -fv -fd ~/Desktop/fiel
Introduce la contraseña del archivo KEY:
15/07/2021 14:19:08 - INFO - Los datos del certificado son:
15/07/2021 14:19:08 - INFO -
    RFC: BASM740115RW0
    No de Serie: 00001000000502890818
    Válido desde: 2020-01-24 20:03:31
    Válido hasta: 2024-01-24 20:04:11
    Es vigente: True
    Son pareja: True
    Es FIEL: True

15/07/2021 14:19:08 - INFO - Ya puedes descargar del SAT

Este proceso, verifica que la contraseña sea correcta, que este vigente y que sea una FIEL.

También genera un archivo encriptado con la FIEL para poder firmar las peticiones, dentro de la ruta de la FIEL debes de ver un nuevo archivo: fiel.enc

No intentes descargar si obtienes cualquier error

  1. Hacer una descarga indicando la ruta de la FIEL (-fd) y la carpeta de descarga (-dd).

De forma predeterminada te tomará el año actual.

./cfdi-descarga.py -fd ~/Desktop/fiel/ -dd /home/mau/Desktop/xml

15/07/2021 14:29:17 - INFO - Descarga aceptada con el ID: 14ad0ccb-ebc5-4bf0-b252-267933fad66d
Esperando un minuto para verificar la descarga...
15/07/2021 14:30:19 - INFO - Guardando: /home/mau/Desktop/xml/14AD0CCB-EBC5-4BF0-B252-267933FAD66D_01.zip
15/07/2021 14:30:19 - INFO -    Archivo guardado correctamente

15/07/2021 14:30:20 - INFO - Descarga aceptada con el ID: 94dfbf87-4f32-4b13-9830-0d388dd2c009
Esperando un minuto para verificar la descarga...
15/07/2021 14:31:25 - INFO - Guardando: /home/mau/Desktop/xml/94DFBF87-4F32-4B13-9830-0D388DD2C009_01.zip
15/07/2021 14:31:25 - INFO -    Archivo guardado correctamente
  1. El SAT dividió el proceso en cuatro métodos: autenticación, solicitud de descarga, verificación de descarga y descarga.

Dado que todos requieren autenticación, este método esta implicito en cada uno de los tres restantes, que puedes invocar de forma separada si lo deseas.

  1. El archivo obtenido es un archivo zip con el ID de descarga generado por la petición de descarga. Si generas de forma separada la petición, es muy importante guardes este ID. El SAT solo permite descargar dos veces una descarga aceptada.

  2. Para ver todos los argumentos usa el argumento de ayuda (-h)

./cfdi-descarga.py -h
usage: cfdi-descarga.py [-h] [-fv] [-fd FIEL_DIR] [-fn FIEL_NOMBRE] [-t {t,e,r}]
                        [-a {2014,2015,2016,2017,2018,2019,2020,2021}]
                        [-m {0,1,2,3,4,5,6,7,8,9,10,11,12}]
                        [-d {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}]
                        [-sd] [-vd] [-da] [-id ID_REQUEST] [-ida ID_FILE]
                        [-dd PATH_DOWNLOAD]

CFDI Descarga SAT

optional arguments:
  -h, --help            show this help message and exit
  -fv, --fiel-validar   Valida la FIEL
  -fd FIEL_DIR, --fiel-dir FIEL_DIR
                        Ruta al directorio con la FIEL
  -fn FIEL_NOMBRE, --fiel-nombre FIEL_NOMBRE
                        Nombre de los archivos FIEL, el predeterminado es 'fiel'
  -t {t,e,r}, --tipo {t,e,r}
                        Descargar por Tipo: t=todos(default), e=emitidas, r=recibidas
  -a {2014,2015,2016,2017,2018,2019,2020,2021}, --año {2014,2015,2016,2017,2018,2019,2020,2021}
                        Año de la descarga entre 2014 y el año actual (predeterminado).
  -m {0,1,2,3,4,5,6,7,8,9,10,11,12}, --mes {0,1,2,3,4,5,6,7,8,9,10,11,12}
                        Mes de la descarga, el mes actual es el predeterminado
  -d {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}, --dia {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}
                        Día de la descarga, de forma predeterminada no se usa
  -sd, --solicitar-descarga
                        Solicitar descarga
  -vd, --verificar-descarga
                        Verificar estatus de descarga
  -da, --descargar-archivos
                        Descargar archivos
  -id ID_REQUEST, --id-solicitud ID_REQUEST
                        ID de solicitud
  -ida ID_FILE, --id-archivo ID_FILE
                        ID archivo
  -dd PATH_DOWNLOAD, --directorio-descargas PATH_DOWNLOAD
                        Ruta de descarga de archivos