Table of Contents
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
- Descarga o clona (recomendado) este repositorio:
git clone https://git.cuates.net/elmau/cfdi-descarga.git
- Entra al directorio del proyecto
cd cfdi-descarga
- De preferencias usa un entorno virtual e instala las dependencias.
pip install -r requirements.txt
- Copia el archivo de configuración.
cd source
cp conf.py.ejemplo conf.py
- 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.
- 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
- 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
- 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.
-
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. -
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