webmaster@karoil.eu Posted July 6, 2018 Share Posted July 6, 2018 Bonjour, Je viens vers vous car j'ai un soucis avec ma boutique. En effet, il arrive parfois que des commandes soient créées en double (même date, même produits, même prix, même utilisateur etc...) excepté l'id de la commande ainsi que sa référence. L'id_cart des commandes sont identiques donc les deux commandes sont créées à partir du même panier. Ce problème survient de temps en temps, sur tout type de paiement. En regardant le code de plus près je ne sais pas comment c'est possible. Dans classes/PaymentModule il y a une vérification si la commande existe déjà avec this->context->cart->OrderExists() dans la fonction validateOrder, cela devrait normalement retourner true mais la condition passe quand même. Il est normalement impossible de cliquer plusieurs fois sur le bouton de confirmation de commande (j'ai rajouté un disabled une fois que le bouton a été cliqué). Etant le développeur j'ai modifié quelques fichiers comme pour la génération de référence, mais pas beaucoup plus. Les modifications ne sont pas autours de la création de commande. Modification de la fonction de référence dans override/classes/order/Order.php : public static function generateReference () { $last_id = Db::getInstance()->getValue(' SELECT MAX(id_order) FROM ' . _DB_PREFIX_ . 'orders'); return 'WEB-' . str_pad((int)$last_id + 1, 7, '0000000', STR_PAD_LEFT); } Je cherche depuis maintenant plusieurs mois une réponse à ce problème mais impossible de trouver une solution. Si vous avez des idées n'hésitez pas. Merci d'avance Link to comment Share on other sites More sharing options...
Eolia Posted July 6, 2018 Share Posted July 6, 2018 différence d'heure entre les 2 commandes ? car on dirait que c'est le temps que met Prestashop à créer la première (jusqu'au order->add() ) du coup la première n'étant pas encore crée, juste en cours, la 2ème a le temps de passer le test. - Beaucoup de cart_rules sur votre boutique ? - Module qui gère le transport avec appels externe ? - Mutualisé ou dédié ? Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 6, 2018 Author Share Posted July 6, 2018 Bonjour, Merci pour votre réponse. Les deux sont générés exactement à la même heure, pas une seule seconde de différence. C'est aussi ce que je me dis, la fonction est appelé deux fois. A savoir, la fonction hookOrderConfirmation appelé une fois qu'on arrive sur la page de confirmation est appelé une seule fois. Elle prend en compte toujours la première commande créée. Concernant les cart_rules, il y en a une seule d'active pour un client en particulier qui n'a pas eu de doublons de commande. L'erreur surviens pour le module TNT ainsi que celui de base installé sur Prestashop pour le retrait en Magasin. Concernant le serveur c'est un serveur dédié avec plusieurs applications qui tournent dessus. Pas de soucis de ralentissement ou autre. Merci Link to comment Share on other sites More sharing options...
Eolia Posted July 6, 2018 Share Posted July 6, 2018 Ok... Pas d'override particulière sur paymentModule ou orders ? Parce que là je ne vois pas trop... Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 6, 2018 Author Share Posted July 6, 2018 Si sur les deux, Order pour rajouter des colonnes et PaymentModule pour essayer de corriger le problème. Je joins les deux override Order.php PaymentModule.php Link to comment Share on other sites More sharing options...
Eolia Posted July 6, 2018 Share Posted July 6, 2018 Ok donc le problème vient d'ailleurs. Il faudrait regarder les logs d'accès en POST pour voir si la requete de création de commande n'est pas lancé 2 fois (appels en js ou php) Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 6, 2018 Author Share Posted July 6, 2018 (edited) Une idée de l'emplacement des logs ? Serveur Linux au cas ou Edited July 6, 2018 by webmaster@karoil.eu (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted July 6, 2018 Share Posted July 6, 2018 /var/logs/ Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 6, 2018 Author Share Posted July 6, 2018 En vérifiant les logs sur les deux dernières commandes en double, j'ai en effet 2 requête en POST. Pour une des commandes, les requêtes sont faites exactement en même temps et sur l'autre il y a 2 seconde d'écarts. Je ne sais pas comment c'est possible sachant que le bouton deviens disable lors du premier clic ... En tout cas merci de votre temps et de vos bons conseils Link to comment Share on other sites More sharing options...
Eolia Posted July 6, 2018 Share Posted July 6, 2018 je soupçonne un bout de js qui traînerait dans le coin et se déclencherait au clic ou un truc du genre (onClick form.submit() par exemple plus le click sur l'input du client) Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 6, 2018 Author Share Posted July 6, 2018 Je vais regarder de ce côté là, je vous tiens au courant. Merci beaucoup Link to comment Share on other sites More sharing options...
webmaster@karoil.eu Posted July 27, 2018 Author Share Posted July 27, 2018 Bon je n'ai pas trouvé grand chose. Pour éviter ce problème, en espérant que ça fonctionne, j'ai ajouté un petit peu de JS sur le form : onsubmit="myButton.disabled=true; return true;" Pour le moment, après une semaine en production, je n'ai pas eu de doublons. J'espère que ça continuera comme ça. Merci pour votre aide en tout cas Link to comment Share on other sites More sharing options...
Robatop Posted January 15, 2020 Share Posted January 15, 2020 Bonjour, je suis confronté au même problème sur ma boutique. Nous utilisons le module de paiement de Paypal, tout le reste est standard et il n'y a pas d'overide sur le module ni sur le panier/checkout. Dernièrement, presque toutes les commandes sont doublées, triplées voire quintuplées ! Heureusement, seule la 1ere fait l'objet d'un paiement par le client. Mais c'est embêtant car ils reçoivent les confirmations en multiples exemplaires. Comme vous, les ID paniers sont identiques pour chaque doublon. Pourriez-vous m'aider à y voir un peu plus clair ? Quelle méthode avez-vous utilisé pour régler le souci de votre côté ? Merci d'avance ! Link to comment Share on other sites More sharing options...
Eolia Posted January 15, 2020 Share Posted January 15, 2020 Ces commandes ont des règles paniers / cadeaux offerts ? Link to comment Share on other sites More sharing options...
Robatop Posted January 15, 2020 Share Posted January 15, 2020 Bonjour Eolia. Non, ce sont des commandes "basiques", contenant un ou deux produits différents et sans aucune règle de panier. En pj une capture de ce que ça donne en back office. Merci de votre aide Link to comment Share on other sites More sharing options...
Eolia Posted January 15, 2020 Share Posted January 15, 2020 Dans la même seconde tout ça ? Link to comment Share on other sites More sharing options...
Robatop Posted January 15, 2020 Share Posted January 15, 2020 Et oui ! Et un seul paiement ! C'est comme si Prestashop recevait de multiples confirmations de paiement en simultané. Mais je n'ai pas vraiment de compétences techniques pour savoir où et comment vérifier cette intuition (qui est d'ailleurs peut être fausse). Link to comment Share on other sites More sharing options...
Eolia Posted January 15, 2020 Share Posted January 15, 2020 Pour le savoir il faut aller dans les logs d'accès du serveur à l'heure de ces commandes et regarder s'il y a plusieurs retours Paypal simultanés. Link to comment Share on other sites More sharing options...
Robatop Posted January 15, 2020 Share Posted January 15, 2020 Ok je vais essayer de trouver ça. Je reviendrai donner des nouvelles ici. Merci, et bonne soirée ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now