Getnet DocsGetnet Docs

Crear una venta

La venta autoriza y captura el importe de la transacción en una sola operación. Este es el flujo estándar para transacciones en punto de venta donde el titular de la tarjeta está presente y el producto o servicio se proporciona inmediatamente.

Requisitos

Antes de poder procesar un pago, se deben completar los siguientes pasos del ciclo de vida:

  1. Configuración Global: El entorno y la licencia de la biblioteca deben estar configurados.
  2. Autenticación: Un inicio de sesión exitoso para obtener RedCLSTerminalData.
  3. Inicialización del PIN pad: El dispositivo físico debe estar conectado e inicializado (inicializarPinpad devolvió estado 0).

Paso 1: Preparar los datos de la transacción

El SDK utiliza la clase RedCLSOperativeWithCardData para definir los parámetros de la transacción. A diferencia de otros sistemas, el importe se pasa como una String con dos decimales (ej., \"10.00\").

import redcls.itpvpc.data.RedCLSOperativeWithCardData

// Definir el importe de la transacción y la referencia
val amount = "25.00"
val saleData = RedCLSOperativeWithCardData(amount).apply {
    this.invoice = "INV-123456" // Número de referencia opcional
}

Asegúrate de que la cadena del importe use un punto . como separador decimal y contenga exactamente dos posiciones decimales.


Paso 2: Ejecutar el pago

La transacción se realiza a través del método operativaConTarjeta de tu instancia de RedCLSPinPadManager. Esta operación es síncrona y maneja todo el flujo: detección de tarjeta, entrada de PIN (si corresponde) y autorización en línea.

// Esto debe ejecutarse en un hilo en segundo plano
Thread {
    try {
        val response = pinpadManager.operativaConTarjeta(saleData)

        if (response.status == 0) {
            val tx = response.transactionData
            if (tx.result == "Autorizada") {
                Log.i("GetMini", "¡Aprobado! Autorización: ${tx.autorizationNumber}")
            } else {
                Log.w("GetMini", "Denegado. Código: ${tx.responseCode}")
            }
        } else {
            Log.e("GetMini", "Error del SDK: ${response.status} - ${response.msgKO}")
        }
    } catch (e: Exception) {
        Log.e("GetMini", "Excepción de Pago: ${e.message}")
    }
}.start()

Paso 3: Manejar el resultado de la transacción

El objeto RedCLSTransactionData contiene toda la información necesaria para tus registros e impresión de recibos.

CampoDescripción
resultEl resultado de la autorización (ej., \"Autorizada\", \"Denegada\").
autorizationNumberEl código único proporcionado por el emisor (si se aprueba).
responseCodeEl código de autorización de la operación (si fue aceptada) o el código del motivo de denegación en caso contrario.
identifierRTSUn ID de referencia del SDK de 24 caracteres para la transacción.
orderEl número de pedido de la transacción, devuelto por el TPV PC para identificar la operación en el comercio/terminal.
isPinAuthenticatedIndica si el titular de la tarjeta fue verificado mediante PIN.
fun handleSuccess(tx: RedCLSTransactionData) {
    when (tx.result) {
        "Autorizada" -> {
            Log.i("GetMini", "¡Aprobado! Autorización: ${tx.autorizationNumber}")
            // Proceder a imprimir/mostrar recibo
        }
        "Denegada" -> {
            Log.w("GetMini", "Transacción Denegada. Código: ${tx.responseCode}")
        }
    }
}

Solución de problemas comunes de pago

  • Tiempo de Espera Agotado: El PIN pad puede agotar el tiempo de espera si el usuario tarda demasiado en presentar la tarjeta o ingresar el PIN. Asegúrate de que el dispositivo sea accesible y que la batería sea suficiente.
  • Tarjeta Denegada: Si el result es “Denegada”, el titular de la tarjeta debe contactar a su banco. Puedes encontrar el código de motivo específico en tx.responseCode.
  • PIN pad Perdido: Si la conexión se cae durante el pago, el método devolverá un estado de error. Debes reinicializar la conexión antes de reintentar.

Siempre almacena el identifierRTS, el order y el importe (amount) de la transacción. Los necesitarás si tienes que procesar una Devolución más tarde.

Próximos pasos

Después de dominar la venta, puedes explorar tipos de transacciones avanzadas: