Generador y Validador de Tarjetas
9) $digit -= 9;
}
$sum += $digit;
}
return ($sum % 10) == 0;
}
function completar_tarjeta($bin) {
$bin = preg_replace('/x/i', '0', $bin);
$faltantes = 16 - strlen($bin);
for ($i = 0; $i < pow(10, $faltantes); $i++) {
$sufijo = str_pad((string)$i, $faltantes, '0', STR_PAD_LEFT);
$num_completo = $bin . $sufijo;
if (luhn_check($num_completo)) return $num_completo;
}
return false;
}
function detectar_tipo_tarjeta($numero) {
if (preg_match('/^4[0-9]{12}(?:[0-9]{3})?$/', $numero)) return 'Visa';
elseif (preg_match('/^5[1-5][0-9]{14}$/', $numero)) return 'MasterCard';
elseif (preg_match('/^3[47][0-9]{13}$/', $numero)) return 'American Express';
else return 'Desconocido';
}
function generar_cvv($tipo) {
return $tipo == 'American Express' ? rand(1000, 9999) : rand(100, 999);
}
function generar_fecha_expiracion() {
$mes = str_pad(rand(1, 12), 2, '0', STR_PAD_LEFT);
$anio = date('y') + rand(1, 5);
return "$mes/$anio";
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$bin = trim($_POST['bin']);
$numero_generado = completar_tarjeta($bin);
echo '
';
if ($numero_generado) {
$tipo = detectar_tipo_tarjeta($numero_generado);
$cvv = generar_cvv($tipo);
$exp = generar_fecha_expiracion();
echo 'Número generado: ' . $numero_generado . '
';
echo 'Tipo: ' . $tipo . '
';
echo 'CVV: ' . $cvv . '
';
echo 'Expira: ' . $exp . '
';
echo 'Validez: Válida ✅';
} else {
echo 'No se pudo generar un número válido con el BIN proporcionado ❌';
}
echo '
';
}
?>