<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de Tokenização - HYDRA HUB</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
max-width: 600px;
margin: 0 auto;
padding: 20px;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: 600;
}
input {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
}
button {
background-color: #6941C6;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
font-size: 16px;
cursor: pointer;
}
.result {
margin-top: 20px;
padding: 15px;
background-color: #f5f5f5;
border-radius: 4px;
display: none;
}
</style>
</head>
<body>
<h1>Tokenização de Cartão</h1>
<p>Este exemplo demonstra como tokenizar um cartão de crédito usando a API do HYDRA HUB.</p>
<form id="card-form">
<div class="form-group">
<label for="card-number">Número do Cartão</label>
<input type="text" id="card-number" placeholder="0000 0000 0000 0000" maxlength="19">
</div>
<div class="form-group">
<label for="card-holder">Nome no Cartão</label>
<input type="text" id="card-holder" placeholder="NOME COMO APARECE NO CARTÃO">
</div>
<div style="display: flex; gap: 10px;">
<div class="form-group" style="flex: 1;">
<label for="expiry-month">Mês de Expiração</label>
<input type="text" id="expiry-month" placeholder="MM" maxlength="2">
</div>
<div class="form-group" style="flex: 1;">
<label for="expiry-year">Ano de Expiração</label>
<input type="text" id="expiry-year" placeholder="AAAA" maxlength="4">
</div>
<div class="form-group" style="flex: 1;">
<label for="cvv">CVV</label>
<input type="text" id="cvv" placeholder="123" maxlength="4">
</div>
</div>
<button type="submit">Tokenizar Cartão</button>
</form>
<div class="result" id="result">
<h3>Token Gerado:</h3>
<code id="token-output"></code>
</div>
<script>
// Configurando a chave pública
const PUBLIC_KEY = 'pk_userKey';
// Função para tokenizar o cartão
async function tokenizeCard(cardData) {
const response = await fetch(`https://api.hydrahub.com.br/api/v1/card-token?publicKey=${PUBLIC_KEY}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(cardData)
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'Erro ao tokenizar cartão');
}
return await response.text();
}
// Manipulador do formulário
document.getElementById('card-form').addEventListener('submit', async function(e) {
e.preventDefault();
const cardData = {
number: document.getElementById('card-number').value.replace(/\s/g, ''),
holderName: document.getElementById('card-holder').value,
expirationMonth: document.getElementById('expiry-month').value,
expirationYear: document.getElementById('expiry-year').value,
cvv: document.getElementById('cvv').value
};
try {
const token = await tokenizeCard(cardData);
document.getElementById('token-output').textContent = token;
document.getElementById('result').style.display = 'block';
} catch (error) {
alert('Erro ao tokenizar cartão: ' + error.message);
}
});
// Formatação do número do cartão (adicionando espaços a cada 4 dígitos)
document.getElementById('card-number').addEventListener('input', function(e) {
let value = e.target.value.replace(/\s/g, '');
let formattedValue = '';
for (let i = 0; i < value.length; i++) {
if (i > 0 && i % 4 === 0) {
formattedValue += ' ';
}
formattedValue += value[i];
}
e.target.value = formattedValue;
});
</script>
</body>
</html>
Como Funciona
- O usuário preenche os dados do cartão no formulário
- Quando o usuário submete o formulário, os dados são enviados para o endpoint
/api/v1/card-token com a chave pública como parâmetro
- O token JWT retornado é exibido na tela e pode ser usado para criar uma transação de pagamento
- Os dados reais do cartão nunca são armazenados em seu servidor, aumentando a segurança
Exemplo de Dados para Teste
Para testar a tokenização, você pode usar os seguintes dados fictícios:
Número do cartão: 4000000000000010
Nome: JOAO M SILVA
Mês de expiração: 12
Ano de expiração: 2028
CVV: 123
Implementando na sua Aplicação
Para implementar este exemplo em sua aplicação:
- Substitua
pk_userKey pela sua chave pública real
- Adapte o estilo e layout para corresponder ao design do seu site
- Após obter o token, você pode enviá-lo para seu servidor junto com outros dados de pedido para criar uma transação
Próximos Passos
Após tokenizar o cartão com sucesso, você deve:
- Enviar o token para seu servidor backend
- Criar uma transação usando o endpoint
/api/v1/transactions
- Processar o resultado da transação (aprovada, negada, etc.)
O token gerado tem validade de 5 minutos. Certifique-se de utilizá-lo para criar uma transação antes desse prazo expirar.
Consulte a documentação de Transações com Cartão para mais detalhes sobre como processar pagamentos com o token gerado.