Tokenizacao de Cartoes

Aprenda a tokenizar dados de cartao de credito de forma segura utilizando a API Vault. A tokenizacao permite processar pagamentos sem armazenar dados sensiveis.

PCI-DSS Compliance

Ao usar a tokenizacao do Vault, seus sistemas nao precisam de certificacao PCI-DSS para processar pagamentos.

Fluxo de tokenizacao

  1. 1

    Cliente insere dados do cartao

    Formulario seguro no frontend

  2. 2

    Dados enviados ao Vault

    Via HTTPS para o backend

  3. 3

    Vault retorna token

    Dados armazenados de forma segura

  4. 4

    Use o token

    Para pagamentos futuros

Implementacao

tokenize.jsjavascript
async function tokenizeCard(cardData) {
  const response = await fetch('https://vault.axon.com/v1/tokens', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.AXON_API_KEY}`,
      'Content-Type': 'application/json',
      'Idempotency-Key': crypto.randomUUID(),
    },
    body: JSON.stringify({
      card: {
        number: cardData.number.replace(/\s/g, ''),
        exp_month: parseInt(cardData.expiry.split('/')[0]),
        exp_year: 2000 + parseInt(cardData.expiry.split('/')[1]),
        cvv: cardData.cvv,
        holder_name: cardData.holderName.toUpperCase(),
      },
      metadata: {
        customer_id: cardData.customerId,
      },
    }),
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.error.message);
  }

  return response.json();
}

// Uso
const token = await tokenizeCard({
  number: '4111 1111 1111 1111',
  expiry: '12/25',
  cvv: '123',
  holderName: 'JOAO SILVA',
  customerId: 'cust_123',
});

console.log('Token:', token.id);

Usando o token

payment.jsjavascript
async function processPayment(tokenId, amount) {
  const response = await fetch('https://api.axon.com/v1/payments', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.AXON_API_KEY}`,
      'Content-Type': 'application/json',
      'Idempotency-Key': crypto.randomUUID(),
    },
    body: JSON.stringify({
      token_id: tokenId,
      amount: amount,
      currency: 'BRL',
    }),
  });

  return response.json();
}

Boas praticas

  • Use sempre HTTPS
  • Nunca armazene dados do cartao em logs
  • Use chaves de idempotencia
  • Valide dados no frontend