Getnet DocsGetnet Docs

TPVPC: Integración Java

Las aplicaciones de Punto de Venta (POS) basadas en Java se integran con Get Central a través de un wrapper Java nativo (JAR) que expone las mismas funciones principales que la biblioteca nativa, al tiempo que abstrae los detalles de la comunicación serie de bajo nivel. Esta guía describe el modelo de integración Java soportado, las dependencias requeridas y la forma correcta de inicializar y ejecutar operaciones de pago en un entorno JVM.

Esta guía se aplica a TpvpcImplantado.

Requisitos

Antes de comenzar, asegúrate de tener disponibles los siguientes componentes:

  • TpvpcImplantado.jar (wrapper Java proporcionado con Get Central)

  • Una biblioteca de comunicación serie soportada, dependiendo de tu entorno:

    • jSSC (recomendado para entornos Java modernos)
    • RXTX (opción heredada, requiere binarios nativos)
  • Bibliotecas nativas disponibles en el library path de la JVM

  • Un sistema operativo soportado con acceso al dispositivo PIN pad

En sistemas basados en Unix, el usuario que ejecuta la JVM debe tener permisos para acceder al dispositivo de puerto serie.

Proceso de integración Java

La integración Java refleja la API nativa de TpvpcImplantado. Las solicitudes se ejecutan mediante llamadas a métodos fuertemente tipados, y el XML se devuelve únicamente como respuesta, nunca se envía como solicitud.

Paso 1: Inicializar la comunicación

Antes de ejecutar cualquier transacción, el canal de comunicación debe inicializarse exactamente una vez durante el ciclo de vida de la aplicación.

Parámetros de inicialización

ParámetroTipoRequeridoDescripción
cComercioStringSíNúmero de comercio. La entidad facilita este dato.
cTerminalStringSíNúmero de terminal. La entidad facilita este dato.
cClaveFirmaStringSíClave de firma del comercio. La entidad facilita este dato.
cConfPuertoStringNoParámetro opcional que indica la configuración de puerto. Déjalo en blanco para usar la local.
cVersionStringNoParámetro opcional que indica la versión de protocolo: 5.1, 6.1 u 8.1.
import es.sermepa.TpvpcImplantado;

public class PaymentService {
    private TpvpcImplantado tpv;

    public void initialize() {
        tpv = new TpvpcImplantado();
        int result = tpv.fnDllIniTpvpcLatente(
            "99999999",
            "00000001",
            "CLAVE123456",
            "",
            ""
        );

        if (result != 0) {
            throw new IllegalStateException("Initialization failed: " + result);
        }
    }
}

Un valor de retorno de 0 indica que el canal de comunicación se ha inicializado correctamente.

Paso 2: Ejecutar una operación de pago

Una vez inicializada, se puede ejecutar un pago estándar con tarjeta presente o una preautorización utilizando el PIN pad.

Parámetros de pago

ParámetroTipoRequeridoDescripción
cImporteStringSíImporte de la transacción en formato XXXXXXXXX.XX.
cFacturaStringSíReferencia de compra. Este valor lo puede especificar el comercio.
cTipoOperStringSíTipo de operación: PAGO o PREAUTORIZACION.
iTamMaxRespintSíTamaño máximo del buffer de respuesta (mínimo 8192).
public String executePayment() {
    int bufferSize = 8192;
    String xmlResponse = tpv.fnDllOperPinPad(
        "1.00",
        "TEST0001",
        "PAGO",
        bufferSize
    );

    return xmlResponse;
}

El método devuelve una cadena XML que contiene el resultado de la transacción.

Paso 3: Validar el resultado de la transacción

El código de retorno entero indica solo si la operación se ejecutó correctamente a nivel técnico. El resultado financiero debe determinarse analizando la respuesta XML.

Una transacción se considera autorizada solo si la respuesta contiene:

<estado>F</estado>
<resultado>Autorizada</resultado>

Cualquier otro resultado debe tratarse como una transacción denegada.

Paso 4: Finalizar la comunicación

Cuando la aplicación ya no necesite realizar operaciones de pago, el canal de comunicación debe cerrarse para liberar los recursos del sistema.

public void shutdown() {
    tpv.fnDllParaTpvpcLatente();
}

Próximos pasos

Después de completar la integración en Java, puedes continuar con implementaciones adicionales: