Jump to content

Message D'erreur Malgré Validation Du Paiement (Virement Bancaire - Bankwire)


Klemart3D

Recommended Posts

Bonjour,

 

Suite à la réception du mail d'alerte automatique de Prestashop (chez moi en v.1.6.0.13) qui me dit d'aller voir dans Outils > Log, voici le message que j'y trouve :

 

04:34:56 : Gravité 4 - "Cart cannot be loaded or an order has already been placed using this cart "

 

(Si jamais un dev Presta lit ça : serait-il possible d'ajouter l'ID du panier en question dans le log afin de faciliter le débug ?)

 

Cela fait suite à une commande client passée quelques minutes auparavant, validée par virement bancaire (module bankwire). Et effectivement, dans mes logs PHP, voici les 2 erreurs liées remontées :

 

[04:34:56] [error] PHP Notice: Undefined variable: shop in /var/www/prestashop/classes/Mail.php on line 244, referer: http://www.monsite.fr/module/bankwire/payment

 
[04:34:56] [error] PHP Notice: Trying to get property of non-object in /var/www/prestashop/classes/Mail.php on line 244, referer: http://www.monsite.fr/module/bankwire/payment

 

La ligne incriminée fait partie de la méthode Send de Mail.php :

// get templatePath
if (preg_match('#'.$shop->physical_uri.'modules/#', str_replace(DIRECTORY_SEPARATOR, '/', $template_path)) && preg_match('#modules/([a-z0-9_-]+)/#ui', str_replace(DIRECTORY_SEPARATOR, '/',$template_path), $res))
	$module_name = $res[1];

Il n'y a, à priori pas de raison que $shop ne soit pas défini, car même si $id_shop ne figure pas parmi les paramètres de la méthode, il est tout de même redéfini :

if (!$id_shop)
$id_shop = Context::getContext()->shop->id;
[...]
// Get the path of theme by id_shop if exist
if (is_numeric($id_shop) && $id_shop)
{
$shop = new Shop((int)$id_shop);
$theme_name = $shop->getTheme();

if (_THEME_NAME_ != $theme_name)
$theme_path = _PS_ROOT_DIR_.'/themes/'.$theme_name.'/';
}

Peut-être est-ce un problème de compatibilité avec mon thème ?

 

D'après la seule info que j'ai pu dénicher sur ce topic en néerlandais, cela pourrait être dû à un double clic client au moment de la validation de la commande… mais allez interroger un client pour savoir s'il a cliqué 1 ou 2 fois lors de sa commande !

 

Avez-vous déjà rencontré ce bug ? À qui la faute : Prestashop et sa méthode Mail->Send ? Le module Bankwire ? Au thème ? Une bribe d'idée pour le corriger ?

 

Merci à toute tentative d'aide ;)

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

  • 6 years later...

Six ans plus tard j’ai le même problème : le code de Mail.php considère que `$shop` est forcément définit alors que ce n’est pas le cas. D’ailleurs, IntelliJ souligne la variable comme « probablement indéfinie ». Il faudrait au moins qu’il lève une exception plus tôt dans le code.


Dans mon cas j’ai eu le problème lors d’un re-submit du form de validation d’order alors que le premier avait planté avec une erreur (corrigée entre temps).

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