En esta documentación encontraras la información para consumir nuestro web services para consulta y descarga de todo tipo de CFDI desde el SAT de modo masivo. Te permite obtener y administrar la información financiera de tu empresa descargando todos tus XML a una nube segura por 5 años.
URL Conexion:
El servicio se encuentra disponible en una dirección URL pública:
https://descargamasiva.pade.mx/api/
Generar Solicitud
URL de generación de una solicitud de Descarga de comprobantes:
https://descargamasiva.pade.mx/api/solicitud/generar
Descripción
Este método se utiliza para generar la solicitud según los parámetros especificados en la petición. El método realiza la autenticación al servicio, valida los parámetros y regresa un Json como respuesta al servicio. La estructura del Json de respuesta se explica más adelante.
Características de la petición
- Petición REST
- Tipo POST
- Headers: Content-Type = application/json
- Body
Parámetros del servicio:
- rfcEmisor: RFC del emisor al que pertenecen los CFDI’s que desea descargar.
- rfcReceptor: RFC del receptor al que pertenecen los CFDI’s que desea descargar.
- rfcSolicitante*: RFC correspondiente al PFX enviado. Este debe corresponder con al menos un parámetro rfcEmisor o rfcReceptor.
- fechaInicio*: Rango inicial de fechas que requiere en su consulta ante el SAT con formato (Año-Mes-Día’T’hora:minutos:segundos) ej. 2019-10-19T11:15:45.
- fechaFinal*: Rango final de fechas que requiere en su consulta ante el SAT con formato (Año-Mes-Día’T’hora:minutos:segundos) ej. 2019-10-19T11:15:45.
- tipoSolicitud*: Establece el valor “CFDI” para descargar los comprobantes. Establece el valor”Metadata” para descargar un archivo de texto con los siguientes datos: Uuid, RfcEmisor, NombreEmisor, RfcReceptor, NombreReceptor, RfcPac, FechaEmision, FechaCertificacionSat, Monto, EfectoComprobante(Tipo de comprobante), Estatus, FechaCancelacion
- pfx*: Archivo generado con la Fiel del contribuyente y envíado en base64.
- password*: Indica la contraseña de la clave privada de su archivo Fiel.
- usuario*: Indica el usuario con el cual se autenticará al servicio.
- passPade*: Indica la contraseña del usuario con el cual se autenticará al servicio.
- contrato*: Indica el código de contrato del usuario con el que se realizará la solicitud.
Nota: Los parámetros marcados con * son obligatorios.
Sin embargo los parámetros rfcEmisor o rfcReceptor debe de ir al menos uno, ya que uno de los dos (emisor o receptor) debe coincidir con el rfc del solicitante.
Ejemplo de generación de solicitud
+Ejemplo de respuesta exitoso
{
"numeroSolicitud": "00000000-0000-0000-0000-000000000000",
"estadoSolicitud": "5000",
"mensaje": [
"Solicitud creada exitosamente."
],
"respuestaSAT": {
"codigo": "5000",
"mensaje": "Solicitud Aceptada"
}
}
+Ejemplo de respuesta con error
{
"numeroSolicitud": "00000000-0000-0000-0000-000000000000",
"estadoSolicitud": "8000",
"mensaje": [
"Error al generar la solicitud."
],
"respuestaSAT": {
"codigo": "5001",
"mensaje": "Tercero no Autorizado""
}
}
No todos los atributos estarán presentes siempre en la respuesta. La descripción de los mismos se define a continuación:
- numeroSolicitud: Número correspondiente a la solicitud generada.
- estadoSolicitud: Código correspondiente al estado de la solicitud procesada.
- mensaje: Mensaje referente al estado de la solicitud
- codigo: Código específico definido por el SAT.
- mensaje: Este valor es un texto descriptivo del código definido por el SAT.
Solicitud estatus
URL Conexión
URL para consultar el estatus de una solicitud generada de Descarga de comprobantes:
https://descargamasiva.pade.mx/api/solicitud/estatus
Descripción
Se utiliza para consultar el estatus de una solicitud anteriormente generada para la descarga de comprobantes de un RFC Solicitante según los parámetros especificados. Este método realiza la autenticación al servicio, validación y descarga de los paquetes ante el SAT.
Características de la petición
- Petición REST
- Tipo POST
- Headers: Content-Type = application/json
- Body
Parámetros del servicio:
- numeroSolicitud: Número de solicitud a consultar.
- usuario: Indica el usuario con el cual se autenticará al servicio.
- passPade: Indica la contraseña del usuario con el cual se autenticará al servicio.
- contrato: Indica el código de contrato del usuario con el que se realizará la solicitud.
Ejemplo de respuesta exitoso
+En proceso para descarga
{
"numeroSolicitud": "00000000-0000-0000-0000-000000000000",
"estadoSolicitud": "2",
"mensaje": [
"Solicitud en progreso"
],
}
+Lista para descarga
{
"numeroSolicitud": "00000000-0000-0000-0000-000000000000",
"estadoSolicitud": "7",
"mensaje": [
"Paquetes listos"
],
"paquetes": [
"<URL descarga>"
]
}
+Ejemplo de respuesta con error
{
"numeroSolicitud": "00000000-0000-0000-0000-000000000000",
"estadoSolicitud": "8000",
"mensaje": [
"Solicitud no encontrada"
]
}
No todos los atributos estarán presentes siempre en la respuesta. La descripción de los mismos se define a continuación:
- numeroSolicitud: Número correspondiente a la solicitud proporcionada.
- estadoSolicitud: Código correspondiente al estado de la solicitud procesada.
- mensaje: Mensaje resultante a la consulta del estado de la solicitud.
- paquetes: URL(s) para la descarga de los paquetes correspondientes al número de solicitud. Solo está presente en la respuesta cuando los paquetes se encuentran listos para su descarga. La URL proporcionada estará disponible durante 5 minutos para descargar el paquete, una vez expirado ese tiempo se tiene que volver a generar la URL consultando de nuevo el estatus de la solicitud. No es necesario generar la solicitud por segunda ocasión.
¿Qué es un PFX?
Un archivo PFX no es más que el Certificado y Llave privada en un solo archivo. Podríamos decir que una fusión de ambos archivos.>
¿Como se crea este archivo PFX?
Para la generación de este archivo, necesitaremos un certificado (*.cer) y su llave privada correspondiente (*.key), teniendo esto, además necesitaremos la utilería para OpenSSL. Para Windows lo descargaremos de https://www.openssl.org/source/.
Una vez teniendo descomprimido, abriremos la consola en windows. Para ello iremos a “inicio” y buscaremos “cmd” y ejecutaremos la consola o “Command Prompt”, después nos posicionaremos en el mismo directorio donde descomprimiste el .zip. Para este ejemplo utilizaré la ruta “c:\out\openssl”
Y estando utilizaremos los siguientes comandos.
openssl pkcs8 -inform der –in CSD_Pruebas_CFDI_LAN7008173R5.key -passin pass:12345678a -out key.pem
Donde tenemos “CSD_Pruebas_CFDI_LAN7008173R5.key” como la llave privada, “12345678a” como el password de la llave privada y “key.pem” como el archivo de salida.
openssl x509 -inform der –in CSD_Pruebas_CFDI_LAN7008173R5.cer -out cer.pem
En este caso tenemos “CSD_Pruebas_CFDI_LAN7008173R5.cer” como el certificado y “cer.pem” como el archivo de salida.
openssl pkcs12 -export –in cer.pem -inkey key.pem -out LAN7008173R5.pfx
Al ejecutar esté último comando, nos solicitara un password, dicho password es el que tendrá el PFX. En este caso yo proporcione el mismo que tiene la llave privada (12345678a). De igual manera nos solicitara confirmar el password. (En la consola no se mostrará lo que escribamos como password, pero si lo tiene en cuenta para la generación del mismo).
Como paso final, en los WebService que ofrecemos normalmente solicitamos este archivo en el request como base64. Esto lo podemos hacer en nuestro lenguaje de programación directamente o a través de OpenSSL.
openssl enc -base64 –in LAN7008173R5.pfx -out LAN7008173R5.txt
Y esto nos generará un archivo .txt con la encriptación de los binarios del PFX en base64.