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!

Anuncios

Acerca de Javi Garcia
Web developer at www.dejandomarcas.com

3 Responses to Validar una tarjeta de credito

  1. System.factory says:

    chevere tu script …

  2. dhamaso says:

    oye primeramente gracias por tu script y segundo, oye tu sabes de que manera se puede saber si la tarjeta es valida? algo asi como conectarte a un sitio oficial y este retorne un true o false, dependiendo de la validez de la misma?

    • tomaru says:

      me alegra que te guste la función. Para tu duda, te recomiendo que visites esta web: http://www.bindatabase.net/search.php

      Ahí podrás verificar quién es el emisor de una tarjeta de crédito (nombre del banco, país de emisión…) con solo introducir los seis primeros dígitos de la tarjeta.

      Espero que te sea de ayuda, saludos y gracias por visitar el blog!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: