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
@@ -207,28 +207,47 @@ class TelegramBotService
|
||||
);
|
||||
$monto = number_format($datosPago['valor'] ?? 0);
|
||||
$ref = $datosPago['referencia'] ?? 'N/A';
|
||||
$valor = (int) ($datosPago['valor'] ?? 0);
|
||||
|
||||
$texto = "📊 *Resultado del análisis:*\n\n";
|
||||
$texto .= "Banco: " . ($datosPago['banco'] ?? 'N/A') . "\n";
|
||||
$texto .= "Monto: *\$$monto*\n";
|
||||
$texto .= "Referencia: `{$ref}`\n";
|
||||
if ($datosPago['fecha'] ?? null) {
|
||||
$texto .= "Fecha: " . $datosPago['fecha'];
|
||||
if ($datosPago['hora'] ?? null) {
|
||||
$texto .= " " . $datosPago['hora'];
|
||||
}
|
||||
$texto .= "\n";
|
||||
}
|
||||
|
||||
if ($resultado['estado'] === 'confirmado') {
|
||||
$texto .= "Estado: *✅ Confirmado*";
|
||||
$texto .= "\nEstado: *✅ Confirmado por correo*";
|
||||
$buttons = [
|
||||
[['text' => "✅ Aplicar recarga de \$$monto", 'callback_data' => 'pay_apply|' . ($datosPago['valor'] ?? 0) . '|' . $ref]],
|
||||
[['text' => "✅ Aplicar recarga de \$$monto", 'callback_data' => 'pay_apply|' . $valor . '|' . $ref]],
|
||||
[['text' => '🔙 Menú principal', 'callback_data' => 'menu']],
|
||||
];
|
||||
} elseif ($resultado['estado'] === 'ya_usado') {
|
||||
$texto .= "Estado: *⛔ Comprobante ya utilizado*\nEste pago ya fue registrado por otro usuario.";
|
||||
$texto .= "\nEstado: *⛔ Comprobante ya utilizado*\nEste pago ya fue registrado.";
|
||||
$buttons = [
|
||||
[['text' => '🧑 Hablar con asesor', 'callback_data' => 'agent']],
|
||||
[['text' => '🔙 Menú principal', 'callback_data' => 'menu']],
|
||||
];
|
||||
} else {
|
||||
$texto .= "Estado: *⚠️ No confirmado*";
|
||||
$motivo = 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 => '📧 No se pudo verificar',
|
||||
};
|
||||
$texto .= "\nEstado: *⚠️ No confirmado automáticamente*\n_{$motivo}_";
|
||||
|
||||
// Ofrecer aplicar manualmente si el comprobante fue leído correctamente
|
||||
$buttons = [
|
||||
[['text' => "✅ Aplicar \$$monto de todas formas", 'callback_data' => 'pay_apply|' . $valor . '|' . $ref]],
|
||||
[['text' => '🧑 Hablar con asesor', 'callback_data' => 'agent']],
|
||||
[['text' => '🔙 Menú principal', 'callback_data' => 'menu']],
|
||||
[['text' => '🔙 Menú principal', 'callback_data' => 'menu']],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user