Jump to content

Recommended Posts

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

 

Share this post


Link to post
Share on other sites

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é ? 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Ok...

Pas d'override particulière sur paymentModule ou orders ? Parce que là je ne vois pas trop...

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

Ces commandes ont des règles paniers / cadeaux offerts ?

Share this post


Link to post
Share on other sites

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 :)

Capture.PNG

Share this post


Link to post
Share on other sites

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). :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Ok je vais essayer de trouver ça. Je reviendrai donner des nouvelles ici.
Merci, et bonne soirée !

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More