Skip to content

Instantly share code, notes, and snippets.

@albertobraschi
Forked from erikhenrique/bin-cc.md
Created January 14, 2016 01:52
Show Gist options
  • Save albertobraschi/d36d81a992f89386b473 to your computer and use it in GitHub Desktop.
Save albertobraschi/d36d81a992f89386b473 to your computer and use it in GitHub Desktop.
Bin de cartões de crédito para validação

Validação para cartão de crédito.

Bin e padrões para validação de cartão de crédito.

Bandeira Começa com Máximo de número Máximo de número cvc
Visa 4 13,16 3
Mastercard 5 16 3
Diners 301,305,36,38 (http://bin-iin.com/American-Express-BIN-List.html) 14,16 3
Elo 636368, 438935, 504175, 451416, 636297,5067,4576,4011,506699 16 3
Amex 34,37 15 4
Discover 6011,622,64,65 16 4
Aura 50 16 3
jcb 35 16 3
Hipercard 38,60 13,16,19 3

Atualização (23/07/2014):

Os dados dos cartões: Elo, Hipercard desta tabela não são oficiais. Tentei diversas vezes falar com o pessoal dessas bandeiras afim de ter uma informação oficial, porém, é muito difícil falar com o setor técnico e as atendentes nem sabem o que é bin de cartão e nem sabem do que estou falando :(

Essa tabela foi montada através de coleta de dados de cartões reais. Onde o usuário colocava o número de cartão de crédito dele e quando não conseguíamos saber qual a banheira pedíamos para que o usuário selecionasse a bandeira. A partir deste momento coletávamos os primeiros dígitos do cartão.

Eu atualizei essa tabela até o mês de Agosto/2013. Não sei se teve atualizações desde então. De qualquer forma acredito que é uma boa tabela de referência e acredito que a busca pelo padrão continua pois deve ter cartões que ainda não estão em nenhum padrão.

Caso tenha alguma dúvida me mande um email: erikhq cpan org Quando tem um novo comentário aqui nesta gist eu não recebo notificação.

Caso você saiba de algum novo padrão ou viu algo de errado, por favor, ajude a manter essa tabela atualizada.

Existe este site também para cartões internacionais: http://bin-iin.com/

vlw

Atualização (13/07/2015):

Adicionei 506699 para o cartão ELO.

@albertobraschi
Copy link
Author

{
name: 'elo',
regexpBin: '^401178|^401179|^431274|^438935|^451416|^457393|^457631|^457632|^504175|^627780|^636297|^636369|^(506699|5067[0-6]\d|50677[0-8])|^(50900\d|5090[1-9]\d|509[1-9]\d{2})|^65003[1-3]|^(65003[5-9]|65004\d|65005[0-1])|^(65040[5-9]|6504[1-3]\d)|^(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|^(65054[1-9]|6505[5-8]\d|65059[0-8])|^(65070\d|65071[0-8])|^65072[0-7]|^(65090[1-9]|65091\d|650920)|^(65165[2-9]|6516[6-7]\d)|^(65500\d|65501\d)|^(65502[1-9]|6550[3-4]\d|65505[0-8])',
regexpFull: '^(401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636369|(506699|5067[0-6]\d|50677[0-8])|(50900\d|5090[1-9]\d|509[1-9]\d{2})|65003[1-3]|(65003[5-9]|65004\d|65005[0-1])|(65040[5-9]|6504[1-3]\d)|(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|(65054[1-9]|6505[5-8]\d|65059[0-8])|(65070\d|65071[0-8])|65072[0-7]|(65090[1-9]|65091\d|650920)|(65165[2-9]|6516[6-7]\d)|(65500\d|65501\d)|(65502[1-9]|6550[3-4]\d|65505[0-8]))[0-9]{10,12}',
regexpCvv: '^\d{3}$',
}, {
name: 'diners',
regexpBin: '^3(?:0[0-5]|[68][0-9])',
regexpFull: '^3(?:0[0-5]|[68][0-9])[0-9]{11}$',
regexpCvv: '^\d{3}$',
}, {
name: 'discover',
regexpBin: '^6(?:011|5[0-9]{2})',
regexpFull: '^6(?:011|5[0-9]{2})[0-9]{12}$',
regexpCvv: '^\d{3}$',
}, {
name: 'hipercard',
regexpBin: '^3841[046]0|^60',
regexpFull: '^(38[0-9]{17}|60[0-9]{14})$',
regexpCvv: '^\d{3}$',
}, {
name: 'amex',
regexpBin: '^3[47]',
regexpFull: '^3[47][0-9]{13}$',
regexpCvv: '^\d{3,4}$',
}, {
name: 'aura',
regexpBin: '^50[0-9]',
regexpFull: '^50[0-9]{14,17}$',
regexpCvv: '^\d{3}$',
}, {
name: 'mastercard',
regexpBin: '^5[1-5][0-9][0-9]',
regexpFull: '^5[1-5][0-9]{14}$',
regexpCvv: '^\d{3}$',
}, {
name: 'visa',
regexpBin: '^4',
regexpFull: '^4[0-9]{12}(?:[0-9]{3})?$',
regexpCvv: '^\d{3}$',
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment