Validar una tarjeta de credito
Dado que estoy trabajando en una web en la que el sistema pide al usuario una tarjeta de crédito como justificante de pago, me surgió la duda de cómo se podría validar la tarjeta. Claro, lo siguiente que me vino a la cabeza es qué significa cada dígito de los 16 que está comprendido la numeración de la misma.
Investigando en internet (donde sino…) he logrado sacar el patrón. La validación, eno, se consigue tomando las cifras en las posiciones impares y multiplicándolas por dos. Si al multiplicar alguna de ellas por dos, el número resultante es mayor que 9, se suman las dos cifras del resultado. Los números obtenidos se suman entre sí y se suman también los números que ocupan una posición par. Si el resultado es un múltiplo de 10 es que el número de tarjeta es correcto (o al menos es coherente).
A continuación, mi código PHP para validar cualquier tarjeta de crédito:
<?
function validar_tarjeta ($numero) {
$suma = 0;
for ($i = 0; $i < 16; $i++) {
if ($i % 2) {
$suma += $numero[$i]; //par
}else{ //impar
if ($numero[$i] != 9) {
$suma += 2 * $numero[$i] % 9;
}else{
$suma += 9;
}
}
}
if ($suma % 10 == 0 && $suma < 150) {
return true;
}else{
return false;
}
}
?>
Tan solo tenemos que pasarle como parámetro el número de la tarjeta y listo, ya podremos validar si la tarjeta es válida o no.
Ojo, esta función lo único que valora es si la numeración de la tarjeta es coherente. No significa que porque el valor devuelto sea true la tarjeta sea real, puesto que he probado con tarjetas caducadas y funciona. Recordar que con esta función podreis saber si la tarjeta que ha introducido es real o si se la ha inventado (que de ser así… menuda capacidad de inventiva jeje).
Saludos!

Escribe un comentario