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

 

Link to comment
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é ? 

Link to comment
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

Link to comment
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

Link to comment
Share on other sites

  • 3 weeks later...

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

  • 1 year later...

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...