$secretKey, 'response' => $captchaResponse ]; $options = [ 'http' => [ 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data) ] ]; $context = stream_context_create($options); $result = file_get_contents($verifyUrl, false, $context); $response = json_decode($result); if (!$response->success) { die("❌ Error de verificación reCAPTCHA."); } $conn = getConnection(); $empresa = encrypt(trim($_POST['company_name'] ?? '')); $rfc = strtoupper(encrypt(trim($_POST['rfc'] ?? ''))); $email = trim($_POST['email'] ?? ''); $telefono = trim($_POST['phone'] ?? ''); $archivo = $_FILES['opinion_file']; // Validar RFC (12 o 13 caracteres con formato correcto) if (!preg_match('/^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$/', strtoupper($_POST['rfc'] ?? ''))) { die("❌ El RFC no tiene un formato válido."); } // Validar email (solo minúsculas, sin caracteres especiales fuera del estándar) if (!preg_match('/^[a-z0-9._+-]+@[a-z0-9.-]+\.[a-z]{2,}$/', $email)) { die("❌ No es una dirección de correo válida."); } // Validar teléfono (formato nacional: 3 dígitos + espacio + 7 dígitos) if (!preg_match('/^\d{3}\s\d{7}$/', $telefono)) { die("❌ El número de teléfono no tiene un formato válido. Ejemplo: 123 4567890"); } // Validar archivo if ($archivo['error'] !== 0 || pathinfo($archivo['name'], PATHINFO_EXTENSION) !== 'pdf') { die("❌ Archivo inválido. Solo se permiten PDFs."); } // Guardar archivo $nombreArchivo = uniqid() . '_' . basename($archivo['name']); $rutaDestino = __DIR__ . '/../../storage/opiniones/' . $nombreArchivo; move_uploaded_file($archivo['tmp_name'], $rutaDestino); // Insertar en la base de datos $sql = "INSERT INTO solicitudes_importadores (company_name, rfc, email, phone, opinion_file, request_status, request_date) VALUES (?, ?, ?, ?, ?, 'pending', GETDATE())"; $params = [$empresa, $rfc, $email, $telefono, $nombreArchivo]; $stmt = sqlsrv_query($conn, $sql, $params); if ($stmt === false) { die(print_r(sqlsrv_errors(), true)); } $mail = new PHPMailer(true); try { // Configuración SMTP $mail->isSMTP(); $mail->Host = 'secure.emailsrvr.com'; $mail->SMTPAuth = true; $mail->Username = 'noreply@aduanasoft.com.mx'; $mail->Password = $_ENV['SMTP_PASS']; // desde el .env $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; // Correo remitente y destinatario $mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | AduanaSoft'); $mail->addAddress($email); // destinatario principal // Formato y contenido $mail->CharSet = 'UTF-8'; $mail->isHTML(true); $mail->Subject = 'Confirmación de solicitud de registro | SIIH'; $fechaRegistro = date('d/m/Y H:i'); // Consulta configuración institucional $sqlConf = "SELECT TOP 1 * FROM configuracion_sistema"; $stmtConf = sqlsrv_query($conn, $sqlConf); $conf = sqlsrv_fetch_array($stmtConf, SQLSRV_FETCH_ASSOC); $nombrePlataforma = $conf['nombre_plataforma'] ?? 'Sistema Integral para Importadores de Hidrocarburos'; $siglas = $conf['siglas'] ?? 'SIIH'; $logoUrl = $conf['logo_url'] ?? 'assets/img/logo_siih.png'; $color1 = explode(',', $conf['colores_primarios'] ?? '#003366,#0055A5')[0]; $color2 = explode(',', $conf['colores_primarios'] ?? '#003366,#0055A5')[1]; $mail->Body = "
Logo $siglas

Confirmación de Registro

¡Hola!

Tu solicitud de registro ha sido recibida exitosamente en $nombrePlataforma.


📋 Empresa: " . htmlspecialchars($_POST['company_name']) . "

📞 Teléfono: " . htmlspecialchars($telefono) . "

🕓 Fecha de registro: $fechaRegistro


Un agente aduanal revisará tu información y te notificará por este medio cuando tu solicitud sea aprobada.

Por favor, mantente atento a tu correo (y revisa también tu carpeta de spam o promociones).

Este es un mensaje automático enviado por el sistema de registro de importadores.

© " . date('Y') . " $siglas · Desarrollado por AduanaSoft
"; $mail->send(); } catch (Exception $e) { error_log("Error al enviar correo: {$mail->ErrorInfo}"); } include __DIR__ . '/../../views/registro/gracias.php'; }