wirecardBrasil / moip-sdk-js

SDK Javascript que possibilita a criptografia de dados sensíveis de cartão no browser do cliente assim como identificação e validação de números de cartão de crédito. Para Web / React Native / Ionic 1 / Ionic 3.
MIT License
62 stars 23 forks source link

Validação #6

Open prem-prakash opened 6 years ago

prem-prakash commented 6 years ago

Olá Bruno,

https://github.com/brunoosilva/moip-sdk-js/blob/master/src/validator.js#L88

   static normalizeCardNumber(creditCardNumber) {
      if(!creditCardNumber){
        return creditCardNumber;
      }
      creditCardNumber += '';
      return creditCardNumber.replace(/[\s+|\.|\-]/g, '');
    }

Você sabe dizer porque neste ponto da validação o código só remove alguns caracteres?

O correto não seria fazer uma expressão regular que deixasse apenas os números?

Faz sentido? Sabe se existe número de cartão de crédito que algum caracter que não seja número, tipo "X"?

Se fosse assim, funcionaria?

   static normalizeCardNumber(creditCardNumber) {
      if(!creditCardNumber){
        return creditCardNumber;
      }
      creditCardNumber += '';
      return creditCardNumber.replace(/[^0-9]/g, '');
    }
somentelucas commented 6 years ago

Oi @prem-prakash, desculpe pela demorada resposta. Eu nunca vi nenhum cartão de crédito que possua uma letra (exemplo "X"), você já viu algo? Nesse caso, acredito que se um dia houvesse algum cartão de crédito com letra, ela também deveria ser validada (já que faz parte da composição do identificador dele).

Mas na situação atual, parece que as duas expressões regulares fariam sentido (a que remove alguns caracteres e a que deixa apenas números). Não sei dizer nesse caso se existe uma que seja mais correta que a outra.

Vou fechar essa issue por não se tratar exatamente de um problema, beleza? Muito obrigado!

prem-prakash commented 6 years ago

Acho que não expliquei direito, o ponto que quis levantar é porque nós usamos espaço como separador dos grupos de números do cartão de crédito e neste caso a expressão atual não resolve. Resumo da ópera: a expressão deveria retornar apenas números.

somentelucas commented 6 years ago

Tem razão, @prem-prakash, faz sentido mesmo.

somentelucas commented 6 years ago

@prem-prakash, acabei de fazer um teste aqui e funcionou:

screen shot 2018-08-20 at 5 26 05 pm

Você fez alguma coisa diferente disso?