> ## Documentation Index
> Fetch the complete documentation index at: https://docs.malga.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Serviço de Tokenização da Malga

> Conheça o Serviço de Tokenização da Malga e descubra como processar dados sensíveis de cartões de maneira segura, utilizando tokens criptografados para proteger informações confidenciais.

export const BrandImage = ({src, children, docUrl, id}) => {
  const img = <>
    <img id={id} src={src} noZoom style={{
    width: "36px",
    height: "36px"
  }} />
    <p className="m-0">{children}</p>
  </>;
  if (docUrl) {
    return <a className="flex items-center gap-2 flex-row border-none" href={docUrl}>
        {img}
      </a>;
  }
  return <div className="flex items-center gap-2 flex-row" href={docUrl}>
      {img}
    </div>;
};

export const CheckIcon = ({mode, type, id}) => {
  const colorIcons = {
    'error': '#919191',
    'success': '#00AE42',
    'noSupported': '#919191'
  };
  const foundColor = colorIcons[mode];
  const iconType = mode === 'noSupported' ? type : `circle-${type}`;
  return <div className="check-icon" id={id}>
      <Icon icon={iconType} iconType="regular" color={foundColor} size={18} />
    </div>;
};

Malga criou este [Serviço de Tokenização](/api-reference/tokens/criar-um-novo-token) para permitir que os dados sensíveis de cartão sejam processados de maneira segura.

Através da [Tokenização](/api-reference/tokens/criar-um-novo-token), é possível garantir que os dados sensíveis do cartão (holder name, pan, cvv) não passem pelo seu backend e possam ser enviados para os servidores da Malga diretamente da sua aplicação cliente.

Um token representa dados sensíveis de cartão armazenados de maneira segura na Malga, seguindo as melhores práticas do PCI, sendo os dados enviados direto do seu frontend para os servidores da Malga.

É extremamente recomendado que você realize o processo de tokenização diretamente no lado do cliente, coletando os dados sensíveis de cartão na sua interface e enviando diretamente para o Serviço de Tokenização, a partir de um client token criado para essa funcionalidade, enviando para seu backend o identificador do token gerado que não guarda dados sensíveis e pode ser trafegado normalmente pelos seus servidores.

<Warning>
  Os Tokens são invalidados após o primeiro uso, não sendo possível armazenar o
  token gerado para uso futuro em compras recorrentes. Caso queira salvar os
  dados de um cartão para uso futuro, você deve realizar a criação de um token e
  na sequência solicitar a criação de um cartão a partir do token criado, dessa
  forma o cartão ficará armazenado em definitivo no nosso *vault*, servidor de
  armazenamento seguro de cartões, bastando enviar somente o card id gerado nas
  transações futuras.
</Warning>

<img src="https://mintcdn.com/malga/UNwWMYGJx-7zc-IL/assets/images/tokenization/fluxotokennovo.png?fit=max&auto=format&n=UNwWMYGJx-7zc-IL&q=85&s=a6bc7dc7759e114b8791b90c7bea36bd" alt="Fluxo de criação de token" width="2840" height="1872" data-path="assets/images/tokenization/fluxotokennovo.png" />

Você pode criar cartões a partir de tokens gerados, sendo possível associar múltiplos cartões a um mesmo comprador, de maneira a possibilitar cobrança futura.

<Warning>
  O tempo de expiração do token é de 2 horas
</Warning>

## Criando um Card ID

Uma vez criado um cartão é gerado um identificador único `cardId` que pode ser armazenado no seu sistema, já que não contém dados sensíveis de cartão, somente um identificador de um cartão salvo de maneira segura no vault da Malga.

A partir de um `cardId` gerado é possível realizar cobranças recorrentes, bastando enviar esse identificador no momento da criação do `charge`.

<Warning>
  O código de segurança (cvv) do cartão, que foi enviado na tokenização, é
  validado através de um transação de valor zero junto ao emissor do cartão,
  dessa maneira a Malga consegue validar se os dados tokenizados do cartão são
  válidos sem que seja necessário realizar uma cobrança efetiva. Após a
  validação com sucesso dos dados do cartão, o mesmo fica com status:active e
  disponível para compras futuras, caso contrário, o cartão ficará com
  status:failed e invalidado, devendo ser gerado um novo token e um novo cartão.
</Warning>

## Status de Cartão

1. O atributo `cvvchecked` identifica se o cartão teve ou não seus dados validados na tokenização. Algumas bandeiras como a AMEX não permitem validação zero dollar, nesse caso o cartão passa a ser criado como `status=active` e `cvvchecked=false`.
2. O status `active` continua identificando se o cartão está disponível para uso no fluxo transacional, porém não é garantia de que um cartão `status=active` retornar sucesso na cobrança, é possível retorno de falha na cobrança por parte dos bancos.
3. O status `failed` continua identificando um cartão que NÃO pode ser usado no fluxo transacional, é um token já identificado como inválido e não poderá ser utilizado.
4. O status `pending` passa a identificar os casos de impossibilidade de validação dos dados do cartão na sua criação. Enquanto o status estiver pending o cartão pode ser usado para criar transação *durante um intervalo de 2 horas*, garantindo maior resiliência do transacional. Um cartão `status=pending` *ao ser utilizado para uma cobrança*, tem seu status atualizado para `active` se os dados do cartão forem válidos, e atualizado para `failed` se os dados do cartão forem inválidos.

Os status possíveis para um `card` na Malga são:

| Status      | Descrição                                                                                                                                                                                                                                                 |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **active**  | Caso os dados do cartão sejam validados, o status é retornado como active e cvvchecked true                                                                                                                                                               |
| **failed**  | Caso os dados do cartão não sejam validados, o status é retornado como failed e cvvchecked false                                                                                                                                                          |
| **pending** | Caso o Serviço de Validação dos dados do cartão esteja indisponível, o status é retornado como pending e cvvchecked: false; Enquanto o status estiver pending o cartão pode ser usado para criar transação, garantindo maior resiliência do transacional. |

<Tip>
  É possível enviar o `cvv` do cartão como opcional na requisição de cobrança,
  sendo útil nos cenários onde o cartão está com status pending ou active, sendo
  este `cvv` repassado para o provedor aumentando assim as chances de aprovação
  nos casos onde você pode solicitar o código de segurança no momento da
  cobrança.
</Tip>

## Bandeiras aceitas

As bandeiras aceitas para transações na plataforma da Malga, de acordo com o método de pagamento, são:

|                                                                                                    | Bandeira   | Crédito                                   | Débito                                  | Voucher                                   |
| -------------------------------------------------------------------------------------------------- | ---------- | ----------------------------------------- | --------------------------------------- | ----------------------------------------- |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/american-express.svg" id="amex" /> | Amex       | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/dinners.svg" id="dinners" />       | Dinners    | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/discover.svg" id="discover" />     | Discover   | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/elo.svg" id="elo" />               | Elo        | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/hiper.svg" id="hiper" />           | Hiper      | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/jcb.svg" id="jcb" />               | JCB        | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/maestro.svg" id="maestro" />       | Maestro    | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/mastercard.svg" id="master" />     | Mastercard | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/mir.svg" id="mir" />               | MIR        | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/sodexo.svg" id="sodexo" />         | Sodexo     | <CheckIcon type="xmark" mode="error" />   | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/ticket.svg" id="ticket" />         | Ticket     | <CheckIcon type="xmark" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/union-pay.svg" id="union-pay" />   | Union Pay  | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="xmark" mode="error" />   |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/visa.svg" id="visa" />             | Visa       | <CheckIcon type="check" mode="success" /> | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |
| <BrandImage src="https://malga-docs-prod.s3.amazonaws.com/icons/vr.svg" id="vr" />                 | VR         | <CheckIcon type="xmark" mode="error" />   | <CheckIcon type="xmark" mode="error" /> | <CheckIcon type="check" mode="success" /> |

<Warning>
  **Importante:** Apesar do suporte à tokenização para o método de pagamento
  voucher, é importante observar limitações próprias em cartões desse método de
  pagamento, que impossibilitam transações sem CVV. Em decorrência disso, o
  cartão tokenizado só pode ser utilizado em uma única transação.
</Warning>
