/home/suroeste/public_html/payments.transportessuroeste.com/src/Services
Edit: /home/suroeste/public_html/payments.transportessuroeste.com/src/Services/ClientDatabaseService.php (4444B)
pdo !== null) {
return;
}
if (empty(CLIENT_DB_CONFIG['database']) || empty(CLIENT_DB_CONFIG['username'])) {
throw new \RuntimeException('Configuración de BD del cliente incompleta. Verifique CLIENT_DB_* en .env');
}
try {
$dsn = sprintf(
'mysql:host=%s;port=%d;dbname=%s;charset=%s',
CLIENT_DB_CONFIG['host'],
CLIENT_DB_CONFIG['port'],
CLIENT_DB_CONFIG['database'],
CLIENT_DB_CONFIG['charset']
);
$this->pdo = new PDO(
$dsn,
CLIENT_DB_CONFIG['username'],
CLIENT_DB_CONFIG['password'],
CLIENT_DB_CONFIG['options']
);
} catch (PDOException $e) {
LogService::error('client_db', 'Error conectando a BD del cliente', [
'error' => $e->getMessage(),
'host' => CLIENT_DB_CONFIG['host'],
'database' => CLIENT_DB_CONFIG['database']
]);
throw new \RuntimeException('No se pudo conectar a la BD del cliente: ' . $e->getMessage());
}
}
/**
* Actualizar el estado de pago en la tabla reservas_clientes
*
* Busca el registro por idreserva_cliente (que corresponde al ticket_reference
* recibido desde la API) y actualiza el campo estadopago con el resultado
* de la transacción.
*
* @param string $ticketReference El ticket_reference que corresponde a idreserva_cliente
* @param string $paymentStatus El estado del pago (approved, rejected, pending, failed, cancelled)
* @return bool True si se actualizó al menos un registro, false si no se encontró
*/
public function updatePaymentStatus(string $ticketReference, string $paymentStatus): bool
{
try {
$this->connect();
$stmt = $this->pdo->prepare(
"UPDATE reservas_clientes SET estadopago = :estado WHERE idpago = :id"
);
$stmt->bindValue(':estado', $paymentStatus, PDO::PARAM_STR);
$stmt->bindValue(':id', $ticketReference, PDO::PARAM_STR);
$stmt->execute();
$rowsAffected = $stmt->rowCount();
LogService::info('client_db', 'Estado de pago actualizado en BD del cliente', [
'ticket_reference' => $ticketReference,
'estadopago' => $paymentStatus,
'rows_affected' => $rowsAffected
]);
return $rowsAffected > 0;
} catch (PDOException $e) {
LogService::error('client_db', 'Error actualizando estado en BD del cliente', [
'ticket_reference' => $ticketReference,
'payment_status' => $paymentStatus,
'error' => $e->getMessage()
]);
return false;
} catch (\RuntimeException $e) {
LogService::error('client_db', 'Error de conexión BD del cliente', [
'ticket_reference' => $ticketReference,
'error' => $e->getMessage()
]);
return false;
}
}
}