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 objetoDateindicando 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ãotrue): Setrue, 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:
- Bem-sucedido (
CloseSessionResult.Successful): A sessão foi fechada corretamente. A propriedadedatacontém umTotalsCommonModelcom o resumo da sessão fechada (valores, contagem de transações, etc.). - 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
- Visualizar Totais e Relatórios: Consultando totais acumulados para sessões ou turnos específicos.
- Histórico de Transações: Buscando transações passadas específicas.