# Network Tokenization

A Tokenization de cartão é um serviço que substitui o PAN (Primary Account Number) por um token, que é fornecido diretamente pelas bandeiras de cartão. Embora cada bandeira tenha seu próprio modelo de token para gerar tokens exclusivos, todos eles seguem o mesmo formato, aderindo à mesma estrutura de um PAN, consistindo em 16 dígitos, incluindo o BIN e um dígito de verificação. Como resultado, os dados permanecem no mesmo formato e mantêm o mesmo nível de segurança, ao mesmo tempo em que são interoperáveis e capazes de ser processados por quaisquer adquirentes que suportem Network Tokenization.

Além disso, toda transação envolvendo um token de bandeira de cartão requer a geração de um criptograma, adicionando uma camada extra de segurança às transações de e-commerce e garantindo que o token seja válido e possa ser processado. Para concluir a transação, tanto o token quanto o criptograma devem ser gerados pelo mesmo provedor.

## Observações ao usar Network Tokenization durante pagamentos

Para usar o número de Tokenization, ele deve ser colocado como o valor `number_token`, juntamente com sua data de expiração correspondente.
Para poder ler as informações geradas na requisição de token no momento do pagamento, a API da GetNet espera receber as seguintes informações adicionais (que podem ser encontradas no objeto `tokenization`, um objeto de terceiro nível dentro de qualquer requisição de autorização):

| Atributo | Tipo | Obrigatório | Descrição | Exemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sim | Conjunto de dados do cartão | - |
| `card.number_token` | String | Condicional | Número do cartão tokenizado. Envie apenas quando `card.number` não for enviado | `e71084449bc70e344f77d4c382704ea` |
| `tokenization` | Object | Condicional | Conjunto de dados de Tokenization. Obrigatório para pagamentos com network tokenization | - |
| `tokenization.type` | String | Sim | Tipo de Tokenization | `TAVV` (Visa) ou `UCAF` (Mastercard) |
| `tokenization.cryptogram` | String | Sim | Valor do criptograma criado anteriormente na geração do criptograma do cartão pelo TSP (Token Service Provider) | `0006010865799300000620111679930000000000` |
| `tokenization.eci` | String | Condicional | *Electronic Commerce Indicator*, um código numérico. Obrigatório para conformidade com SCA | `07` (Visa) ou `06` (Mastercard) |
| `tokenization.requestor_id` | String | Condicional | Identificador numérico. Obrigatório ao usar o serviço de Tokenization da GetNet | `1234567` |

Na coluna **Obrigatório**, *Condicional* significa que o campo é obrigatório apenas em cenários específicos, descritos na linha do campo.

Para mais detalhes, consulte a [Referência da 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 as transações sejam realizadas de forma segura, os dados do cartão serão tokenizados com o fluxo de autorização interno da GetNet, sem a necessidade de uma requisição de Tokenization prévia.
Portanto, ao enviar uma requisição de pagamentos, o corpo da requisição deve conter as seguintes propriedades dentro do objeto **card** de terceiro nível:

| Atributo | Tipo | Obrigatório | Descrição | Exemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sim | Conjunto de dados do cartão | - |
| `card.number` | String | Condicional | Número do cartão. Envie apenas quando `card.number_token` não for enviado | `4013790001234569` |
| `card.expiration_month` | String | Sim | Mês de expiração do cartão com dois dígitos | `09` |
| `card.expiration_year` | String | Sim | Ano de expiração do cartão com dois dígitos | `30` |
| `card.cardholder_name` | String | Sim | Nome do comprador impresso no cartão | `Roland Deschain` |
| `card.security_code` | String | Não | Código de segurança. CVV ou CVC | `517` |
| `card.brand` | String | Não | Bandeira do cartão, preenchida automaticamente pela API se não informada | `Visa` |
| `card.number_token` | String | Condicional | Número do cartão tokenizado. Envie apenas quando `card.number` não for enviado | `e71084449bc70e344f77d4c382704ea` |

## Tokenization de terceiros (externa)

É possível autorizar pagamentos com cartões tokenizados em soluções externas à GetNet.
Para fazer isso, ao enviar uma requisição de pagamento, o corpo da requisição deve conter os dados do cartão dentro do objeto `card` e as propriedades já mencionadas (`type`, `cryptogram`, `eci`, `requestor_id`) dentro do objeto `tokenization`.

| Atributo | Tipo | Obrigatório | Descrição | Exemplo |
| --- | --- | --- | --- | --- |
| `card` | Object | Sim | Conjunto de dados do cartão | - |
| `card.number` | String | Condicional | Número do cartão gerado pelo TSP (Token Service Provider) | `4013790001234569` |
| `card.expiration_month` | String | Sim | Mês de expiração do cartão com dois dígitos | `09` |
| `card.expiration_year` | String | Sim | Ano de expiração do cartão com dois dígitos | `30` |
| `card.cardholder_name` | String | Sim | Nome do comprador impresso no cartão | `Roland Deschain` |
| `card.security_code` | String | Não | Código de segurança. CVV ou CVC | `517` |
| `card.brand` | String | Não | Bandeira do cartão, preenchida automaticamente pela API se não informada | `Visa` |
| `tokenization` | Object | Condicional | Conjunto de dados de Tokenization | - |
| `tokenization.type` | String | Sim | Tipo de criptograma usado pelo TSP (Token Service Provider) | `TAVV` |
| `tokenization.cryptogram` | String | Sim | Valor do criptograma gerado pelo TSP (Token Service Provider) | `AwAAJxAAPbVE1LYAmcebg0KAAAA=` |
| `tokenization.eci` | String | Condicional | Indicador ECI (Electronic Commerce Indicator). Obrigatório para conformidade com SCA | `05` |
| `tokenization.requestor_id` | String | Condicional | Indica o identificador do solicitante do Token | `98765432101` |

<Callout type="note">

Preencher corretamente `requestor_id` e `eci` é essencial para conformidade com os padrões SCA (Strong Customer Authentication) aplicáveis no mercado espanhol/europeu.

</Callout>