magento2
magento2 copied to clipboard
Informação de erro inconsistente - sugestão/erro
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.
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;
}
Olá @redati! Tudo bem?
Vamos adicionar em nossa esteira de desenvolvimento e assim que possível lhe damos um retorno aqui.
Obrigado! 😄