Uma ferramenta de testes segura para desenvolvedores de sistemas de pagamento e profissionais de QA. Todos os números de teste são não funcionais e exclusivos para ambientes de desenvolvimento.

4 min de leitura Por Namso Gen
Entendendo os números BIN: guia para desenvolvedores

Entendendo os números BIN: guia para desenvolvedores

O que é um número BIN/IIN?

Os números de identificação bancária (BIN) ou números de identificação do emissor (IIN) são os primeiros 6-8 dígitos do número de um cartão de pagamento que identificam a instituição emissora do cartão. Esses números são essenciais para o processamento de pagamentos, a detecção de fraudes e o roteamento de transações.

Estrutura do número BIN

Detalhamento do formato padrão

Posição Tamanho Propósito Exemplo
1 1 dígito Identificador Principal da Indústria (MII) 4 (Bancos)
2-6 5 dígitos Instituição emissora 12345
7-8 2 dígitos BIN estendido (opcional) 67

Valores do Identificador Principal da Indústria (MII)

Dígito MII Indústria
0 Atribuição ISO/TC 68
1 Companhias aéreas
2 Companhias aéreas/Financeiro
3 Viagens/Entretenimento
4 Bancos/Financeiro
5 Bancos/Financeiro
6 Varejo
7 Petróleo/Outros
8 Saúde/Telecomunicações
9 Atribuição nacional

Faixas de BIN comuns por bandeira

Faixas de BIN principais

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

Implementação de consulta de BIN

def validate_bin(card_number):
    bin_number = card_number[:6]
    
    # Validação básica
    if not bin_number.isdigit():
        return False
        
    # Identificação da bandeira
    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]
    }

Propriedades dos dados de BIN

Campos padrão de resposta de BIN

Campo Descrição Exemplo
scheme Bandeira "visa"
country País emissor "US"
type Tipo de cartão "credit"
category Categoria do cartão "platinum"
issuer Banco emissor "CHASE"
length Tamanho do número do cartão 16

Regras de validação baseadas em BIN

Tamanho do número do cartão por bandeira

Bandeira Tamanhos válidos
Visa 13, 16, 19
Mastercard 16
American Express 15
Discover 16, 19
UnionPay 16-19

Exemplo de integração

const binValidator = {
  checkBIN: function(cardNumber) {
    const bin = cardNumber.substring(0, 6);
    const length = cardNumber.length;
    
    // Verificação básica do formato
    if (!/^\d{6}/.test(bin)) {
      return {
        valid: false,
        error: 'Invalid BIN format'
      };
    }
    
    // Detecção da bandeira
    const network = this.detectNetwork(bin);
    
    // Validação do tamanho
    const isValidLength = this.validateLength(length, network);
    
    return {
      valid: isValidLength,
      network: network,
      bin: bin,
      cardLength: length
    };
  },
  
  detectNetwork: function(bin) {
    // Lógica de detecção da bandeira
    if (/^4/.test(bin)) return 'visa';
    if (/^5[1-5]/.test(bin)) return 'mastercard';
    if (/^3[47]/.test(bin)) return 'amex';
    return 'unknown';
  }
};

Considerações de segurança

  1. Proteção de dados

    • Nunca armazene números de cartão completos
    • Criptografe os dados de BIN em trânsito
    • Limite o acesso aos dados de BIN
  2. Requisitos de conformidade

    • Conformidade com PCI DSS para armazenamento de BIN
    • Políticas de retenção de dados
    • Implementação de controle de acesso
  3. Otimização de desempenho

    • Faça cache dos resultados de consulta de BIN
    • Implemente limite de taxa (rate limiting)
    • Use consultas de BIN em lote

Boas práticas para processar BIN

Prática Propósito Implementação
Cache Reduzir chamadas à API Armazenar os dados de BIN em memória
Validação Evitar erros Verificar o formato antes de processar
Monitoramento Detectar problemas Registrar padrões de consulta de BIN

Este guia reúne as informações essenciais para trabalhar com números BIN em sistemas de processamento de pagamentos. Use-o para melhorar a validação de pagamentos, a detecção de fraudes e o roteamento de transações nas suas aplicações.

Artigos relacionados