Las tarjetas de crédito

La especificación para el número de tarjeta de crédito es gobernada por la International Standards Organization (ISO/IEC 7812-1:1993) y el American National Standards Institute (ANSI X4.13).



Mayor Industry Identifier (MII)

MII  Asignación
1, 2Aerolíneas (Diners Club enRoute)
3
Viaje y entretenimiento (American Express, Diner's Club, JCB y Carte Blanche)
4Banca y finanzas (Visa, Switch, y Electron)
5Banca y finanzas (Mastercard y Bankcard)
6Merchandising y finanzas (Discover Card, Laser, Solo, Switch y China UnionPay)
7Petroleo
8Telecomunicaciones
9Asignación Nacional
Sí el MII es el 9, los siguientes 3 dígitos del Issuer Identifier son los códigos del país definidos en la ISO 3166, y los 2 dígitos finales del Issuer Identifier pueden ser definidos por el cuerpo de estándares nacional especificado por el país.

Algunos tipos de tarjetas:

  • Visa: 4xxxxxx
  • Mastercard: 5xxxxx
  • Discover: 6011xx, 644xxx, 65xxxx
  • American Express: 3xxxx, 37xxxx
  • Diner's Club y Carte Blanche: 300xxx-305xxx, 36xxxx, 38xxxx
Tamaño del número de tarjeta:

  • Visa y Visa Electron: 13 o 16
  • Mastercard: 16
  • Discover: 16
  • American Express: 15
  • Diner's Club (incluyendo enRoute, International, Blanche): 14
  • Maestro: 12 a 19 (multinacional tarjeta de débito)
  • Laser: 16 a 19 (Ireland Debit Card)
  • Switch: 16, 18 o 19 (United Kingdom Debit Card)
Issuer Identification Number (IIN) or Bank Identification Number (BIN)

Los 6 primeros dígitos del número de la tarjeta de crédito (incluyendo el dígito inicial MII ) forman el Issuer Identification Number o IIN. EL IIN también es mencionado el Bank Identification Number o BIN. Estos dígitos identifican cual es la organización que publicó la tarjeta de crédito.

Número de cuenta

Los 7 dígitos (menos el checksum) indican el identificador de cuenta individual. La longitud máxima de un número de la tarjeta de crédito es 19 dígitos. Desde 6 dígitos iniciales de un número de la tarjeta de crédito son el identificador de emisor, y el dígito final es el dígito de comprobación, esto quiere decir que la longitud máxima del campo de número de cuenta es 19 menos 7, 12 dígitos en total. Cada emisor por lo tanto tiene un billón de números de cuenta posibles. 

Checksum

El dígito final de su tarjeta de crédito es un código de control o checkdigit, parecido a la suma de verificación o checksum.
El algoritmo de Luhn, conocido por el calculo de códigos de verificación modulo 10, puede ser usado para validar números de cuenta.


El algoritmo fue diseñado para proteger de errores accidentales pero no ataques maliciosos.
El algoritmo descubrirá casi cualquier error en un dígito.

Obtener información de la tarjeta mediante C#


Uso mediante solicitudes HTTP GEThttp://www.binlist.net/{format}/{bin}
Formatos soportados csv, xml o json.


Código en C# (Aplicación de consola):

public class CreditCardInformation
    {
        public string bin { get; set; }
        public string brand { get; set; }
        public string sub_brand { get; set; }
        public string country_code { get; set; }
        public string country_name { get; set; }
        public string bank { get; set; }
        public string card_type { get; set; }
        public string card_category { get; set; }
        public string latitude { get; set; }
        public string longitude { get; set; }
    }


    class Program
    {
        static void Main(string[] args)
        {
            var creditCardInformation = GetCreditCardInformation("431940");
            foreach(var property in creditCardInformation.GetType().GetProperties())
            {
                Console.WriteLine("{0} = '{1}';", property.Name, (string)property.GetValue(creditCardInformation, null));
            }
            Console.ReadLine();
        }

        private static CreditCardInformation GetCreditCardInformation(string number)
        {
            string jsonText = string.Empty;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("https://www.binlist.net/json/{0}", number));
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                jsonText = reader.ReadToEnd();
            }
            
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Deserialize<CreditCardInformation>(jsonText); 
        }
    }

Comentarios