537718 Posted October 5, 2011 Share Posted October 5, 2011 bonjour, je sais que ce topic a trouvé une réponse (http://www.prestasho...536#entry648536) mais elle est bien difficile à comprendre pour un newbie, et un newbie qui a sacrément besoin d'aide sur ce coup là... Alors d'avance je vous remercie... /// je n'arrive pas a créer une commande suite au paiement paypal. au moment de valider la commande je suis redirigé vers paypal, je peux réaliser le paiement. quand je confirme, la redirection vers notre site marchand se fait mais le message suivant apparaît : "La création de la commande a échoué" le compte paypal est débité, tout se passe normalement au niveau du paiement. le site marchand reçoit le virement qui est crédité sur le compte... en somme le souci semble localisé au niveau de la création de la commande dans prestashop. nos identifiants API ne sont donc a priori pas en cause... Je ne reçois aucun message d'erreur via Email de la part de Prestashop (meme en activant le mode debug de paypal.... a priori normal, vu que du point de vu de paypal, tout se passe bien), aucune commande n'est effectivement réalisée et le panier reste donc comme avant le paiement. que dois-je modifier pour que la création de la commande se passe correctement suite au paiement paypal? Je suis hébergé par Online en serveur mutualisé. Sur notre compte paypal je n'ai pas défini de page de renvoi vers le site marchand... et je n'ai pas activé Transfert des données de paiement. J'ai bien renseigné l'envoi des IPN vers la page validation.php LA RÉPONSE TROUVÉE SUR L'AUTRE TOPIC : MERCI DE M'ÉCLAIRER JE NE COMPRENDS PAS DE QUOI ON PARLE !!! Problème : - tous les problèmes Paypal venaient de timeouts sur la connexion à la base de donnée MySQL (wait_timeout = 120, visible dans l'interface de phpmyadmin) - le timeout paramétré chez online.net est de 120 secondes ce qui ne donne pas suffisamment de temps pour faire une commande + paiement Paypal - pas de moyen simple de changer ce timeout (en théorie il faut aller modifier un fichier de configuration sur le serveur, mais on y a pas accès) - prestashop ne vérifie pas au retour du paiement Paypal si la connexion MySQL est encore active Conséquences : - Le premier symptome c'etait le bug décrit sur le forum : page blanche + “La création de la commande a échoué” + mail d'erreur envoyé au client alors que le paiement a bien eu lieu - Après correction de celui-ci on tombe sur : "UNE ERREUR EST SURVENUE LORS DU PAIEMENT DE VOTRE COMMANDE." + aucun produit dans le panier + commande en statut "erreur de paiement" + total_paid = 0 alors que total_paid_real = montant du paiment paypal Solution : J'ai modifié la classe d'accès à la base de données MySQL (MySQL.php) pour vérifier avant chaque appel à la base si la connexion est encore active. Sinon on déclenche une déconnection/reconnection avant d'effectuer la requête SQL. Concrètement j'ai remplacé les tests if ($this->_link) par un appel à une nouvelle méthode if ($this->checkLink()) qui fait : /* Check DB link and reconnect after a timeout. (eg Paypal) */ public function checkLink() { if ($this->_link) { if (!mysql_ping ($this->_link)) { $this->disconnect(); $this->connect(); } } return $this->_link; Link to comment Share on other sites More sharing options...
537718 Posted October 5, 2011 Author Share Posted October 5, 2011 pour ne pas paniquer mes clients (la boutique est en production) j'ai remplacé le message : "La création de la commande a échoué" par : votre commande a bien été prise en compte.... Link to comment Share on other sites More sharing options...
lila67a Posted October 12, 2011 Share Posted October 12, 2011 Bonjour, J'ai le même problème que toi et la solution que propose Julio génère sur mon site (également hébergé sur online.net), une erreur interne 500. Je suis aussi une newbie, donc faudra pas trop m'en vouloir ;-) Voici ce que j'ai fait : dans MySQL.php, j'ai d'abord insérer le code de la fonction checkLink (proposé par Julio), en y ajoutant tout de même une accolade à la fin de la fonction. J'ai inséré cette fonction tout au début du script MYSQL. php Puis j'ai remplacé tous les if ($this->_link) par if ($this->checkLink()). je précise que je n'ai modifié que ceux qui était dans un if tout seul, et non ceux qui pouvait être dans un Ai-je fais une erreur ou y-aurait-il autre chose à faire ? Je n'ai pas demandé à Online.net, la modification du wait-timeout. Fallait-il le faire ? Ce n'est pas clairement noté dans la solution de Julio. Bref, si quelqu'un(e) pouvait me sortir de là, ce serait sympa. Car autant dire, que ce n'est pas très pratique de devoir générer à l'aide de l'outil de Julien, les commandes qui ne se créent pas, Ci-joint mon fichier MYSQL.php (renommé MYSQL_savv.php en attendant une éventuelle correction) Merci par avance pour votre aide. 1 Link to comment Share on other sites More sharing options...
madimedia Posted March 7, 2012 Share Posted March 7, 2012 Toujours pas de solution pour ce problème?? C'est désespérant!! Link to comment Share on other sites More sharing options...
parfimp Posted March 15, 2012 Share Posted March 15, 2012 Bonjour, Pourquoi éparpiller les topics? Cela ne facilitera pas la résolution de ce problème récurrent comme évoqué. Nous centralisons tous les commentaires relatifs à ce sujet ici: http://www.prestasho...ypal-sur-ps125/ Merci Cordialement Parfimp 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