Una herramienta de pruebas segura para desarrolladores de sistemas de pago y profesionales de QA. Todos los números de prueba son no funcionales y exclusivamente para entornos de desarrollo.

4 min de lectura Por Namso Gen
Entender los números BIN: guía para desarrolladores

Entender los números BIN: guía para desarrolladores

¿Qué es un número BIN/IIN?

Los números de identificación bancaria (BIN) o números de identificación del emisor (IIN) son los primeros 6-8 dígitos de un número de tarjeta de pago que identifican a la institución emisora de la tarjeta. Estos números son fundamentales para el procesamiento de pagos, la detección de fraude y el enrutamiento de transacciones.

Estructura del número BIN

Desglose del formato estándar

Posición Longitud Propósito Ejemplo
1 1 dígito Identificador principal de industria (MII) 4 (Banca)
2-6 5 dígitos Institución emisora 12345
7-8 2 dígitos BIN extendido (opcional) 67

Valores del identificador principal de industria (MII)

Dígito MII Industria
0 Asignación ISO/TC 68
1 Aerolíneas
2 Aerolíneas/Financiero
3 Viajes/Entretenimiento
4 Banca/Financiero
5 Banca/Financiero
6 Comercio minorista
7 Petróleo/Otros
8 Salud/Telecomunicaciones
9 Asignación nacional

Rangos de BIN más comunes por red de tarjeta

Rangos de BIN principales

bin_ranges = {
    'Visa': ['4'],
    'Mastercard': ['51-55', '2221-2720'],
    'American Express': ['34', '37'],
    'Discover': ['6011', '644-649', '65'],
    'JCB': ['3528-3589'],
    'UnionPay': ['62']
}

Implementación de una consulta de BIN

def validate_bin(card_number):
    bin_number = card_number[:6]
    
    # Validación básica
    if not bin_number.isdigit():
        return False
        
    # Identificación de la red
    if card_number.startswith('4'):
        network = 'Visa'
    elif any(card_number.startswith(str(i)) for i in range(51, 56)):
        network = 'Mastercard'
    elif card_number.startswith(('34', '37')):
        network = 'American Express'
    else:
        network = 'Unknown'
        
    return {
        'bin': bin_number,
        'network': network,
        'length': len(card_number),
        'valid': len(card_number) in [13, 15, 16, 19]
    }

Propiedades de los datos de un BIN

Campos estándar de respuesta de un BIN

Campo Descripción Ejemplo
scheme Red de la tarjeta "visa"
country País emisor "US"
type Tipo de tarjeta "credit"
category Categoría de la tarjeta "platinum"
issuer Banco emisor "CHASE"
length Longitud del número de tarjeta 16

Reglas de validación basadas en el BIN

Longitud del número de tarjeta por red

Red Longitudes válidas
Visa 13, 16, 19
Mastercard 16
American Express 15
Discover 16, 19
UnionPay 16-19

Ejemplo de integración

const binValidator = {
  checkBIN: function(cardNumber) {
    const bin = cardNumber.substring(0, 6);
    const length = cardNumber.length;
    
    // Verificación básica del formato
    if (!/^\d{6}/.test(bin)) {
      return {
        valid: false,
        error: 'Invalid BIN format'
      };
    }
    
    // Detección de la red
    const network = this.detectNetwork(bin);
    
    // Validación de la longitud
    const isValidLength = this.validateLength(length, network);
    
    return {
      valid: isValidLength,
      network: network,
      bin: bin,
      cardLength: length
    };
  },
  
  detectNetwork: function(bin) {
    // Lógica de detección de la red
    if (/^4/.test(bin)) return 'visa';
    if (/^5[1-5]/.test(bin)) return 'mastercard';
    if (/^3[47]/.test(bin)) return 'amex';
    return 'unknown';
  }
};

Consideraciones de seguridad

  1. Protección de datos

    • Nunca guardes números de tarjeta completos
    • Cifra los datos de BIN en tránsito
    • Limita el acceso a los datos de BIN
  2. Requisitos de cumplimiento

    • Cumplimiento de PCI DSS para el almacenamiento de BIN
    • Políticas de retención de datos
    • Implementación de control de acceso
  3. Optimización del rendimiento

    • Almacena en caché los resultados de las consultas de BIN
    • Implementa límites de tasa (rate limiting)
    • Usa consultas de BIN en lote

Buenas prácticas para procesar BIN

Práctica Propósito Implementación
Caché Reducir llamadas a la API Guardar los datos de BIN en memoria
Validación Evitar errores Verificar el formato antes de procesar
Monitoreo Detectar problemas Registrar patrones de consulta de BIN

Esta guía ofrece la información esencial para trabajar con números BIN en sistemas de procesamiento de pagos. Úsala para mejorar la validación de pagos, la detección de fraude y el enrutamiento de transacciones en tus aplicaciones.

Artículos relacionados