# Inicio rápido: tu primer pago con TPV Integrado

Esta guía te muestra cómo establecer una conexión con un TPV Integrado y realizar una **transacción de pago única** usando solo los datos obligatorios. Al final, tendrás una conexión funcional, un terminal validado y un pago ejecutado con éxito de forma programática.

## Antes de comenzar

Antes de empezar, asegúrate de que:

* El terminal TPV está encendido y configurado en **Modo TPV Integrado**
* La Connector App está instalada y activa en el terminal
* Tienes acceso a la biblioteca de integración del TPV Integrado
* El sistema de automatización y el TPV pueden comunicarse mediante un [modelo de conexión](/es/integrated-pos/first-steps-pos/connection-models) compatible

## Paso 1: Crea el Connector

Establece un canal de comunicación con el terminal TPV. Elige un modelo de conexión; el más común es HTTP a través de la red. Para controlar un terminal remoto mediante la nube de Getnet, usa `CreateCloud` — consulta la guía [Conexión Cloud2Cloud](https://docs.globalgetnet.com/es/products/in-store-payments/integrated-pos?doc=pos-integrated-cloud-connection).

| Parámetro | Tipo | Descripción |
| :--- | :--- | :--- |
| `hostname` | string | El nombre de host, IPv4 o IPv6 del dispositivo TPV (por ejemplo, `"192.168.0.10"`). |
| `port` | int | El puerto del dispositivo TPV. Este parámetro es opcional y su valor por defecto es 8080. |

Este es un ejemplo de cómo crear un connector:

```csharp
Connector connector = Connector.CreateHttp("192.168.0.10", 8080);
```

## Paso 2: Valida la conectividad del terminal TPV

Antes de ejecutar cualquier operación de pago, confirma que el terminal está disponible y listo. Llama a la función `Polling`:

```csharp
var pollingResult = connector.PollingAsync();
```

Una respuesta exitosa (Code = 0) indica que el TPV está conectado y el terminal está listo para recibir comandos.

<Callout type="warning">

Si la validación falla, no continúes con las operaciones de pago.

</Callout>

## Paso 3: Ejecuta una venta simple

Realiza una transacción de pago. Para este inicio rápido, envía **Amount** y **SaleType** para que el terminal omita las pantallas de importe y de tipo de pago. Si omites cualquiera de los dos, el TPV muestra la pantalla correspondiente para que el operador ingrese el dato.

| Parámetro | Tipo | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `Amount` | Long | No | Valor en moneda local para realizar la transacción (por ejemplo, `10000` = 100,00). Cuando se envía, se omite la pantalla de importe. |
| `SaleType` | Enum | No | Tipo de pago: `Card` o `QrCode`. Cuando se establece en `Card`, se usa el flujo de tarjeta. Cuando se envía, se omite la pantalla de tipo de pago. |

Este es un ejemplo de cómo ejecutar una venta:

```csharp
var saleRequest = new SaleRequest
{
    Amount = 10000,        // Local currency in minor units
    SaleType = SaleType.Card
};

var saleResult = connector.SaleAsync(saleRequest);
```

En el terminal TPV se omite la pantalla de entrada del importe y el cliente inserta, desliza o acerca la tarjeta. El terminal gestiona cualquier interacción necesaria (PIN, confirmación, firma).

## Paso 4: Gestiona la respuesta

Una vez completada la transacción, el TPV devuelve una respuesta estructurada. Los campos de abajo son los que se usan en este inicio rápido.

| Campo | Tipo | Descripción |
| :--- | :--- | :--- |
| `Code` | Int | Código de respuesta. `0` indica éxito. |
| `Message` | string | Mensaje de texto que representa el resultado de la operación (por ejemplo, `"APPROVED"`). |
| `CommerceCode` | string | Código de sucursal único aprobado por Getnet para procesar la transacción. |
| `TerminalId` | string | Código del terminal TPV. |
| `AuthorizationCode` | string | Código de autorización de la transacción. |
| `Amount` | Long | Importe de la transacción en moneda local. |
| `AccountingDate` | string | Fecha y hora de la transacción en GMT. |
| `RealDate` | string | Fecha y hora de la transacción en hora local. |
| `SaleType` | string | Tipo de venta (por ejemplo, `"Card"`). |
| `OperationMode` | string | Modo de operación seleccionado. Puede ser `CalculatedGetnet` o `CalculatedISV`. |
| `OriginalAmount` | Long | Importe original de la transacción en moneda local. |

**Ejemplo — Respuesta aprobada:**

```json
{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "0000081561",
  "TerminalId": "AR001P0B",
  "AuthorizationCode": "551437",
  "Amount": 10000,
  "AccountingDate": "2025-08-25T16:11:23.0000000+00:00",
  "RealDate": "2025-08-25T13:11:50.8570000-03:00",
  "SaleType": "Card",
  "OperationMode": "CalculatedGetnet",
  "OriginalAmount": 10000
}
```

Verifica siempre el código de respuesta antes de continuar con el flujo de negocio.

## Paso 5: Cierra la conexión

Después de completar la operación, libera todos los recursos asignados:

```csharp
connector.Close();
```

Una vez cerrada, la instancia de Connector no se puede reutilizar.

## Siguientes pasos

Ahora que has completado tu primer pago con TPV Integrado, explora estos temas para construir tus integraciones:

* **[Guía de pago en un solo paso](/es/integrated-pos/pos-payment-guides/single-step-payment)** — Conoce todos los parámetros de Sale disponibles y el manejo de la respuesta.
* **[Preautorización](/es/integrated-pos/pos-payment-guides/pre-auth-payment)** — Reserva fondos y confirma más adelante (por ejemplo, reservas de hotel).