Jump to content

Problème de cookie dans les callbacks


Recommended Posts

Bonjour à tous,

 

suite à la mise à jour de ma boutique, j'ai constaté beaucoup de commande sur lequelles je n'ai pas de validation de l'étalissement bancaire. J'ai alors moi même procédé à une commande sur le site. Après la validation du réglement, la page de confirmation m'indique le message suivant : "Un problème est survenu avec votre commande. Si vous pensez que c'est une erreur, veuillez contacter notre support client".

 

Le problème c'est que les réglements sont bien débités. J'ai alors regardé dans les logs au niveau d'apache :

 

[Mon Jun 25 11:50:10 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/socolissimo/backward_compatibility/Context.php on line 107

[Mon Jun 25 11:50:10 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/socolissimo/backward_compatibility/Context.php on line 108

[Mon Jun 25 11:50:10 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/socolissimo/backward_compatibility/Context.php on line 109

[Mon Jun 25 11:50:10 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/socolissimo/backward_compatibility/Context.php on line 111

[Mon Jun 25 11:50:10 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/socolissimo/backward_compatibility/Context.php on line 112

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/mailalerts/mailalerts.php on line 356

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Use of undefined constant _PS_BASE_URL_ - assumed '_PS_BASE_URL_' in /var/www/monsite/classes/Link.php on line 74

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/classes/Link.php on line 83

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Undefined offset: 0 in /var/www/monsite/classes/Link.php on line 83

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/modules/mailalerts/mailalerts.php on line 356

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Use of undefined constant _PS_BASE_URL_ - assumed '_PS_BASE_URL_' in /var/www/monsite/classes/Link.php on line 74

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Trying to get property of non-object in /var/www/monsite/classes/Link.php on line 83

[Mon Jun 25 11:50:11 2012] [error] [client X.X.X.X] PHP Notice: Undefined offset: 0 in /var/www/monsite/classes/Link.php on line 83

 

Après avoir regardé les lignes de code, dans la majorité des cas, c'est la variable $cookie qui n'est pas définie lors de ces "callback".

 

Avez-vous une idée ?

 

Merci d'avance

Link to comment
Share on other sites

Bonjour,

interessé par une réponse aussi car je suis confronté à ce même type de probleme, j'en ai informé le service addon de prestashop et attends leur réponse.

Mise à jour de la derniere version de Prestashop, puis probleme de Binaries sur le module Atos 2. qui a été résolu par Prestashop, mais je ne m'étais pas apperçu qu'après paiement mes clients recevaient le même message d'erreur :

Un problème est survenu avec votre commande. Si vous pensez que c'est une erreur, veuillez contacter notre

support client

.

J'ai le signalement erreur paiement dans le back-office.

Je ne sais pas si mes clients sont débités... je ne crois pas...

 

Si j'ai plus d'info je posterai ici la réponse de prestashop...

 

Merci,

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

 

J'ai le meme problème (PS 1.4.9 + module Atos 2.3)

Le paiement est validé, quand je clique sur le bouton "Retour sur la boutique", le message suivant apparait sur mon site : "Un problème est survenu avec votre commande. Si vous pensez que c'est une erreur, veuillez contacter notre support client"

=> le paiement est cependant enregistré

=> la commande apparait dans la partie "message client" en statut 0

 

Avez vous fixé ce problème ?

Merci

Ju@n

Link to comment
Share on other sites

  • 1 month later...

Bonjour Ju@n, j'ai le même problème. Prestashop m'a envoyé un nouveau module Atos 2.6 mais cela ne corrige pas le problème.

L'avez vous corrigé ?

Par contre, je n'ai pas ce message d'erreur avec un paiement par chèque

Merci d'avance pour votre aide.

KMJ

Edited by KMJ (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Bug fixé de mon coté (PS 1.4.8 + module Atos 2.5), voici la solution proposée :

 

1) Bug affichage fancybox module SoColissimo qui provoque également une erreur de paiement

(Si vous n'avez pas ce bug ou que vous n’utilisez pas le module SoColissimo, passez à l'étape 2)

Si vous utilisez le module SoColissimo et que vous proposez le transport gratuit, changez les paramètres en passant le transport à 0 euro (à définir sur une tranche de poids ou de prix) au lieu de mettre gratuit à partir de...

Cf. screenshot joint

post-386583-0-93115700-1351609730_thumb.jpg

 

Le transport sera offert (0€) et le bug de SoColissimo disparaît => la fancybox de la Poste apparaît donc correctement au moment de valider le transporteur.

 

 

2) Problème sur le module Atos > confirmation de la commande

Modification du fichier /modules/atos/validation.php

 

<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/atos.php');

/* Début nouvelle config */
if (empty($_POST['DATA']) AND empty($_GET['DATA']))
throw new Exception('error in atos module: data is required');
else
{

	if (!isset($_POST['DATA']))
			$_POST['DATA'] = $_GET['DATA'];
/* Fin nouvelle config */

$atos = new Atos();
$result = exec(Configuration::get('ATOS_BIN_DIR').'response pathfile='.dirname(__FILE__).'/pathfile message='.preg_replace("#[^a-z0-9]#Ui", '', $_POST['DATA']));
$resultArray = explode('!', $result);

 

>> La modification de ces lignes de code fixe le problème de validation de paiement.

 

 

Bon courage!

N'hésitez pas à faire part de votre retour d'expérience.

 

++

Ju@n

Link to comment
Share on other sites

Re-bonjour Ju@n,

 

Merci pour votre réponse.

 

J'utilise PS 1.4.9 et j'avais un code similaire dans mon module Atos 2.6 :

include(dirname(__FILE__).'/../../config/config.inc.php');

include(dirname(__FILE__).'/../../init.php');

include(dirname(__FILE__).'/atos.php');

 

if (!isset($_POST['DATA']) AND !isset($_GET['DATA']))

throw new Exception('error in atos module: data is required');

else

{

if (!isset($_POST['DATA']))

$_POST['DATA'] = $_GET['DATA'];

 

$atos = new Atos();

$result = exec(Configuration::get('ATOS_BIN_DIR').'response pathfile='.dirname(__FILE__).'/pathfile message='.preg_replace("#[^a-z0-9]#Ui", '',$_POST['DATA']));

$resultArray = explode('!', $result);

 

J'ai quand même intégré vos modifs dans mon source mais j'ai toujours la même erreur :(

 

D'après ce que je comprends, la variable status arrive avec la valeur failed dans modules/atos/hookorderconfirmation.tpl (j'ai fait affiché sa valeur dans la page)

La template /hookorderconfirmation.tpl est appelée par la fonction hookOrderConfirmation dans atos.php qui initialise la variable status à failed parce que $params['objOrder']->valid n'est pas égal à true (donc à false) alors que le paiement s'est correctement effectué (le client et l'admin recoivent bien les e-mails de confirmation, la commande a bien le statut "paiement accepté" dans le back-office). Le problème est que je vois pas quand le champ $order->valid est mis à true dans la fonction validateOrder de classes/PaymentModule.php (ou ailleurs ...) :(

Si quelqu'un a une idée, je suis preneur ...

KMJ

Link to comment
Share on other sites

Bonjour,

Je viens de corriger le problème en m'inspirant de modules/cheque/cheque.php. Dans la fonction hookOrderConfirmation du fichier modules/atos/atos.php, remplacez :

if ($params['objOrder']->valid)

par

$state = $params['objOrder']->getCurrentState();

if ($state == _PS_OS_PAYMENT_)

et ça marche ! :)

 

KMJ

Link to comment
Share on other sites

  • 2 weeks later...

Exactement le même problème, pour ma part j'ai fait les 2 modifications c'est à dire celle-ci (citée par Juan64):

/* Début nouvelle config */

if (empty($_POST['DATA']) AND empty($_GET['DATA']))

throw new Exception('error in atos module: data is required');

else

{

 

if (!isset($_POST['DATA']))

$_POST['DATA'] = $_GET['DATA'];

/* Fin nouvelle config */

 

et celle-ci par KMJ (avec juste une petite modification:

 

$state = $params['objOrder']->getCurrentState();

if ($state == Configuration::get('_PS_OS_PAYMENT_') || $state == Configuration::get('PS_OS_OUTOFSTOCK'))

 

Cela règle chez moi l'histoire des commande fantômes et du message d'erreur après paiement. Par contre mes paiements n'apparaissent toujours pas en "paiement validé"

Link to comment
Share on other sites

  • 3 months later...

Bonsoir tout le monde,

 

Le topic date un peu mais je viens d'avoir ce genre de problème depuis 1 semaine, sans modification de ma boutique en ligne.

 

Il se trouve que je suis en train de tester un changement de banque sur un clone, ce qui m'a permis de mettre à jour le module Atos (2.2 en prod et 2.7 en test).

 

Dans les 2 cas, j'avais le message d'erreur après une commande par CB et une commande notée invalide dans la fiche client alors que tout le reste se passe correctement.

 

Les 2 modifications que jrem a appliqué ont fonctionné pour moi aussi, le message d'erreur après commande a disparu.

 

Mais les commandes sont toujours listées en tant qu'invalides dans les fiches clients.

 

Est-ce que quelqu'un a résolu le problème depuis ?

Link to comment
Share on other sites

Bonjour, bonjour,

Comme bien souvent, les solutions les plus simples ne sont pas celles qui nous viennent à l'esprit en 1er.

Dans mon cas, le problème de commandes Atos invalides venait logiquement d'une modif que j'avais faite sur le statut Paiement accepté (j'avais décoché "Considérer la commande comme validée pour que les factures ne soient générées que lors de la livraison).

Sauf que contrairement aux modules cheque et bankwire qui sont censés fonctionner avec des commandes invalides, le module Atos attend une validation immédiate, d'où le message d'erreur pour le client.

Grâce à vos modifications, ce message d'erreur n'apparaît plus et je peux donc avoir mes 3 modes de paiement qui fonctionnent de la même manière, à savoir que la commande n'est validée que lorsque son statut passe sur "En cours de livraison".

En espérant que ça puisse servir à d'autres.

Edited by willdante (see edit history)
Link to comment
Share on other sites

  • 8 months later...

Bonjour,

 

je viens "déterrer ce topic" pour ceux qui rencontreraient le même problème que celui échangé dans cette discussion et dont les solutions évoquées ci-dessus ne l'auraient pas résolu.

 

Pour ma part, cette erreur était provoquée par le module prestashop officiel faisant le pont entre le Prestashop et OpenERP (prestaerp, module de webkul).  Je tourne sur prestashop 1.5.6 et Atos 2.8 (Les modules ATOS et PRESTAERP sont les officiels du prestastore)

Il provoque une fatal error à la validation de la commande et du coup cette dernière renvoyait le message d'erreur "Un problème est survenu avec votre commande. Si vous pensez que c'est une erreur, veuillez contacter notre

support client": le paiement était débité sur le compte client et la commande restait "fantôme" (validation à 0, non enregistrement dans l'historique client, les statistiques etc.).

 

Donc voilà, après des heures de recherche, je me suis rendu compte que ce module provoquait cette incompatibilité avec Atos. En espérant que les développeurs puissent apporter une correction rapide à ce problème qui est pour le moins gênant.

Pour savoir si ce module ou un autre entre en conflit avec cette validation, le mieux reste de passer une commande test avec le module de chèque par exemple et de valider la commande à la main (Commandes -> Accepter le paiement) pour voir si le processus se déroule bien ou s'il y a bien une fatal error qui le bloque.

 

N'oubliez pas également que dans la majorité des cas, le seul message "Un problème est survenu avec votre commande. Si vous pensez que c'est une erreur, veuillez contacter notre

support client" (avec un bon enregistrement de commande derrière) est une question de droits sur dossiers du module ATOS (qui doivent être fixés à 755 pour que ATOS puisse avoir droit d'échanger avec votre site).

 

En espérant que ça pourra en aider certains. 

 

Bonne journée

Edited by Mikan24 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 9 months later...

Bonjour, bonjour,

 

Comme bien souvent, les solutions les plus simples ne sont pas celles qui nous viennent à l'esprit en 1er.

 

Dans mon cas, le problème de commandes Atos invalides venaient logiquement d'une modif que j'avais faite sur le statut Paiement accepté (j'avais décoché "Considérer la commande comme validée pour que les factures ne soient générées que lors de la livraison).

 

Sauf que contrairement aux modules cheque et bankwire qui sont censés fonctionner avec des commandes invalides, le module Atos attend une validation immédiate, d'où le message d'erreur pour le client.

 

Grâce à vos modifications, ce message d'erreur n'apparaît plus et je peux donc avoir mes 3 modes de paiement qui fonctionnent de la même manière, à savoir que la commande n'est validée que lorsque son statut passe sur "En cours de livraison".

 

En espérant que ça puisse servir à d'autres.

bonjour je ne vois ou se trouve cette option dans le BO Cdt M Serge

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