¡Esta es una revisión vieja del documento!
\\
<head>\\
<style>\\
.box-url { background-color: #f4f6f7; border-left: 4px solid #3498db; padding: 10px; font-family: monospace; font-size: 14px; margin-bottom: 15px; word-break: break-all; }\\
.box-code { background-color: #2c3e50; color: #ffffff; padding: 12px; border-radius: 4px; font-family: monospace; font-size: 14px; overflow-x: auto; margin-bottom: 15px; white-space: pre; }\\
table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }\\
th, td { border: 1px solid #dddddd; padding: 8px; text-align: left; }\\
th { background-color: #f2f2f2; }\\
.alert-box { background-color: #e8f4f8; border-left: 4px solid #2980b9; padding: 10px; margin-bottom: 15px; }\\
</style>\\
</head>\\
<body>
<h1>Web Service de Descarga de CFDI del SAT – IEngine</h1>\\
\\
<h2>1. Introducción</h2>\\
<p>El presente documento describe el uso del Web Service <strong>IEngine – Descarga SAT</strong>, utilizado para solicitar la descarga de comprobantes fiscales digitales (CFDI) desde el SAT mediante los parámetros proporcionados.</p>\\
<p>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.</p>
<h2>2. Endpoint del Servicio</h2>\\
<p><strong>URL del Web Service:</strong></p>\\
<div class="box-url">https://pruebas-ifactura.itimbre.com/plugins/IEngine/IEngine.php</div>
<h2>3. Método de consumo</h2>\\
<p>El servicio recibe parámetros mediante una solicitud <strong>HTTP GET</strong>.</p>\\
<p><strong>Ejemplo de estructura:</strong></p>\\
<div class="box-url">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</div>
<h2>4. Parámetros de entrada</h2>\\
<table>\\
<thead>\\
<tr>\\
<th>Parámetro</th>\\
<th>Tipo</th>\\
<th>Requerido</th>\\
<th>Descripción</th>\\
</tr>\\
</thead>\\
<tbody>\\
<tr>\\
<td><strong>engine</strong></td>\\
<td>String</td>\\
<td>Sí</td>\\
<td>Nombre del motor a ejecutar. Para descarga SAT debe enviarse descagaSAT.</td>\\
</tr>\\
<tr>\\
<td><strong>RfcEmisor</strong></td>\\
<td>String</td>\\
<td>Sí</td>\\
<td>RFC del emisor del cual se desean descargar comprobantes.</td>\\
</tr>\\
<tr>\\
<td><strong>TipoComprobante</strong></td>\\
<td>String</td>\\
<td>Sí</td>\\
<td>Tipo de comprobante a consultar. Ejemplo: N para nómina. Ver catálogo al final.</td>\\
</tr>\\
<tr>\\
<td><strong>callback</strong></td>\\
<td>URL/String</td>\\
<td>Sí</td>\\
<td>Endpoint donde serán enviados los XML descargados.</td>\\
</tr>\\
<tr>\\
<td><strong>fechaInicial</strong></td>\\
<td>Date</td>\\
<td>Sí</td>\\
<td>Fecha inicial del rango de búsqueda. Formato: YYYY-MM-DD</td>\\
</tr>\\
<tr>\\
<td><strong>fechaFinal</strong></td>\\
<td>Date</td>\\
<td>Sí</td>\\
<td>Fecha final del rango de búsqueda. Formato: YYYY-MM-DD</td>\\
</tr>\\
</tbody>\\
</table>
<h2>5. Ejemplo de solicitud</h2>\\
<p><strong>Solicitud (GET):</strong></p>\\
<div class="box-url">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</div>
<h2>6. Funcionamiento del servicio</h2>\\
<p>El flujo de operación es el siguiente:</p>\\
<ul>\\
<li>El usuario realiza una petición al Web Service indicando:\\
<ul>\\
<li>RFC del emisor.</li>\\
<li>Tipo de comprobante.</li>\\
<li>Periodo de consulta.</li>\\
<li>URL del webhook receptor.</li>\\
</ul>\\
</li>\\
<li>El servicio consulta los CFDI disponibles en SAT.</li>\\
<li>Por cada XML encontrado, el servicio realiza una llamada HTTP al webhook registrado.</li>\\
<li>El webhook recibe el XML correspondiente.</li>\\
<li>El proceso se repite hasta enviar todos los XML encontrados.</li>\\
</ul>
<h2>7. Webhook receptor</h2>\\
<p><strong>Descripción:</strong> El webhook es un endpoint proporcionado por el usuario consumidor del servicio. Este endpoint será invocado <strong>N veces</strong>, donde N corresponde al número de XML descargados.</p>\\
<div class="alert-box">\\
<strong>Nota:</strong> Si SAT devuelve 100 XML, el webhook será llamado 100 veces de forma individual y cada llamada contendrá un XML diferente.\\
</div>
<h2>8. Parámetros enviados al webhook</h2>\\
<p>El webhook recibe un parámetro vía POST:</p>\\
<table>\\
<thead>\\
<tr>\\
<th>Parámetro</th>\\
<th>Tipo</th>\\
<th>Descripción</th>\\
</tr>\\
</thead>\\
<tbody>\\
<tr>\\
<td><strong>xml</strong></td>\\
<td>String/XML</td>\\
<td>Contenido completo del CFDI descargado.</td>\\
</tr>\\
</tbody>\\
</table>
<p><strong>Ejemplo de payload recibido:</strong></p>\\
<pre class="box-code">[\\
'xml' => 'contenido_xml_del_cfdi'\\
]</pre>
<h2>9. Ejemplo de recepción del webhook</h2>\\
<p><strong>Ejemplo en PHP:</strong></p>\\
<pre class="box-code"><?php
$xml = $_POST['xml'] ?? null;
if ($xml) {\\
// Procesar XML recibido\\
file_put_contents('cfdi.xml', $xml);\\
echo "XML recibido correctamente";\\
} else {\\
http_response_code(400);\\
echo "XML no recibido";\\
}
?></pre>
<h2>10. Recomendaciones para implementar el webhook</h2>\\
<ul>\\
<li>Aceptar solicitudes HTTP POST.</li>\\
<li>Validar que el parámetro xml exista.</li>\\
<li>Guardar o procesar el XML recibido.</li>\\
<li>Responder rápidamente para evitar tiempos de espera (timeouts).</li>\\
<li>Registrar errores de procesamiento.</li>\\
</ul>\\
<p><strong>Respuesta recomendada:</strong> HTTP 200 OK (Cuerpo: OK)</p>
<h2>11. Manejo de múltiples XML</h2>\\
<ul>\\
<li>El webhook puede recibir múltiples llamadas consecutivas.</li>\\
<li>Cada llamada representa un CFDI independiente.</li>\\
<li>No debe asumir que todos los XML llegarán en una sola petición.</li>\\
<li>Debe implementar almacenamiento temporal o procesamiento en cola si espera grandes volúmenes.</li>\\
</ul>
<h2>12. Consideraciones de seguridad</h2>\\
<ul>\\
<li>Utilizar HTTPS en el callback.</li>\\
<li>Validar el origen de las solicitudes.</li>\\
<li>Implementar autenticación adicional en la URL si el ambiente lo requiere.</li>\\
<li>Evitar almacenar XML sin controles de acceso.</li>\\
</ul>
<h2>13. Resumen del flujo</h2>\\
<pre class="box-code">Cliente\\
|\\
| Solicitud descarga SAT (GET)\\
v\\
IEngine Web Service\\
|\\
| Consulta CFDI SAT\\
v\\
XML encontrado\\
|\\
| POST webhook (N veces)\\
v\\
Sistema consumidor (Procesa y almacena)</pre>
<h2>14. Ejemplo completo</h2>\\
<p><strong>Solicitud:</strong></p>\\
<div class="box-url">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</div>
<p><strong>Resultado si existen 25 CFDI:</strong></p>\\
<ul>\\
<li>El webhook será invocado 25 veces de forma independiente.</li>\\
<li>Cada invocación recibirá:</li>\\
</ul>\\
<pre class="box-code">[\\
'xml' => '<cfdi:Comprobante ... > ... </cfdi:Comprobante>'\\
]</pre>
<h2>Tipos de comprobante CFDI soportados</h2>\\
<p>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:</p>
<table>\\
<thead>\\
<tr>\\
<th>Valor</th>\\
<th>Tipo de comprobante</th>\\
<th>Descripción</th>\\
</tr>\\
</thead>\\
<tbody>\\
<tr>\\
<td><strong>I</strong></td>\\
<td>Ingreso</td>\\
<td>Comprobantes emitidos por la prestación de servicios, venta de productos, arrendamientos u operaciones donde existe un ingreso.</td>\\
</tr>\\
<tr>\\
<td><strong>E</strong></td>\\
<td>Egreso</td>\\
<td>Comprobantes utilizados para devoluciones, descuentos, bonificaciones o ajustes relacionados con ingresos previamente registrados.</td>\\
</tr>\\
<tr>\\
<td><strong>T</strong></td>\\
<td>Traslado</td>\\
<td>Comprobantes utilizados para acreditar el transporte o traslado de mercancías.</td>\\
</tr>\\
<tr>\\
<td><strong>N</strong></td>\\
<td>Nómina</td>\\
<td>Comprobantes fiscales digitales utilizados para registrar pagos de salarios y prestaciones a trabajadores.</td>\\
</tr>\\
<tr>\\
<td><strong>P</strong></td>\\
<td>Pago</td>\\
<td>Comprobantes utilizados para registrar la recepción de pagos relacionados con operaciones previamente facturadas.</td>\\
</tr>\\
</tbody>\\
</table>
<p><strong>Ejemplos de uso rápidos:</strong></p>\\
<ul>\\
<li><strong>Descargar CFDI de nómina:</strong> TipoComprobante=N</li>\\
<li><strong>Descargar facturas emitidas:</strong> TipoComprobante=I</li>\\
<li><strong>Descargar notas de crédito:</strong> TipoComprobante=E</li>\\
<li><strong>Descargar comprobantes de traslado:</strong> TipoComprobante=T</li>\\
<li><strong>Descargar complementos de pago:</strong> TipoComprobante=P</li>\\
</ul>
<p><strong>Consideraciones adicionales:</strong></p>\\
<ul>\\
<li>El valor enviado debe utilizar la letra correspondiente en mayúscula.</li>\\
<li>La consulta se realizará únicamente para el tipo de comprobante indicado.</li>\\
<li>Para descargar diferentes tipos de CFDI se debe realizar una solicitud independiente por cada valor.</li>\\
</ul>
</body>\\