0, "error" => "Ok", "msj" => "Todo correcto." ]; $error = false; $msj = ""; $fecha = new DateTime(); $fecha = $fecha->format("Y-m-d H:i:s"); $dir = explode("/",$file)[0]; if (!is_dir($dir)) { $error = true; $msj = $msj . "El directorio no existe; "; } if (is_writable($file.".txt")) { $escritura = file_put_contents($file.".txt","\nData: ".$data."\nDesde: ".$urlFrom.", Action: ".$action.", Fecha: ".$fecha.".\n", FILE_APPEND); } else { $error = true; $msj = $msj . "El archivo no es escribible; "; } // $escritura = file_put_contents($file.".txt","\nData: ".$data."\nDesde: ".$urlFrom.", Action: ".$action.", Fecha: ".$fecha.".\n", FILE_APPEND); if ($escritura === false) { $error = true; $msj = $msj . "Error al escribir en el archivo; "; } if($error==true){ $respuesta->codigo = 500; $respuesta->error = "Error"; $respuesta->msj = $msj; } $respuesta->info = [$file, $data, $urlFrom, $action]; return $respuesta; } function guardarArchivoPDF($base64_string, $nombre_archivo) { $respuesta = (object) [ "codigo" => 0, "error" => "Ok", "msj" => "Todo correcto." ]; // Decodificar el string base64 $base64_decoded = base64_decode($base64_string, true); // true para validar base64 válido if ($base64_decoded === false) { // Error de decodificación base64 $respuesta->codigo = 1; $respuesta->error = "Error"; $respuesta->msj = "Error al decodificar el string base64. El formato no es válido."; return $respuesta; } // Verificar si la ruta del archivo es válida $directorio = dirname($nombre_archivo); if (!is_dir($directorio)) { // Si el directorio no existe, intentamos crearlo if (!mkdir($directorio, 0777, true)) { $respuesta->codigo = 2; $respuesta->error = "Error"; $respuesta->msj = "No se puede crear el directorio: $directorio."; return $respuesta; } } $disk_free = disk_free_space($directorio); $file_size = strlen($base64_decoded); if($disk_free < $file_size){ $respuesta->codigo = 5; $respuesta->error = "Error"; $respuesta->msj = "No hay suficiente espacio en el disco para guardar el PDF."; return $respuesta; } // Intentar escribir el archivo $resultado = file_put_contents($nombre_archivo, $base64_decoded); if ($resultado === false) { // Error al escribir el archivo $error = error_get_last(); $respuesta->codigo = 3; $respuesta->error = "Error"; $respuesta->msj = "No se pudo escribir el archivo: $nombre_archivo. Error: " . $error['message']; return $respuesta; } // Verificar si el archivo se escribió correctamente (verificando su tamaño) if (filesize($nombre_archivo) === 0) { $respuesta->codigo = 4; $respuesta->error = "Error"; $respuesta->msj = "El archivo $nombre_archivo está vacío después de escribir."; return $respuesta; } // Si todo salió bien, devolver true return $respuesta; } function savePDF($file, $data){ if(is_array($data)){ $data = json_encode($data, JSON_UNESCAPED_UNICODE); } if(is_object($data)){ $data = json_encode($data, JSON_UNESCAPED_UNICODE); } $respuesta = (object) [ "codigo" => 0, "error" => "Ok", "msj" => "Todo correcto." ]; $error = false; $msj = ""; $fecha = new DateTime(); $fecha = $fecha->format("Y-m-d H:i:s"); $dir = explode("/",$file)[0]; if (!is_dir($dir)) { $error = true; $msj = $msj . "El directorio no existe; "; } return guardarArchivoPDF($data, $file); $pdf = base64_decode($data); $escritura = file_put_contents($file.".pdf",$pdf); $respuesta->info = [$file, $data]; return $respuesta; if (is_writable($file)) { $pdf = base64_decode($data); $escritura = file_put_contents($file.".pdf",$pdf); } else { $error = true; $msj = $msj . "El archivo no es escribible; "; } // $escritura = file_put_contents($file.".txt","\nData: ".$data."\nDesde: ".$urlFrom.", Action: ".$action.", Fecha: ".$fecha.".\n", FILE_APPEND); if ($escritura === false) { $error = true; $msj = $msj . "Error al escribir en el archivo; "; } if($error==true){ $respuesta->codigo = 500; $respuesta->error = "Error"; $respuesta->msj = $msj; } $respuesta->info = [$file, $data]; return $respuesta; } function saveQR($data, $invoice_number, $parking){ $respuesta = (object) [ "codigo" => 0, "error" => "Ok", "msj" => "Todo correcto." ]; $fecha = new DateTime(); $hoy = $fecha->format('Y-m-d_H:i:s'); $nameFile = $invoice_number."-".$hoy; include_once "phpqrcode-master/qrlib.php"; //file path // require $_SERVER['DOCUMENT_ROOT'] . "/iparkings/orm_pcs/terminal_web/fiserv/pinpad.php"; // $file = "../../terminal_autopago_fiserv_pdfs/$nameFile.png"; $directorio = $_SERVER['DOCUMENT_ROOT'] . "/iparkings/terminal_autopago_fiserv_pdfs/idParking_$parking"; // Define la ruta del directorio // Comprobar si el directorio ya existe if (!is_dir($directorio)) { // Si no existe, crear el directorio if (!mkdir($directorio, 0777, true)) { $respuesta->codigo = 500; $respuesta->error = "Error."; $respuesta->msj = "No se pudo crear el directorio $directorio."; return $respuesta; } } $file = $_SERVER['DOCUMENT_ROOT'] . "/iparkings/terminal_autopago_fiserv_pdfs/idParking_$parking/$nameFile.png"; $urlQR = "http://34.57.109.122/iparkings/terminal_autopago_fiserv_pdfs/idParking_$parking/$nameFile.png"; // QRcode::png($token, $file,'H',20,5); // sleep(2); $maxRetries = 20; $retryDelay = 1; // En segundos $isFileCreated = false; if (file_exists($file) && filesize($file) > 0) { $isFileCreated = true; } else{ QRcode::png($data, $file,'H',20,5); // sleep(2); for ($i = 0; $i < $maxRetries; $i++) { if (file_exists($file) && filesize($file) > 0) { $isFileCreated = true; break; } sleep($retryDelay); } } if(!$isFileCreated==true){ $respuesta->codigo = 500; $respuesta->error = "Error."; $respuesta->msj = "No se pudo generar el QR."; return $respuesta; } $respuesta->URL = $urlQR; return $respuesta; } ?>