# Especificaciones de EMV Tags para Tarjeta Presente

En un entorno **Tarjeta Presente**, la seguridad de la transacción se basa en el intercambio de datos **Tag Length Value (TLV)** entre el chip de la tarjeta y la pasarela (gateway) de Getnet. Esta página proporciona una referencia técnica de las etiquetas EMV específicas que suelen incluirse en la carga de datos `emv` de la **Regional API**.

## La anatomía de una etiqueta (TLV)

Cada elemento de datos dentro de la cadena `emv` generada por el hardware sigue el formato estándar TLV:

- **Etiqueta (Tag):** Un identificador hexadecimal de 1 o 2 bytes (p. ej., `9F26`).
- **Longitud (Length):** El tamaño del valor siguiente en bytes.
- **Valor (Value):** La carga de datos real (un criptograma o un código de moneda).

## EMV Tags principales (Obligatorias y Comunes)

Basándose en las cargas de datos de hardware validadas (como la integración de Chile/CLP), las siguientes etiquetas son fundamentales para una autorización con éxito.

| Etiqueta | Nombre | Origen | Descripción |
| --- | --- | --- | --- |
| **9F26** | **Application Cryptogram (ARQC)** | ICC | Un criptograma exclusivo de 8 bytes generado por el chip de la tarjeta y utilizado por el emisor para verificar la autenticidad de la tarjeta en cada transacción. |
| **9F02** | **Amount, Authorized** | Terminal | El importe de la transacción en formato numérico (en céntimos). |
| **9F34** | **CVM Results** | Terminal | Registra el resultado de la negociación del Método de Verificación del Titular (PIN Online verificado, Sin CVM). La pasarela lo utiliza para confirmar el método de verificación aplicado. |
| **95** | **Terminal Verification Results (TVR)** | Terminal | Un mapa de bits de 5 bytes que indica qué comprobaciones de seguridad se han realizado y sus resultados (autenticación de datos fuera de línea, verificación del PIN). |
| **9F33** | **Terminal Capabilities** | Terminal | Define las capacidades admitidas por el terminal para la entrada de datos de la tarjeta, el CVM y las funciones de seguridad. |
| **9F10** | **Issuer Application Data (IAD)** | ICC | Datos patentados del emisor integrados en la tarjeta, utilizados para la gestión de riesgos y la validación de criptogramas. |
| **9F36** | **Application Transaction Counter (ATC)** | ICC | Un contador mantenido por el chip de la tarjeta que se incrementa con cada transacción, evitando ataques de reproducción. |
| **9F37** | **Unpredictable Number** | Terminal | Un número aleatorio de 4 bytes generado por el terminal para cada transacción con el fin de garantizar la exclusividad del criptograma. |
| **5F2A** | **Transaction Currency Code** | Terminal | El código numérico de moneda ISO 4217 (`0032` para CLP, `0986` para BRL). |
| **5F34** | **PAN Sequence Number (PSN)** | ICC | Diferencia entre varias tarjetas emitidas para la misma cuenta que comparten el mismo Primary Account Number (PAN). |
| **9A** | **Transaction Date** | Terminal | La fecha en que se inició la transacción, en formato AAMMDD. |
| **9C** | **Transaction Type** | Terminal | Indica el tipo de transacción financiera (`00` para Compra). |
| **9F1A** | **Terminal Country Code** | Terminal | El código numérico de país ISO 3166-1 de la ubicación del terminal (`0152` para Chile). |

## Validación detallada de la carga de datos (Payload)

Para garantizar que su implementación sea robusta, su hardware debe concatenar estas etiquetas en una única cadena hexadecimal para el campo `data.payment.card.emv`.

<Callout type="warning">

El campo `emv` debe contener todas las etiquetas como una única cadena codificada en hexadecimal sin espacios. No incluya espacios ni separadores entre los elementos TLV.

</Callout>

### Ejemplo de cadena decodificada

Este es un desglose de cómo la pasarela lee una carga útil de chip validada extraída de una transacción real:

> **`9F26 08 819BA36F3F793414`**
> - **Etiqueta:** `9F26` (Application Cryptogram)
> - **Longitud:** `08` (8 bytes)
> - **Valor:** `819BA36F3F793414` (El ARQC)

La cadena `emv` completa en la solicitud de la API tendría este aspecto (todas las etiquetas concatenadas sin espacios):

```
9f2701809f3303e0f8c8950580000080009f37045d21705a9f100706010a03a0b8089f2608819ba36f3f7934149f360205b782021c009c01009f1a0204849a032002279f02060000000309605F2A0200325f3401019f34031e0300
```

## Prácticas recomendadas de seguridad

- **No codifique listas de etiquetas (Hardcoding):** Los requisitos de las etiquetas pueden evolucionar en función de las regulaciones regionales o las actualizaciones de los esquemas de tarjetas. Su analizador (parser) debe ser lo suficientemente flexible como para gestionar etiquetas inesperadas sin fallar.
- **Codificación hexadecimal:** Asegúrese de que todos los datos TLV se conviertan correctamente en una cadena codificada en hexadecimal antes de enviarlos a la API.
- **Gestión de datos sensibles:** Aunque en el estándar EMV existen etiquetas como `5A` (PAN) o `57` (Track 2 Equivalent Data), suelen enviarse en campos dedicados de la API (`card.number`, `card.track_2`) en lugar de dentro de la cadena `emv` genérica para mantener el cumplimiento de PCI DSS.
- **Validación del ARQC:** El Application Cryptogram (`9F26`) es la etiqueta más crítica. Un ARQC no válido o inexistente provocará la denegación de la transacción.

## Leer más

- **Validación de PIN**: Requisitos técnicos para la transmisión de `pin_block` y `ksn`.
- **Modos de entrada de tarjeta**: Cómo cambiar entre `chip`, `chip_contactless` y `magnetic_stripe`.
- **Visión General de la Tecnología EMV**: Análisis detallado de las etiquetas TLV y los criptogramas de chip.
- **Pagos de un solo paso**: Guía paso a paso de su primera venta física.