Jump to content

problème création commande suite paiement Paypal


Recommended Posts

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

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.

  • Like 1
Link to comment
Share on other sites

  • 4 months later...

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