hipay / hipay-fullservice-sdk-magento2

Official repository of the HiPay Fullservice extension for Magento v2.
https://developer.hipay.com/doc/hipay-fullservice-sdk-magento2/
Apache License 2.0
10 stars 16 forks source link

Inscription - Validation cassée #117

Closed Axel29 closed 5 years ago

Axel29 commented 5 years ago

Pré-conditions

  1. Magento: 2.2.3
  2. PHP: 7.1

Étapes pour reproduire

  1. Installer Magento 2.2.3
  2. Installer le module HiPay_FullService avec la dernière version (à date 1.4.2)
  3. Mettre à jours la base de données (php bin/magento setup:upgrade)
  4. Purger les fichiers statiques (rm -rf pub/static/frontend/Magento/)
  5. Purger le cache magento (php bin/magento cache:flush)
  6. Accéder à la page de création de compte client (/customer/account/create)
  7. Valider le formulaire sans remplir aucun champ

Résultat attendu

  1. Des messages d'erreurs doivent apparaître sous chaque champ requis
  2. L'envoie du formulaire est bloqué

Résultat obtenu

  1. Le formulaire s'envoie malgré tout
  2. Aucune validation n'est faite
  3. Au rechargement de la page, un message d'erreur apparaît à propos du champ mot de passe uniquement.

Informations complémentaires

Le problème semble venir de la surcharge du JS "validation" dans le fichier "hipay/hipay-fullservice-sdk-magento2/view/frontend/web/js/validation.js", déclaré dans le fichier hipay/hipay-fullservice-sdk-magento2/view/frontend/requirejs-config.js :

var config = {
    "map": {
        "*": {
            "card": "HiPay_FullserviceMagento/card",
            "validation": "HiPay_FullserviceMagento/js/validation"
        }
    },
    "config": {
        "mixins": {
            "Magento_Tax/js/view/checkout/summary/grand-total": {
                "HiPay_FullserviceMagento/js/grand-total-mixin": true
            }
        }
    }
};
Axel29 commented 5 years ago

Après avoir débuggé de mon côté, j'ai fini par trouver l'erreur.

Elle se situait bien dans le fichier validation.js. Au lieu de déclarer le début du fichier via un define([...], function () { ... });, vous avez utilisé un require([...], function () { ... });.

Voici le bon code à utiliser :

define([
    'jquery',
    'mage/validation',
    'Magento_Payment/js/model/credit-card-validation/cvv-validator',
    'Magento_Payment/js/model/credit-card-validation/credit-card-data'
], function($,validation,cvvValidator,creditCardData){
    $.validator.addMethod(
        'validate-cvv-hipay', function (value, element) {
            if (creditCardData.creditCard.type != 'MI' || value != '' ) {
                var maxLength = creditCardData.creditCard ? creditCardData.creditCard.code.size : 3;
                return cvvValidator(value, maxLength).isValid;
            }
            return true;
        }, $.mage.__('Please enter a valid credit card verification number.'));

});
legithubdeaymeric commented 5 years ago

Merci @Axel29 pour le retour et la PR.

On l'intègre dans la prochaine release !