# Inicializar la biblioteca

La inicialización es obligatoria y debe ejecutarse exactamente una vez cuando se inicia tu aplicación. Este proceso configura los componentes principales del TPVPC, detecta el PIN pad conectado y establece el contexto de comunicación necesario para todas las operaciones posteriores.

## La función `fnDllIniTpvpcLatente`

El punto de entrada para cualquier sesión de Get Central es la función `fnDllIniTpvpcLatente`. Esta función inicializa la capa de comunicación y debe ejecutarse antes de cualquier operación de pago, preautorización, confirmación o devolución. Si la inicialización es exitosa, la biblioteca permanece activa durante el ciclo de vida de la aplicación.

## Parámetros de inicialización

La llamada de inicialización requiere un conjunto fijo de parámetros. La tabla a continuación enumera los **nombres exactos de los parámetros** tal como los define la biblioteca, sin prefijos de ruta, junto con su propósito.

| Parámetro     | Tipo   | Requerido | Descripción                                                                                                |
| :------------ | :----- | :-------- | :--------------------------------------------------------------------------------------------------------- |
| `cComercio`   | String | Sí        | Número de comercio. La entidad facilita este dato.                                                         |
| `cTerminal`   | String | Sí        | Número de terminal. La entidad facilita este dato.                                                         |
| `cClaveFirma` | String | Sí        | Clave de firma del comercio. La entidad facilita este dato.                                                |
| `cConfPuerto` | String | No        | Parámetro opcional que indica la configuración de puerto. Para PIN pad de puerto serie, `COM<puerto>:,19200,N,8,1`. Para PIN pad USB depende del modelo: i6280 usa `USB,2816,25216,2,2`; i6550 usa `USB,2816,25936,2,2`. |
| `cVersion`    | String | No        | Parámetro opcional que indica la versión de protocolo a utilizar. Valores posibles: `5.1`, `6.1` u `8.1`. Varía según la versión de software del PIN pad. |

<Callout type="note">

Los parámetros `cConfPuerto` y `cVersion` son opcionales y normalmente deben dejarse vacíos a menos que la entidad indique explícitamente lo contrario.

</Callout>

## Ejemplo de implementación

El siguiente ejemplo muestra una implementación típica en C# de la llamada de inicialización. La aplicación debe verificar que el valor de retorno sea `0` antes de proceder con cualquier transacción.

```csharp
int result = fnDllIniTpvpcLatente(
    "99999999",     // cComercio
    "00000001",     // cTerminal
    "CLAVE123456",  // cClaveFirma
    "",             // cConfPuerto
    ""              // cVersion
);

if (result == 0)
{
    // Library initialized successfully
}
```

## Consideraciones importantes

La inicialización solo debe ejecutarse una vez por ciclo de vida de la aplicación. Repetir la llamada de inicialización sin cerrar correctamente la biblioteca puede provocar errores de comunicación o recursos bloqueados.

Si la función devuelve un valor distinto de `0`, la biblioteca no se ha inicializado. La aplicación debe evaluar el código de error devuelto y no debe intentar ninguna operación financiera hasta que la inicialización sea exitosa.

Un `-2` aquí significa que no se pudo cargar el XML con los datos de configuración, no un fallo de comunicación. Revisa los valores que pasaste y consulta los códigos de retorno por función en [Códigos de resultado y errores](/es/get-central/tpvpc-reference/result-codes-and-errors).

## Próximos pasos

Tras una inicialización exitosa, la aplicación puede comenzar a ejecutar operaciones financieras:

1. [Procesar un Pago en un Solo Paso](/es/get-central/tpvpc-payment-guides/process-a-single-step-payment)
2. [Manejar Códigos de Resultado y Errores](/es/get-central/tpvpc-reference/result-codes-and-errors)