diff --git a/app/Services/PagoValidadorService.php b/app/Services/PagoValidadorService.php index f46014b..e56abf5 100755 --- a/app/Services/PagoValidadorService.php +++ b/app/Services/PagoValidadorService.php @@ -38,6 +38,8 @@ class PagoValidadorService Log::info('[PagoValidador] Buscando: valor=' . $valorIA . ' fecha=' . $fechaIA . ' hora=' . $horaIA . ' llave=' . $llaveIA); + $hayYaUsado = false; // email que coincide en todo pero ya fue usado + foreach ($correos as $i => $correo) { $fuera = $correo['fuera_de_ventana'] ?? false; $from = $correo['from'] ?? ''; @@ -103,8 +105,9 @@ class PagoValidadorService try { if (PagoConfirmado::yaUsado($emailHash)) { - Log::info("[PagoValidador] Correo #{$i}: ya usado (hash={$emailHash})"); - return ['estado' => 'ya_usado', 'correo' => $datosCorreo, 'motivo' => 'correo_ya_aplicado']; + Log::info("[PagoValidador] Correo #{$i}: ya usado (hash={$emailHash}), buscando siguiente"); + $hayYaUsado = true; + continue; // seguir buscando: otro usuario puede tener un email fresco del mismo monto } } catch (\Throwable $e) { // Falla cerrado: si no se puede verificar el anti-duplicado, no confirmar @@ -138,6 +141,11 @@ class PagoValidadorService ]; } + if ($hayYaUsado) { + Log::info('[PagoValidador] Todos los emails coincidentes ya fueron usados'); + return ['estado' => 'ya_usado', 'correo' => null, 'motivo' => 'correo_ya_aplicado']; + } + Log::info('[PagoValidador] Ningún correo coincidió con los criterios'); return ['estado' => 'no_encontrado', 'correo' => null, 'motivo' => 'sin_coincidencia', 'emails_revisados' => count($correos)]; }