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 '
'; } ?>