Jump to content

[Résolu] Problème ogone + mailalerts


gonado

Recommended Posts

Bonjour,

 

Je travaille sur une version de Prestashop 1.5.3.1 avec le module Ogone 2.4.

J'ai eu comme beaucoup des soucis pour faire marcher ce module correctement, un problème que j'ai résolu et celui de la page de retour de la boutique qui tournait en boucle malgré le fait que je recevais un ok en ajax j'ai réussi à corriger le souci en modifiant le fichier dans /modules/ogone/views/templates/front/waiting.tpl

 

{*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2011 PrestaShop SA
*  @license	http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
<p><img src="{$base_dir}img/loader.gif" /> {l s='Please wait while your order is being processed...' mod='ogone'}</p>
<script type="text/javascript">
function checkwaitingorder()
{ldelim}
$.ajax({ldelim}
 type:"POST",
 async:true,
 url:'{$base_dir}modules/ogone/checkwaitingorder.php',
 data:'id_cart={$id_cart|intval}&id_module={$id_module|intval}&key={$key|escape}',
 success:function (r) {ldelim}
  r = $.trim( r );
  if (r == 'ok') {
window.location.href = '{$ogone_link}?id_cart={$id_cart|intval}&id_module={$id_module|intval}&key={$key|escape}';
clearTimeout(t);
  }
 {rdelim}
{rdelim});
t = setTimeout('checkwaitingorder()', 5000);
{rdelim}
t = setTimeout('checkwaitingorder()', 5000);
</script>

 

J'ai en fait juste mis le Timeout dans une variable que j'efface si je reçois bien ok.

 

Le module marche bien comme cela, par contre et je pense que cela est un peu obligatoire sur une boutique, j'ai activé le module mailalerts et là une fois que je passe une commande avec Ogone et que j'arrive sur la page de confirmation de commande j'ai un message de type :

 

Nous avons constaté un problème avec votre commande. Si vous pensez que c'est une erreur, merci de contacter notre service client.

 

Du coup la commande est quand même bien rentrée dans la base de données mais sans statut (paiement accepté, annulé, ...) et les mails ne sont pas envoyés (ni au client ni au mail de la boutique).

Je précise que le module mailalerts fonctionne très bien avec le chèque et le virement mais ne marche pas avec Ogone.

 

Si je désactive le module de mailalerts tout rentre dans l'ordre mais par contre je ne peux plus envoyer de mail de confirmation de commande ce qui est fort ennuyeux !

 

Je suis entrain de regarder ce qui pourrait causer le problème mais je n'ai encore rien trouvé, si quelqu'un pouvait m'aider je pense que cela pourrait aider d'autres personnes aussi.

 

Merci d'avance !

 

PS : Je vous tiens au courant si je trouve une solution à ce problème !

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

Re,

 

Bon apparemment il fallait faire une modification dans le fichier validation.php du module Ogone :

 

<?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2011 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/ogone.php');
$ogone = new Ogone();
/* CODE A RAJOUTER */
if (empty(Context::getContext()->link))
Context::getContext()->link = new Link();
/* FIN */

 

Voilà qui a résolu le problème !

  • Like 1
Link to comment
Share on other sites

Alors, là chapeau! je cherchais une solution depuis plusieurs semaines, j'avais remarqué qu'il fallait désactiver " informer le marchand d'une nouvelle commande" pour pouvoir accepter la commande par Ogone, par contre ni moi ni le client n'avions d'accusé de commande.

 

Bravo, une belle épine du pied retirée avec cette modification du module.

 

Merci encore. Michel

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
  • 1 month later...

Hello,

 

Pour le problème de la page qui tourne en boucle après avoir effectué le payement

dans modules/ogone/views/templates/front/waiting.tpl j'ai simplement changé {$base_dir} par {$base_dir_ssl} car le ssl était activé chez moi, ça a toute suite réglé le problème

 

En gros dans le javascript ça donne ça:

 

<p><img src="{$base_dir}img/loader.gif" /> {l s='Please wait while your order is being processed...' mod='ogone'}</p>
<script type="text/javascript">
function checkwaitingorder()
{ldelim}
$.ajax({ldelim}
 type:"POST",
 async:true,
 url:'{$base_dir_ssl}modules/ogone/checkwaitingorder.php',
 data:'id_cart={$id_cart|intval}&id_module={$id_module|intval}&key={$key|escape}',
 success:function (r) {ldelim}
  r = $.trim( r );
  if (r == 'ok') {
       window.location.href = '{$ogone_link}?id_cart={$id_cart|intval}&id_module={$id_module|intval}&key={$key|escape}';
       clearTimeout(t);
  }
 {rdelim}
{rdelim});
t = setTimeout('checkwaitingorder()', 5000);
{rdelim}
t = setTimeout('checkwaitingorder()', 5000);
</script>

 

voila si ça peut aider les gens qui ont le même problème...

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

Bonjour,

 

J'ai exactement ce même problème, j'ai testé les deux solutions de ce topic mais rien y fait.

 

J'ai une boutique chez 1&1 mutualisé avec prestashop 1.4 et je n'ai pas ce problème.

 

En revanche avec une boutique 1.5 (Sur le même serveur) ça ne fonctionne pas :-(

 

4 jours que je suis dessus je perd espoir...

 

Merci pour votre aide.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

j'ai eu le problème sous presta1.5 avec ogone 2.4. Aucune des solutions ci-dessus n'a réglé mon problème de page qui tournait en boucle.

Par contre, j'ai trouvé la solution en ce qui me concerne, dans le fichier modules/ogone/validation.php, j'ai remplacé tous les $_GET en $_POST car dans ma config ogone, j'avais coché "POST" dans "Retour d'informations sur la transaction" > "Méthode de la requête". Et ça marche! ma commande est bien enregistrée dans le BO de presta.

Voilà j'espère que ça pourra aider certain ;)

Link to comment
Share on other sites

Avant tout un Super GRAND Merci! Ces infos m'on vraiment aidée à solutionner la majorité des problèmes.

 

Malgrés tout me concernant, la page 'waiting' (gif + message 'votre commande est en cours de ... bla bla bla' continuais de tourner en boucle.

 

La requête ajax retournais toujours la valeur 'ko', après presque 2 jours d'analyse, j'ai pu avoir la certitude que la réponse de la requête était fausse.

 

J'ai donc pu solutioner les problèmes existant en :

1- appliquant les 2 modifications présentée généreusement dans ce post

2- Modifiant le fichier ogone/checkwaitingorder.php::29

 

Placer le paramètre facultatif '$cache' de la function 'getValues' a 'false'

Db::getInstance()->getValue('SELECT id_order FROM '._DB_PREFIX_.'orders WHERE id_cart = '.(int)Tools::getValue('id_cart').' AND secure_key = "'.pSQL(Tools::getValue('key')).'"',false)
? 'ok'
: 'ko'

 

Cela à définitivement réglé mon problème

 

Encore merci gonado!

Edited by Sire-Sam (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

J'up le sujet, j'ai le même problème :

 

"Nous avons constaté un problème avec votre commande. Si vous pensez que c'est une erreur, merci de contacter notre service client."

 

 

J'ai essayé les solutions proposé et rien ne ce passe, moi j'ai aucune informations en back-office mise à part une notification d'une commande mais elle ne contient ni les produits, ni le statut ni le service de paiement, que pouvons-nous faire ?

 

Version 1.5.0.17

 

Merci

 

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...