Show validation failure reason and allow manual payment application
When email validation fails (IMAP disabled, no emails, no match), show the specific reason instead of a generic "No confirmado". Also add a manual "Aplicar de todas formas" button so the user isn't stuck — they can still apply the recharge after visually verifying the receipt. Also show banco/fecha/hora in the Telegram analysis result for context. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
b26f6f1130
commit
6c0396d3c0
@@ -480,26 +480,47 @@ class PublicChat extends Component
|
||||
return;
|
||||
}
|
||||
|
||||
$resultado = app(\App\Services\PagoValidadorService::class)->validar($datosPago);
|
||||
$resultado = app(\App\Services\PagoValidadorService::class)->validar(
|
||||
$datosPago, $this->userId, $this->nombreUsuario, 'web'
|
||||
);
|
||||
|
||||
$monto = (int) ($datosPago['valor'] ?? 0);
|
||||
$botones = [];
|
||||
|
||||
if ($resultado['estado'] === 'confirmado') {
|
||||
$botones[] = [
|
||||
'label' => 'Aplicar recarga de $' . number_format($datosPago['valor'] ?? 0),
|
||||
'label' => 'Aplicar recarga de $' . number_format($monto),
|
||||
'action' => 'pago.aplicar',
|
||||
'data' => ['monto' => $datosPago['valor'], 'referencia' => $datosPago['referencia'] ?? null],
|
||||
'data' => ['monto' => $monto, 'referencia' => $datosPago['referencia'] ?? null],
|
||||
];
|
||||
} elseif ($resultado['estado'] !== 'ya_usado') {
|
||||
// No confirmado: ofrecer aplicar manualmente
|
||||
$botones[] = [
|
||||
'label' => 'Aplicar $' . number_format($monto) . ' (manual)',
|
||||
'action' => 'pago.aplicar',
|
||||
'data' => ['monto' => $monto, 'referencia' => $datosPago['referencia'] ?? null],
|
||||
];
|
||||
}
|
||||
|
||||
$botones[] = ['label' => 'Hablar con asesor', 'action' => 'asesor.solicitar', 'data' => []];
|
||||
$botones[] = ['label' => '<- Menu', 'action' => 'menu.principal', 'data' => []];
|
||||
|
||||
$motivoTexto = match ($resultado['motivo'] ?? '') {
|
||||
'correo_deshabilitado' => 'Verificación por correo no configurada',
|
||||
'error_imap' => 'Error al leer correos IMAP',
|
||||
'sin_correos' => 'Sin correos recientes en bandeja',
|
||||
'sin_coincidencia' => 'Ningún correo coincide con este monto/fecha',
|
||||
default => null,
|
||||
};
|
||||
|
||||
ChatMessage::create([
|
||||
'conversation_id' => $this->convId,
|
||||
'tipo' => 'bot',
|
||||
'tipo_ui' => 'validacion',
|
||||
'contenido' => 'Resultado del analisis:',
|
||||
'payload' => [
|
||||
'estado' => $resultado['estado'],
|
||||
'estado' => $resultado['estado'],
|
||||
'motivo' => $motivoTexto,
|
||||
'ia_datos' => $datosPago,
|
||||
'botones' => $botones,
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user