Herramientas de usuario

Herramientas del sitio


web-service-descarga-masiva-sat

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
web-service-descarga-masiva-sat [2026/07/07 20:20]
creado
web-service-descarga-masiva-sat [2026/07/07 20:51] (actual)
Línea 1: Línea 1:
 +====== Web Service de Descarga de CFDI del SAT – IEngine ======
  
- +===== 1. Introducción ​=====
-**Web Service de Descarga de CFDI del SAT – IEngine** +
- +
-**1. Introducción**+
  
 El presente documento describe el uso del Web Service **IEngine – Descarga SAT**, utilizado para solicitar la descarga de comprobantes fiscales digitales (CFDI) desde el SAT mediante los parámetros proporcionados. El presente documento describe el uso del Web Service **IEngine – Descarga SAT**, utilizado para solicitar la descarga de comprobantes fiscales digitales (CFDI) desde el SAT mediante los parámetros proporcionados.
Línea 9: Línea 7:
 El servicio permite consultar y descargar los XML asociados a un RFC emisor dentro de un rango de fechas determinado. Una vez obtenidos los comprobantes,​ el sistema envía cada XML descargado hacia un endpoint webhook configurado por el usuario. El servicio permite consultar y descargar los XML asociados a un RFC emisor dentro de un rango de fechas determinado. Una vez obtenidos los comprobantes,​ el sistema envía cada XML descargado hacia un endpoint webhook configurado por el usuario.
  
----- +===== 2. Endpoint del Servicio ​=====
- +
-**2. Endpoint del Servicio**+
  
-**URL del Web Service**+**URL del Web Service:**
  
 https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php
  
-----+===== 3. Método de consumo =====
  
-**3. Método de consumo**+El servicio recibe parámetros mediante una solicitud ​**HTTP GET**.
  
-El servicio recibe parámetros mediante una solicitud HTTP GET.+**Ejemplo de estructura:​**
  
-Ejemplo:+https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​engine=descagaSAT&​RfcEmisor=RFC&​TipoComprobante=N&​callback=webhookUrl&​fechaInicial=2025-10-22&​fechaFinal=2025-10-24
  
-https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​+===== 4Parámetros de entrada =====
  
-engine=descagaSAT&+^Parámetro ^Tipo ^Requerido ^Descripción | 
 +|**engine**   ​|String |Sí |Nombre del motor a ejecutar. Para descarga SAT debe enviarse ​descagaSAT. | 
 +|**RfcEmisor** ​  ​|String |Sí |RFC del emisor del cual se desean descargar comprobantes. | 
 +|**TipoComprobante** ​  ​|String |Sí |Tipo de comprobante a consultar. Ejemplo: N para nómina. Ver catálogo al final. | 
 +|**callback** ​  ​|URL/​String |Sí |Endpoint donde serán enviados los XML descargados. | 
 +|**fechaInicial** ​  |Date |Sí |Fecha inicial del rango de búsqueda. Formato: YYYY-MM-DD | 
 +|**fechaFinal** ​  |Date |Sí |Fecha final del rango de búsqueda. Formato: YYYY-MM-DD |
  
-RfcEmisor=RFC&+===== 5. Ejemplo de solicitud =====
  
-TipoComprobante=N&​+**Solicitud (GET):**
  
-callback=webhookUrl&+https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​engine=descagaSAT&​RfcEmisor=XAXX010101000&​TipoComprobante=N&​callback=https://​midominio.com/​webhook&fechaInicial=2025-10-22&​fechaFinal=2025-10-24
  
-fechaInicial=2025-10-22&​ +===== 6. Funcionamiento del servicio ​=====
- +
-fechaFinal=2025-10-24 +
- +
----- +
- +
-**4. Parámetros de entrada** +
- +
-^ \\ **Parámetro** \\    ^ \\ **Tipo** \\    ^ \\ **Requerido** \\    ^ \\ **Descripción** \\    | +
-| \\ engine \\  | \\ String \\  | \\ Sí \\  | \\ Nombre del motor a ejecutar. Para descarga SAT debe enviarse descagaSAT. \\  | +
-| \\ RfcEmisor \\  | \\ String \\  | \\ Sí \\  | \\ RFC del emisor del cual se desean descargar comprobantes. \\  | +
-| \\ TipoComprobante \\  | \\ String \\  | \\ Sí \\  | \\ Tipo de comprobante a consultar. Ejemplo: N para nómina. \\  | +
-| \\ callback \\  | \\ URL/String \\  | \\ Sí \\  | \\ Endpoint donde serán enviados los XML descargados. \\  | +
-| \\ fechaInicial \\  | \\ Date \\  | \\ Sí \\  | \\ Fecha inicial del rango de búsqueda. Formato: YYYY-MM-DD \\  | +
-| \\ fechaFinal \\  | \\ Date \\  | \\ Sí \\  | \\ Fecha final del rango de búsqueda. Formato: YYYY-MM-DD \\  | +
- +
----- +
- +
-**5. Ejemplo de solicitud** +
- +
-Solicitud:​ +
- +
-GET +
- +
-https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​ +
- +
-engine=descagaSAT&​ +
- +
-RfcEmisor=XAXX010101000&​ +
- +
-TipoComprobante=N& +
- +
-callback=https://​midominio.com/​webhook&​ +
- +
-fechaInicial=2025-10-22&​ +
- +
-fechaFinal=2025-10-24 +
- +
----- +
- +
-**6. Funcionamiento del servicio**+
  
 El flujo de operación es el siguiente: El flujo de operación es el siguiente:
  
-  ​El usuario realiza una petición al Web Service indicando:+  ​El usuario realiza una petición al Web Service indicando:
       * RFC del emisor.       * RFC del emisor.
       * Tipo de comprobante.       * Tipo de comprobante.
       * Periodo de consulta.       * Periodo de consulta.
       * URL del webhook receptor.       * URL del webhook receptor.
-  ​El servicio consulta los CFDI disponibles en SAT. +  ​El servicio consulta los CFDI disponibles en SAT. 
-  ​Por cada XML encontrado, el servicio realiza una llamada HTTP al webhook registrado. +  ​Por cada XML encontrado, el servicio realiza una llamada HTTP al webhook registrado. 
-  ​El webhook recibe el XML correspondiente. +  ​El webhook recibe el XML correspondiente. 
-  ​El proceso se repite hasta enviar todos los XML encontrados.+  ​El proceso se repite hasta enviar todos los XML encontrados.
  
-----+===== 7. Webhook receptor =====
  
-**7Webhook receptor**+**Descripción:​** ​ El webhook es un endpoint proporcionado por el usuario consumidor del servicioEste endpoint será invocado ​**N veces**, donde N corresponds al número de XML descargados.
  
-**Descripción**+**Nota:**  Si SAT devuelve 100 XML, el webhook será llamado 100 veces de forma individual y cada llamada contendrá un XML diferente.
  
-El webhook es un endpoint proporcionado por el usuario consumidor del servicio.+===== 8Parámetros enviados al webhook =====
  
-Este endpoint será invocado **N veces**, donde **N corresponde al número de XML descargados**.+El webhook recibe un parámetro vía POST:
  
-Ejemplo:+^Parámetro ^Tipo ^Descripción | 
 +|**xml** ​  ​|String/​XML |Contenido completo del CFDI descargado. |
  
-  ​Si SAT devuelve 100 XML: +**Ejemplo de payload recibido:**
-      ​El webhook será llamado 100 veces. +
-      * Cada llamada contendrá un XML diferente. +
- +
----- +
- +
-**8. Parámetros enviados al webhook** +
- +
-El webhook recibe un parámetro:​ +
- +
-^ \\ **Parámetro** \\    ^ \\ **Tipo** \\    ^ \\ **Descripción** \\    | +
-| \\ xml \\  | \\ String/XML \\  | \\ Contenido completo del CFDI descargado. \\  | +
- +
-Ejemplo de payload recibido: +
- +
-+
- +
-'​xml'​ => '​contenido_xml_del_cfdi'​+
  
 +<​code>​[
 +    '​xml'​ => '​contenido_xml_del_cfdi'​
 ] ]
 +</​code>​
 +===== 9. Ejemplo de recepción del webhook =====
  
-----+**Ejemplo en PHP:**
  
-**9. Ejemplo de recepción del webhook** +<​code>​<?php
- +
-Ejemplo en PHP: +
- +
-<?php+
  
 $xml = $_POST['​xml'​] ?? null; $xml = $_POST['​xml'​] ?? null;
  
 if ($xml) { if ($xml) {
- +    ​// Procesar XML recibido 
-// Procesar XML recibido +    file_put_contents('​cfdi.xml',​ $xml); 
- +    echo "XML recibido correctamente";​
-file_put_contents( +
- +
-'​cfdi.xml',​ +
- +
-$xml +
- +
-); +
- +
-echo "XML recibido correctamente";​ +
 } else { } else {
- +    ​http_response_code(400);​ 
-http_response_code(400);​ +    echo "XML no recibido";​
- +
-echo "XML no recibido";​ +
 } }
  
 ?> ?>
- +</​code>​ 
----- +===== 10. Recomendaciones para implementar el webhook ​=====
- +
-**10. Recomendaciones para implementar el webhook** +
- +
-El endpoint receptor debe:+
  
   * Aceptar solicitudes HTTP POST.   * Aceptar solicitudes HTTP POST.
   * Validar que el parámetro xml exista.   * Validar que el parámetro xml exista.
   * Guardar o procesar el XML recibido.   * Guardar o procesar el XML recibido.
-  * Responder rápidamente para evitar tiempos de espera.+  * Responder rápidamente para evitar tiempos de espera ​(timeouts).
   * Registrar errores de procesamiento.   * Registrar errores de procesamiento.
  
-Respuesta recomendada:​+**Respuesta recomendada:​**  HTTP 200 OK (Cuerpo: OK)
  
-HTTP 200 OK +===== 11. Manejo de múltiples XML =====
- +
-Ejemplo: +
- +
-OK +
- +
----- +
- +
-**11. Manejo de múltiples XML** +
- +
-El consumidor debe considerar que:+
  
   * El webhook puede recibir múltiples llamadas consecutivas.   * El webhook puede recibir múltiples llamadas consecutivas.
Línea 187: Línea 106:
   * Debe implementar almacenamiento temporal o procesamiento en cola si espera grandes volúmenes.   * Debe implementar almacenamiento temporal o procesamiento en cola si espera grandes volúmenes.
  
----- +===== 12. Consideraciones de seguridad ​=====
- +
-**12. Consideraciones de seguridad** +
- +
-Se recomienda:+
  
   * Utilizar HTTPS en el callback.   * Utilizar HTTPS en el callback.
   * Validar el origen de las solicitudes.   * Validar el origen de las solicitudes.
-  * Implementar autenticación adicional si el ambiente lo requiere.+  * Implementar autenticación adicional ​en la URL si el ambiente lo requiere.
   * Evitar almacenar XML sin controles de acceso.   * Evitar almacenar XML sin controles de acceso.
  
----- +===== 13. Resumen del flujo =====
- +
-**13. Resumen del flujo** +
- +
-Cliente +
- +
-+
- +
-| Solicitud descarga SAT +
- +
-+
- +
-v+
  
 +<​code>​Cliente
 +  |
 +  | Solicitud descarga SAT (GET)
 +  v
 IEngine Web Service IEngine Web Service
- +  ​
-+  | Consulta CFDI SAT 
- +  v
-| Consulta CFDI SAT +
- +
-+
- +
-v +
 XML encontrado XML encontrado
 +  |
 +  | POST webhook (N veces)
 +  v
 +Sistema consumidor (Procesa y almacena)
 +</​code>​
 +===== 14. Ejemplo completo =====
  
-+**Solicitud:**
- +
-| POST webhook +
- +
-+
- +
-+
- +
-Sistema consumidor +
- +
-+
- +
-| Procesa y almacena XML +
- +
----- +
- +
-**14. Ejemplo completo** +
- +
-Solicitud:​ +
- +
-https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​ +
- +
-engine=descagaSAT&​ +
- +
-RfcEmisor=AAA010101AAA&​ +
- +
-TipoComprobante=N&​ +
- +
-callback=https://​cliente.com/​webhook/​cfdi&​ +
- +
-fechaInicial=2025-10-22&​ +
- +
-fechaFinal=2025-10-24+
  
-Resultado:+https://​pruebas-ifactura.itimbre.com/​plugins/​IEngine/​IEngine.php?​engine=descagaSAT&​RfcEmisor=AAA010101AAA&​TipoComprobante=N&​callback=https://​cliente.com/​webhook/​cfdi&​fechaInicial=2025-10-22&​fechaFinal=2025-10-24
  
-Si existen 25 CFDI:+**Resultado si existen 25 CFDI:**
  
-  ​* El webhook será invocado 25 veces.+      ​* El webhook será invocado 25 veces de forma independiente.
   * Cada invocación recibirá:   * Cada invocación recibirá:
  
-+<​code>​
- +    '​xml'​ => '<​cfdi:​Comprobante ... > ... </​cfdi:​Comprobante>'​
-'​xml'​ => '<​cfdi:​Comprobante ... > ... </​cfdi:​Comprobante>'​ +
 ] ]
 +</​code>​
 +===== Tipos de comprobante CFDI soportados =====
  
-----+El parámetro TipoComprobante permite indicar el tipo de CFDI que se desea consultar durante la descarga desde SAT. Los valores posibles corresponden al atributo oficial definido por la autoridad:
  
-.+^Valor ^Tipo de comprobante ^Descripción | 
 +|**I** ​  ​|Ingreso |Comprobantes emitidos por la prestación de servicios, venta de productos, arrendamientos u operaciones donde existe un ingreso
 +|**E** ​  ​|Egreso |Comprobantes utilizados para devoluciones,​ descuentos, bonificaciones o ajustes relacionados con ingresos previamente registrados. | 
 +|**T** ​  ​|Traslado |Comprobantes utilizados para acreditar el transporte o traslado de mercancías. | 
 +|**N** ​  ​|Nómina |Comprobantes fiscales digitales utilizados para registrar pagos de salarios y prestaciones a trabajadores. | 
 +|**P** ​  |Pago |Comprobantes utilizados para registrar la recepción de pagos relacionados con operaciones previamente facturadas. |
  
-**Tipos de comprobante CFDI soportados**+**Ejemplos ​de uso rápidos:**
  
-El parámetro ​TipoComprobante ​permite indicar el tipo de CFDI que se desea consultar durante la descarga desde SAT.+      * **Descargar CFDI de nómina:​**  ​TipoComprobante=N 
 +  * **Descargar facturas emitidas:​** ​ TipoComprobante=I 
 +  * **Descargar notas de crédito:​** ​ TipoComprobante=E 
 +  * **Descargar comprobantes de traslado:​** ​ TipoComprobante=T 
 +  * **Descargar complementos de pago:​** ​ TipoComprobante=P
  
-Los valores posibles corresponden al atributo TipoDeComprobante definido por el SAT:+**Consideraciones adicionales:**
  
-^ \\ **Valor** \\    ^ \\ **Tipo de comprobante** \\    ^ \\ **Descripción** \\    | +      ​* El valor enviado debe utilizar la letra correspondiente en mayúscula.
-| \\ I \\  | \\ Ingreso \\  | \\ Comprobantes emitidos por la prestación de servicios, venta de productos, arrendamientos u operaciones donde existe un ingreso. \\  | +
-| \\ E \\  | \\ Egreso \\  | \\ Comprobantes utilizados para devoluciones,​ descuentos, bonificaciones o ajustes relacionados con ingresos previamente registrados. \\  | +
-| \\ T \\  | \\ Traslado \\  | \\ Comprobantes utilizados para acreditar el transporte o traslado de mercancías. \\  | +
-| \\ N \\  | \\ Nómina \\  | \\ Comprobantes fiscales digitales utilizados para registrar pagos de salarios y prestaciones a trabajadores. \\  | +
-| \\ P \\  | \\ Pago \\  | \\ Comprobantes utilizados para registrar la recepción de pagos relacionados con operaciones previamente facturadas. \\  | +
- +
-**Ejemplos de uso** +
- +
-**Descargar CFDI de nómina** +
- +
-TipoComprobante=N +
- +
-Consulta únicamente CFDI de nómina. +
- +
----- +
- +
-**Descargar facturas emitidas** +
- +
-TipoComprobante=I +
- +
-Consulta comprobantes tipo ingreso. +
- +
----- +
- +
-**Descargar notas de crédito** +
- +
-TipoComprobante=E +
- +
-Consulta comprobantes tipo egreso. +
- +
----- +
- +
-**Descargar comprobantes de traslado** +
- +
-TipoComprobante=T +
- +
-Consulta CFDI tipo traslado. +
- +
----- +
- +
-**Descargar complementos de pago** +
- +
-TipoComprobante=P +
- +
-Consulta CFDI tipo pago. +
- +
----- +
- +
-**Consideraciones** +
- +
-  ​* El valor enviado debe utilizar la letra correspondiente en mayúscula.+
   * La consulta se realizará únicamente para el tipo de comprobante indicado.   * La consulta se realizará únicamente para el tipo de comprobante indicado.
-  * Para descargar diferentes tipos de CFDI se debe realizar una solicitud independiente por cada valor de TipoComprobante. +  * Para descargar diferentes tipos de CFDI se debe realizar una solicitud independiente por cada valor.
-  * La cantidad de llamadas al webhook dependerá del número de XML encontrados para el tipo de comprobante solicitado.+
  
 \\ \\
- 
  
web-service-descarga-masiva-sat.1783455606.txt.gz · Última modificación: 2026/07/07 20:20 por