From 8da7a9fdb4fabd37da1e39dd6a34987b39ac19c5 Mon Sep 17 00:00:00 2001 From: Lizandro Date: Sat, 18 Jul 2026 17:17:17 +0000 Subject: [PATCH] fix(pago): try/catch en PagoConfirmado.yaUsado/marcar por tabla faltante MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Si pagos_confirmados no existe en producción (migración pendiente), la excepción escapaba hasta handlePhoto y mostraba "Error analizando el comprobante". Safety catch permite que la confirmación proceda aunque la tabla no esté. Co-Authored-By: Claude Sonnet 4.6 --- app/Services/PagoValidadorService.php | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/app/Services/PagoValidadorService.php b/app/Services/PagoValidadorService.php index a0959a6..2a9fa12 100755 --- a/app/Services/PagoValidadorService.php +++ b/app/Services/PagoValidadorService.php @@ -75,9 +75,14 @@ class PagoValidadorService // ── 2. Hash único (anti-doble-uso) ───────────────────── $emailHash = sha1($body . $date); - if (PagoConfirmado::yaUsado($emailHash)) { - Log::info("[PagoValidador] Correo #{$i}: ya usado (hash={$emailHash})"); - return ['estado' => 'ya_usado', 'correo' => $datosCorreo, 'motivo' => 'correo_ya_aplicado']; + try { + if (PagoConfirmado::yaUsado($emailHash)) { + Log::info("[PagoValidador] Correo #{$i}: ya usado (hash={$emailHash})"); + return ['estado' => 'ya_usado', 'correo' => $datosCorreo, 'motivo' => 'correo_ya_aplicado']; + } + } catch (\Throwable $e) { + Log::warning('[PagoValidador] Error al verificar hash (tabla pagos_confirmados existe?): ' . $e->getMessage()); + // Continuar sin bloquear — el anti-duplicado no debe impedir confirmaciones } // ── 3. Fecha (mismo día) — solo si ambos tienen fecha ── @@ -110,13 +115,17 @@ class PagoValidadorService Log::info("[PagoValidador] Correo #{$i}: CONFIRMADO (remitente_coincide=" . ($coincideRemitente ? 'SI' : 'NO') . ")"); - PagoConfirmado::marcar($emailHash, [ - 'usuario_id' => $usuarioId, - 'valor' => $valorIA, - 'canal' => $canal, - 'banco' => $datosCorreo['banco'] ?? null, - 'referencia' => $datosPago['referencia'] ?? null, - ]); + try { + PagoConfirmado::marcar($emailHash, [ + 'usuario_id' => $usuarioId, + 'valor' => $valorIA, + 'canal' => $canal, + 'banco' => $datosCorreo['banco'] ?? null, + 'referencia' => $datosPago['referencia'] ?? null, + ]); + } catch (\Throwable $e) { + Log::warning('[PagoValidador] No se pudo marcar hash (tabla pagos_confirmados existe?): ' . $e->getMessage()); + } return [ 'estado' => 'confirmado',