<!
DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Verificador de Tarjetas</title>
</head>
<body>
<h1>Verificar Tarjetas</h1>
<form id="card-form">
<label for="card-info">Ingresa las tarjetas (formato PIPE):</label><br>
<textarea id="card-info" rows="6" cols="40" placeholder="1234567890123456|
12|23|123|juan@dominio.com"></textarea><br><br>
<button type="submit">Verificar</button>
</form>
<h2>Tarjetas Vivas</h2>
<ul id="alive-cards"></ul>
<h2>Tarjetas Muertas</h2>
<ul id="dead-cards"></ul>
<script src="https://js.stripe.com/v3/"></script>
<script>
const stripe =
Stripe('pk_test_51RIMeB3UH08nzHWo1Y69ScpqMAQRbO7q4Z3ydK6f8v4ZDZ2kb8ZgMtFdnAyfFrFGWw
wWlLDk8naMvaUH3oHiLusY00hurUshYJ'); // Usar clave pública
document.getElementById('card-form').addEventListener('submit', async (e)
=> {
e.preventDefault();
const cardInfo = document.getElementById('card-info').value.trim();
const cardList = cardInfo.split("\n");
console.log('Tarjetas ingresadas:', cardList); // Debug: Ver tarjetas
ingresadas
const aliveCards = [];
const deadCards = [];
// Utilizar Promise.all() para realizar las solicitudes de forma
paralela
const promises = cardList.map(async (card) => {
const cardData = card.split("|");
if (cardData.length !== 5) {
console.log('Formato incorrecto para la tarjeta:', card); //
Debug: Tarjetas con formato incorrecto
return;
}
const cardNumber = cardData[0];
const expiryMonth = cardData[1];
const expiryYear = cardData[2];
const cvc = cardData[3];
const email = cardData[4];
const paymentMethod = await stripe.createPaymentMethod({
type: 'card',
card: {
number: cardNumber,
exp_month: expiryMonth,
exp_year: expiryYear,
cvc: cvc
},
billing_details: {
email: email,
},
});
console.log('Resultado de verificación de tarjeta:',
paymentMethod); // Debug: Ver resultado de Stripe
if (paymentMethod.error) {
deadCards.push(card); // Si hay error, es una tarjeta muerta
} else {
// Si la tarjeta es válida, intentamos realizar el cobro de
0.50 USD
const chargeResult = await fetch('/create-charge', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
payment_method_id: paymentMethod.id,
amount: 50, // 50 centavos (0.50 USD)
})
});
const chargeData = await chargeResult.json();
if (chargeData.success) {
aliveCards.push(card); // Si el cobro fue exitoso, es una
tarjeta viva
} else {
deadCards.push(card); // Si el cobro falló, es una tarjeta
muerta
}
}
});
// Esperar a que todas las promesas se resuelvan
await Promise.all(promises);
// Mostrar tarjetas vivas y muertas
const aliveList = document.getElementById('alive-cards');
const deadList = document.getElementById('dead-cards');
aliveList.innerHTML = aliveCards.map(card =>
`<li>${card}</li>`).join('');
deadList.innerHTML = deadCards.map(card =>
`<li>${card}</li>`).join('');
});
</script>
</body>
</html>