# Network Tokenization

La Tokenization de tarjetas es un servicio que sustituye el PAN (Primary Account Number) por un token, el cual es proporcionado directamente por las marcas de tarjetas. Aunque cada marca tiene su propio modelo de token para generar tokens únicos, todos siguen el mismo formato, adhiriéndose a la misma estructura que un PAN, compuesto por 16 dígitos, incluyendo el BIN y un dígito de verificación. Como resultado, los datos permanecen en el mismo formato y conservan el mismo nivel de seguridad, al mismo tiempo que son interoperables y capaces de ser procesados por cualquier adquirente que soporte Network Tokenization.

Además, toda transacción que involucre un token de marca de tarjeta requiere la generación de un criptograma, añadiendo una capa adicional de seguridad a las transacciones de comercio electrónico y asegurando que el token es válido y puede ser procesado. Para completar la transacción, tanto el token como el criptograma deben ser generados por el mismo proveedor.

## Observaciones al usar Network Tokenization durante los pagos

Para utilizar el número de Tokenization, debe colocarse como el valor `number_token`, junto con su fecha de caducidad correspondiente.
Para poder leer la información generada en la petición del token en el momento del pago, la API de GetNet espera recibir la siguiente información adicional (que se puede encontrar en el objeto `tokenization`, un objeto de tercer nivel dentro de cualquier petición de autorización):

| Atributo | Tipo | Obligatorio | Descripción | Ejemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sí | Conjunto de datos de la tarjeta | - |
| `card.number_token` | String | Condicional | Número de tarjeta tokenizado. Envíe solo cuando `card.number` no se envíe | `e71084449bc70e344f77d4c382704ea` |
| `tokenization` | Object | Condicional | Conjunto de datos de Tokenization. Obligatorio para pagos con network tokenization | - |
| `tokenization.type` | String | Sí | Tipo de Tokenization | `TAVV` (Visa) o `UCAF` (Mastercard) |
| `tokenization.cryptogram` | String | Sí | Valor del criptograma creado previamente en la generación del criptograma de la tarjeta por el TSP (Token Service Provider) | `0006010865799300000620111679930000000000` |
| `tokenization.eci` | String | Condicional | *Electronic Commerce Indicator*, un código numérico. Obligatorio para el cumplimiento de SCA | `07` (Visa) o `06` (Mastercard) |
| `tokenization.requestor_id` | String | Condicional | Identificador numérico. Obligatorio al usar el servicio de Tokenization de GetNet | `1234567` |

En la columna **Obligatorio**, *Condicional* significa que el campo solo es obligatorio en escenarios específicos, descritos en la fila del campo.

Para más detalles, consulte la [Referencia de la API](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/payments/POST/dpm/payments-gwproxy/v2/payments)

## Tokenization transparente (interna)

Para que las transacciones se realicen de forma segura, los datos de la tarjeta se tokenizarán con el flujo de autorización interno de GetNet, sin necesidad de una petición de Tokenization previa.
Por lo tanto, al enviar una petición de pagos, el cuerpo de la petición debe contener las siguientes propiedades dentro del objeto **card** de tercer nivel:

| Atributo | Tipo | Obligatorio | Descripción | Ejemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sí | Conjunto de datos de la tarjeta | - |
| `card.number` | String | Condicional | Número de tarjeta. Envíe solo cuando `card.number_token` no se envíe | `4013790001234569` |
| `card.expiration_month` | String | Sí | Mes de caducidad de la tarjeta de dos dígitos | `09` |
| `card.expiration_year` | String | Sí | Año de caducidad de la tarjeta de dos dígitos | `30` |
| `card.cardholder_name` | String | Sí | Nombre del comprador impreso en la tarjeta | `Roland Deschain` |
| `card.security_code` | String | No | Código de seguridad. CVV o CVC | `517` |
| `card.brand` | String | No | Marca de la tarjeta, rellenada automáticamente por la API si no se informa | `Visa` |
| `card.number_token` | String | Condicional | Número de tarjeta tokenizado. Envíe solo cuando `card.number` no se envíe | `e71084449bc70e344f77d4c382704ea` |

## Tokenization de terceros (externa)

Es posible autorizar pagos con tarjetas tokenizadas en soluciones externas a GetNet.
Para ello, al enviar una petición de pago, el cuerpo de la petición debe contener los datos de la tarjeta dentro del objeto `card` y las propiedades ya mencionadas (`type`, `cryptogram`, `eci`, `requestor_id`) dentro del objeto `tokenization`.

| Atributo | Tipo | Obligatorio | Descripción | Ejemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sí | Conjunto de datos de la tarjeta | - |
| `card.number` | String | Condicional | Número de tarjeta generado por el TSP (Token Service Provider) | `4013790001234569` |
| `card.expiration_month` | String | Sí | Mes de caducidad de la tarjeta de dos dígitos | `09` |
| `card.expiration_year` | String | Sí | Año de caducidad de la tarjeta de dos dígitos | `30` |
| `card.cardholder_name` | String | Sí | Nombre del comprador impreso en la tarjeta | `Roland Deschain` |
| `card.security_code` | String | No | Código de seguridad. CVV o CVC | `517` |
| `card.brand` | String | No | Marca de la tarjeta, rellenada automáticamente por la API si no se informa | `Visa` |
| `tokenization` | Object | Condicional | Conjunto de datos de Tokenization | - |
| `tokenization.type` | String | Sí | Tipo de criptograma utilizado por el TSP (Token Service Provider) | `TAVV` |
| `tokenization.cryptogram` | String | Sí | Valor del criptograma generado por el TSP (Token Service Provider) | `AwAAJxAAPbVE1LYAmcebg0KAAAA=` |
| `tokenization.eci` | String | Condicional | Indicador ECI (Electronic Commerce Indicator). Obligatorio para el cumplimiento de SCA | `05` |
| `tokenization.requestor_id` | String | Condicional | Indica el identificador del solicitante del Token | `98765432101` |

<Callout type="note">

Rellenar correctamente `requestor_id` y `eci` es esencial para cumplir con los estándares SCA (Strong Customer Authentication) aplicables en el mercado español/europeo.

</Callout>