# Slim Pack: Inicio rápido: Tu primera transacción

Esta guía de inicio rápido te guía en la realización de tu **primer pago de prueba** utilizando Get Central. Al final de este tutorial, habrás:

Esta guía se aplica a **Slim Pack**.

* inicializado el TPVPC,
* ejecutado una operación de pago usando `PAGO`, y
* validado el resultado de la transacción utilizando la respuesta XML.

Esta guía se centra estrictamente en el **flujo mínimo**, sin cubrir escenarios avanzados como devoluciones, preautorizaciones o pagos recurrentes.

---

## Requisitos

Antes de comenzar, asegúrate de cumplir con los siguientes requisitos previos:

* **Get Central** (TPVPC) instalado en una estación de trabajo soportada
* Hardware **PIN pad** conectado y reconocido por el sistema operativo
* **Credenciales de prueba** (`cComercio`, `cTerminal`, `cClaveFirma`) proporcionadas por tu entidad

<Callout type="note">

Algunas instalaciones soportan entornos de simulación o prueba. La disponibilidad depende de las credenciales y la configuración proporcionadas por la entidad.

</Callout>

---

## Proceso de la primera transacción

La primera transacción consta de tres pasos obligatorios:

1. Inicializar el TPVPC
2. Ejecutar una operación de pago (`PAGO`)
3. Validar el resultado de la transacción

---

### Paso 1: Inicializar el TPVPC

La inicialización debe realizarse **una vez por ciclo de vida de la aplicación** antes de ejecutar cualquier operación. Una inicialización exitosa prepara la comunicación con el PIN pad y habilita la ejecución de pagos.

| 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        | Puerto de comunicación. Si está vacío, el valor se carga desde la configuración local.        |
| `cVersion`    | String | No        | Versión del protocolo: `5.1`, `6.1` u `8.1`. Si está vacío, se usa la configurada.            |

A continuación, se muestra un ejemplo de cómo inicializar el TPVPC:

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

if (result != 0)
{
    // Initialization failed. Do not proceed.
}
```

Un valor de retorno de `0` indica que el TPVPC está listo para operar. Cualquier otro valor indica un error técnico.

---

### Paso 2: Ejecutar un pago de prueba (`PAGO`)

Una vez que la inicialización es exitosa, puedes ejecutar una operación de pago utilizando `cTipoOper = "PAGO"`. Esta operación realiza un pago estándar con tarjeta presente y captura los fondos inmediatamente.

| Parámetro   | Tipo   | Requerido | Descripción                                                                                |
| ----------- | ------ | --------- | ------------------------------------------------------------------------------------------ |
| `cImporte`  | String | Sí        | Importe de la transacción en formato decimal `XXXXXXXXX.XX` (por ejemplo, `1.00`).         |
| `cFactura`  | String | Sí        | Referencia de compra. Cadena alfanumérica que el comercio usa para asociar la venta.     |
| `cTipoOper` | String | Sí        | Debe establecerse en `PAGO`.                                                               |

<Callout type="warning">

La moneda está determinada por la configuración del terminal y **no** se pasa como parámetro en operaciones de pago con tarjeta presente.

</Callout>

A continuación, se muestra un ejemplo de cómo ejecutar una operación de pago:

```csharp
StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperPinPad(
    "1.00",        // cImporte
    "TEST0001",    // cFactura
    "PAGO",        // cTipoOper
    xmlResponse,
    xmlResponse.Capacity
);

if (result != 0)
{
    // Execution failed. Handle technical error.
}
```

Al iniciar la operación, el PIN pad solicita al titular de la tarjeta que inserte, deslice o acerque la tarjeta. Una vez completada la operación, se rellena el buffer de respuesta XML.

---

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

Tras la ejecución, se debe procesar la respuesta XML para determinar si el pago fue autorizado.

| Etiqueta XML        | Tipo   | Descripción                                                                 |
| ------------------- | ------ | --------------------------------------------------------------------------- |
| `<estado>`          | String | Estado de la ejecución. Las operaciones finalizadas usan el valor `F`.      |
| `<resultado>`       | String | Resultado financiero (`Autorizada` o `Denegada`).                           |
| `<codigoRespuesta>` | String | Código de autorización o respuesta devuelto por el host.                    |
| `<pedido>`          | String | Número de pedido devuelto por el TPVPC. Es el valor que necesitas para una devolución referenciada. |

La transacción debe considerarse **AUTORIZADA** solo si el XML contiene:

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

Cualquier otra combinación debe tratarse como **DENEGADA**, incluso si el código de retorno de la ejecución fue `0`.

Conserva el `pedido` y el `identificadorRTS` devueltos, además de tu propia `factura` y los datos de autorización: el `pedido` es lo que identifica la operación en una devolución o una consulta.

---

## Próximos pasos

Ahora que has procesado tu primera transacción, puedes profundizar en tu integración explorando:

* [Arquitectura](/es/get-central/first-steps/architecture) - Una vista detallada de los componentes del sistema y el flujo de datos.
* [Procesar una Devolución](/es/get-central/slim-pack-payment-guides/process-a-refund) - Aprende a realizar una devolución de un pago autorizado.
* [Referencia de Parámetros de Solicitud](/es/get-central/slim-pack-reference/request-parameters) - Lista completa de argumentos técnicos para todas las operaciones.