Getnet DocsGetnet Docs

Administra los turnos de operador

Esta guía te muestra cómo administrar los turnos de un terminal con el deeplink Shift. Configuras la cantidad de turnos disponibles, pasas al siguiente turno y consultas cuántos hay configurados.

Cómo funciona

Las tres operaciones comparten el URI getnet://payment/v1/shift y se seleccionan con el parámetro shiftOperation:

shiftOperationAcciónNotas
"1"Configura la cantidad de turnos disponiblesEnvía la cantidad en numberOfShifts.
"2"Cambia al siguiente turnoNo necesita parámetros extra.
"3"Obtiene la cantidad actual de turnosLa respuesta agrega totalOfShifts.

El terminal ajusta el flujo según lo que envías. Si un valor obligatorio ya viene en la solicitud, el terminal omite la pantalla de ingreso correspondiente. Si falta, se lo pide al operador.

Antes de comenzar

La Getnet Payment App debe estar instalada en el terminal y tu aplicación debe poder iniciarla, como se describe en Arquitectura y flujo.

Paso 1: Envía el Intent de Shift

Crea el Intent con la operación que necesitas. El siguiente ejemplo configura dos turnos y asume la responsabilidad de impresión:

private val REQUEST_CODE = 1001

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/shift"))
    intent.putExtra("shiftOperation", "1")
    intent.putExtra("numberOfShifts", "2")
    intent.putExtra("allowPrintCurrentTransaction", "false")
    startActivityForResult(intent, REQUEST_CODE)
}

El parámetro opcional skipConfirmation oculta la pantalla de confirmación del cambio de turno. El parámetro allowPrintCurrentTransaction sigue las reglas de Responsabilidad de impresión.

Paso 2: Procesa la respuesta

Lee result y resultDetails del Intent devuelto. Para shiftOperation "3", lee también totalOfShifts:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        val extras = data?.extras
        val result = extras?.getString("result")
        val resultDetails = extras?.getString("resultDetails")
        val totalOfShifts = extras?.getString("totalOfShifts")
    }
}

Una configuración o un cambio exitoso devuelve result 0 con resultDetails APPROVED. La operación de consulta devuelve el mismo par más la cantidad de turnos:

{
  "result": 0,
  "resultDetails": "APPROVED",
  "totalOfShifts": "3"
}

totalOfShifts solo está presente cuando shiftOperation es "3".

Siguientes pasos