Getnet DocsGetnet Docs

Gerenciar Turnos e Sessões

Este guia explica como gerenciar turnos operacionais e sessões utilizando o ShiftRepository e o SessionRepository. Estas operações permitem segmentar períodos de transação e realizar a conciliação de lotes com o host.

Abrindo um Turno

Os turnos são períodos operacionais locais que permitem agrupar transações (ex: por funcionário ou período do dia). Para iniciar um novo turno, use o método openShift.

Repositório: ShiftRepository
Função: openShift

Parâmetros:

  • number: Um número inteiro representando o número do turno.
  • date: O objeto Date indicando quando o turno foi aberto.

Exemplo:

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 -> {}
    }
}

Fechando uma Sessão

Fechar uma sessão (frequentemente chamado de “Fim de Dia” ou “Fechamento de Lote”) finaliza o período atual e liquida as transações com o host da Getnet. Esta é uma operação crítica: é ela que garante que os pagamentos sejam processados e os fundos sejam depositados.

Repositório: SessionRepository
Função: closeSession

Parâmetros:

  • enableBrandDetails (Opcional, padrão true): Se true, o resultado incluirá um detalhamento dos totais por bandeira de cartão (Visa, Mastercard, etc.).

Interpretando o CloseSessionResult

A operação retorna uma interface selada CloseSessionResult:

  1. Bem-sucedido (CloseSessionResult.Successful): A sessão foi fechada corretamente. A propriedade data contém um TotalsCommonModel com o resumo da sessão fechada (valores, contagem de transações, etc.).
  2. Rejeitado (CloseSessionResult.Rejected): O host rejeitou a solicitação de fechamento.

Exemplo:

suspend fun closeDailySession() {
    val result = sessionRepository.closeSession(enableBrandDetails = 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 Passos