Getnet DocsGetnet Docs

Gestionar turnos y sesiones

Esta guía explica cómo gestionar los turnos operativos y las sesiones utilizando ShiftRepository y SessionRepository. Estas operaciones permiten segmentar los periodos de transacciones y liquidar los lotes con el host.

Abrir un turno

Los turnos son periodos operativos locales que permiten agrupar transacciones (p. ej., por empleado o momento del día). Para iniciar un nuevo turno, utiliza openShift.

Repositorio: ShiftRepository
Función: openShift

Parámetros:

  • number: Un entero que representa el número de turno.
  • date: El objeto Date que indica cuándo se abre el turno.

Ejemplo:

suspend fun startShift(shiftNumber: Int) {
    val result = shiftRepository.openShift(
        number = shiftNumber,
        date = Date() // Current time
    )

    when (result) {
        is RepositoryResult.Success -> {
            val isSuccess = result.data
            if (isSuccess) {
                println("✅ Shift $shiftNumber opened successfully")
            } else {
                println("❌ Failed to open shift")
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Error: ${result.type}")
        else -> {}
    }
}

Cierre de sesión

Cerrar una sesión (a menudo llamado “Fin de Día” o “Cierre de Lote”) finaliza el periodo actual y liquida las transacciones con el host de Getnet. Esta es una operación crítica: asegura que los pagos se procesen y los fondos se depositen correctamente.

Repositorio: SessionRepository
Función: closeSession

Parámetros:

  • wantBrandDetails (Opcional, por defecto true): Si es true, el resultado incluirá un desglose de los totales por marca de tarjeta (Visa, Mastercard, etc.).

Interpretar CloseSessionResult

La operación devuelve una interfaz sellada CloseSessionResult:

  1. Exitoso (CloseSessionResult.Successful): La sesión se cerró correctamente. La propiedad data contiene un TotalsCommonModel con el resumen de la sesión cerrada (importes, recuento de transacciones, etc.).
  2. Rechazado (CloseSessionResult.Rejected): El host rechazó la solicitud de cierre.

Ejemplo:

suspend fun closeDailySession() {
    val result = sessionRepository.closeSession(wantBrandDetails = true)

    when (result) {
        is RepositoryResult.Success -> {
            when (val sessionOutcome = result.data) {
                is CloseSessionResult.Successful -> {
                    val totals = sessionOutcome.data
                    println("✅ Session Closed. Total: ${totals.totalAmount}")
                }
                is CloseSessionResult.Rejected -> {
                    println("❌ Session Close Rejected by Host")
                }
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Error: ${result.type}")
        else -> {}
    }
}

Próximos pasos