# TPVPC: Integración JavaScript

Las aplicaciones de Punto de Venta (POS) basadas en web se integran con Get Central a través del **Servicio Local** (Local Service), que actúa como un puente seguro entre el entorno del navegador y el TPVPC nativo. Esta guía describe el modelo de integración soportado y la interacción basada en eventos requerida para las implementaciones basadas en navegador.

Esta guía se aplica a **TpvpcImplantado**.

## Requisitos

Antes de comenzar, asegúrate de tener:

* **Servicio Local de Get Central** instalado y en ejecución en la máquina cliente
* La biblioteca **`tpvpc-impl.js`** disponible para tu aplicación web
* Acceso de red al endpoint del Servicio Local

El Servicio Local expone endpoints HTTP y HTTPS en puertos locales predefinidos, dependiendo de la instalación y configuración.

<Callout type="warning">

Al utilizar HTTPS, el Servicio Local puede depender de un certificado generado localmente. El navegador debe confiar en este certificado para que las solicitudes se procesen con éxito.

</Callout>

## Proceso de integración JavaScript

La integración JavaScript es asíncrona y basada en eventos. Toda la comunicación con el TPVPC se realiza a través de un objeto de integración global expuesto por el Servicio Local.

### Paso 1: Suscribirse a eventos del dispositivo y de la transacción

Como las llamadas del navegador no son bloqueantes, las aplicaciones deben suscribirse a eventos para rastrear el ciclo de vida de la transacción y responder a las solicitudes de interacción del dispositivo.

El Servicio Local define los nombres de los eventos y los payloads, y estos pueden variar según la versión. Las aplicaciones deben estar preparadas para manejar múltiples notificaciones de eventos durante una sola transacción.

```javascript
function handleEvent(eventData) {
    console.log("Device event:", eventData);
}

// Example event subscriptions
tpvpcImpl.subscribeEvent("pinpadImplantadoEvent_1", handleEvent);
tpvpcImpl.subscribeEvent("pinpadImplantadoEvent_3", handleEvent);
```

<Callout type="note">

Los identificadores de eventos son específicos de la integración y no deben ser programados de forma rígida (hardcoded) sin consultar la documentación del Servicio Local para la versión instalada.

</Callout>

### Paso 2: Ejecutar funciones del TPVPC

Las operaciones se ejecutan invocando funciones del TPVPC a través del Servicio Local. Las solicitudes se reenvían de forma asíncrona y los resultados se devuelven mediante la función de retorno `OnResponse`.

No se debe inferir ninguna lógica financiera de los eventos intermedios. El resultado de la transacción debe determinarse solo después de recibir la respuesta final.

```javascript
tpvpcImpl.execFnDll(
    "fnDllOperPinPad",
    ["1.00", "TEST0001", "PAGO"],
    function (response) {
        if (response && response.Response === 0) {
            console.log("Transaction completed");
            console.log(response.Result);
        }
    }
);
```

La respuesta XML devuelta en `response.Result` debe analizarse para determinar el resultado financiero de la operación.

### Paso 3: Validar el resultado de la transacción

La transacción se autoriza solo si la respuesta XML contiene:

```xml
<estado>F</estado>
<resultado>Autorizada</resultado>
```

Cualquier otro resultado indica que la transacción fue denegada, independientemente del estado de la ejecución técnica.

## Próximos pasos

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

* Para procesar pagos estándar, consulta la guía [Procesar un Pago en un Solo Paso](/es/get-central/tpvpc-payment-guides/process-a-single-step-payment).
* Para obtener detalles sobre cómo generar e imprimir recibos desde el navegador, consulta la documentación [Generar e Imprimir Recibos](/es/get-central/tpvpc-payment-guides/generate-and-print-receipts).
* Para implementar modelos de suscripción o lógica de token recurrente, consulta la guía [Gestionar Pagos Recurrentes](/es/get-central/tpvpc-payment-guides/handle-recurring-payments).
* Para obtener una referencia completa de los códigos de salida técnicos y los logs de solución de problemas, consulta la documentación de [Códigos de Resultado y Errores](/es/get-central/tpvpc-reference/result-codes-and-errors) y [Logs y Solución de Problemas](/es/get-central/tpvpc-reference/logs-and-troubleshooting).