magento2 icon indicating copy to clipboard operation
magento2 copied to clipboard

Informação de erro inconsistente - sugestão/erro

Open redati opened this issue 1 year ago • 2 comments

https://github.com/pagarme/magento2/blob/7ff4068d3faf6d36692dbd00bbb145e37b6a5bcb/view/frontend/web/js/core/models/CreditCardModel.js#L28

Olá, tenho tentando investigar, algumas situações e que o pagamento falha para um cartão de crédido válido de alguns clientes específicos. Porém vejo que getCreditCardToken falha, mas informa o erro de forma errada, informando que o cartão é inválido, porém, é um cartão valido, logo, o erro é outro. Seria interessante capturar esses erros de integração na plataforma local ou no próprio sistema de pagamento como é feito na Stripe, os erros de checkout lá são capturados e armazenados para analise. Fica mais fácil identificar erros e melhora o monitoramento dessa parte crítica da loja.

redati avatar Apr 26 '23 12:04 redati

verifiquei que já existe os retornos de erros coretos, falta apenas exibir eles traduzidos, eu passei a coltetar esses erros e vi que acontece com frequencia, porém as pessoas ficam sem saber o porque que deu errado a compra, ex:

"errors":{"request.card.holder_name":["You may not use numbers or special characters."]} The number field is not a valid card number

esse em especial tem acontecido com frequencia: You may not use numbers or special characters.

e vejo pessoas deixando de comprar por não saber o que fazer, (tenho uma loja com publico mais de idade, com menos experiências em compras online), ai eles querem usar acento no nome. Esse campo poderia ser normalizado ou retornado o erro correto, aumentaria a taxa de conversão das lojas, incluíndo também validações em javascript para que a pessoa saiba do erro antes de clicar em comprar.

poderia usar esse regex para validar /[\u00C0-\u00FF]+/i, onde verifica se existe acentos, mas acredito que uma boa solução seria fazer a normalização do campo no backend.

CreditCardValidator.prototype.IsNameInvalid = function (element){

var parentsElements = element.parent().parent();

var accentRegex = /[\u00C0-\u00FF]+/i;

if (accentRegex.test(element.val())) {

    parentsElements.addClass("_error");
    parentsElements.find(".field-error").show();
    parentsElements.find(".field-error span span").text("Por favor. Sem acentos ou caracteres especiais. Precisa ser exatamente igual no cartão.");

    return true;
}

parentsElements.removeClass("_error");
parentsElements.find(".field-error").hide();
return false;

}

redati avatar May 02 '23 17:05 redati

Olá @redati! Tudo bem?

Vamos adicionar em nossa esteira de desenvolvimento e assim que possível lhe damos um retorno aqui.

Obrigado! 😄

RafaMelazzo avatar Aug 17 '23 19:08 RafaMelazzo