twuest Posted March 3, 2014 Share Posted March 3, 2014 (edited) Bonjour à tous, Comment faire pour faire fonctionner prestashop 1.5 en multi-boutique et le module standard ogone v2.4 (très similaire au 2.6 actuel) qui est fourni ? J'ai une boutique myshop.ch et myshop.fr sur une même instance prestashop. Pour info, j'ai modifié le fichier ogone.php pour rajouter les bonnes URLs ACCEPTURL, DECLINEURL etc. if ($_SERVER['SERVER_NAME'] == 'myshop.fr') { $confirmationPage = 'http://myshop.fr/modules/ogone/confirmation.php'; } elseif ($_SERVER['SERVER_NAME'] == 'myshop.ch') { $confirmationPage = 'http://myshop.ch/modules/ogone/confirmation.php'; } $ogoneParams['ACCEPTURL'] = $confirmationPage; $ogoneParams['DECLINEURL'] = $confirmationPage; $ogoneParams['EXCEPTIONURL'] = $confirmationPage; $ogoneParams['CANCELURL'] = $confirmationPage; J'arrive donc dans mon processus d'achat prestashop à aller sur l'interface d'ogone, entrer un numéro de carte visa, paiement statut OK (=9), mais lors du retour sur ma boutique, la commande ne se termine pas (message : Merci de patienter pendant que votre commande se valide). Je pense que je dois configurer correctement les valeurs de retour, mais que faut-il faire quand on est dans le cas d'une multi-boutique ? Quelqu'un aurait-il déjà amélioré le module d'ogone pour le faire fonctionner en multi-boutique ? (avec paramvar ou paramplus ou autre chose ?) Pour info, j'ai actuellement déjà une boutique myshop.ch qui fonctionne très bien avec le module standard d'ogone, et je souhaite rajouter une boutique myshop.fr. Merci d'avance pour votre aide. Edited March 3, 2014 by twuest (see edit history) Link to comment Share on other sites More sharing options...
twuest Posted March 10, 2014 Author Share Posted March 10, 2014 (edited) J'ai trouvé une solution pour ce cas. Dans la configuration d'ogone, sur le site d'ogone, il faut mettre dans Configuration > Informations techniques > Retour d'information sur la transaction : Requête directe HTTP serveur-à-serveur : Si le statut du paiement est "accepté", "en attente" ou "incertain" + Si le statut du paiement est "annulé par le client" ou "trop de rejets par l'acquéreur". http://myshop.<PARAMVAR>/modules/ogone/validation.php Requête http pour les changements de statut : URL sur lequel le marchand souhaite recevoir une requête HTTP différée en cas de changement de statut de transaction offline (hors ligne). http://myshop.<PARAMVAR>/modules/ogone/confirmation.php Dans le fichier ogone.php du module d'ogone pour prestashop dans la fonction hookPayment(), ajouter la ligne suivante (ou une adaptation à votre cas) après $ogoneParams = array(); et avant le ksort($ogoneParams); if (preg_match('@\.fr@', $_SERVER['HTTP_HOST'])) { $ogoneParams['PARAMVAR'] = 'fr'; } else { $ogoneParams['PARAMVAR'] = 'ch';} ; Avec ceci, PARAMVAR et sa valeur seront envoyés à ogone en même temps que les autres paramètres du panier d'achat, et les URLs données ci-dessus seront mises à jour : <PARAMVAR> sera remplacé par sa valeur (ch ou fr dans mon cas) et ogone appellera correctement les URLs de retour. Avec ceci, nous avons : - 1 installation prestashop en multi-boutique - 2 boutiques (CH en CHF, FR en EUR) myshop.ch et myshop.fr - 1 seul contrat ogone nécessaire ! /************************************************************* Je réponds à nullos ici car je n'arrive pas à envoyer une nouvelle réponse (le bouton Post n'a aucun effet). En résumé, je disais qu'il faudrait essayer de tester la partie url_virtuel_xxx Si ce sont des noms très différents les uns des autres, alors il faudrait passer par un switch case ou des if elseif à la suite : if (preg_match('@url_virtuel_1@', $_SERVER['HTTP_HOST'])) { $ogoneParams['PARAMVAR'] = 'url_virtuel_1'; } elseif (preg_match('@autre_url@', $_SERVER['HTTP_HOST'])) { $ogoneParams['PARAMVAR'] = 'autre_url'; } ...else { $ogoneParams['PARAMVAR'] = 'url_de_base'; } Si ce sont des noms presque identiques à une logique près url_1, url_2, ... il est possible d'optimiser un peu en récupérant la partie trouvée par le preg_match dans le PARAMVAR. Quelque chose comme if preg_match('@(url_virtuel_.)@', $_SERVER['HTTP_HOST'], $matches) { $ogoneParams['PARAMVAR'] = $matches[1];} Je n'ai pas testé, il faudrait donc essayer... Edited April 28, 2014 by twuest (see edit history) Link to comment Share on other sites More sharing options...
nullos Posted April 22, 2014 Share Posted April 22, 2014 (edited) Salut twuest,Mon cas est similaire, sauf que ce n'est pas le domaine qui change mais une url virtuel.J'ai bien changé dans le ogone par ceci : http://myshop.be/<PARAMVAR>/modules/ogone/validation.php et ceci dans mon fichier ogone.php if (preg_match('@url_virtuel_1@', $_SERVER['HTTP_HOST'])) { $ogoneParams['PARAMVAR'] = 'url_virtuel_1'; } else { $ogoneParams['PARAMVAR'] = 'url_virtuel_2';} ; Jusque la pas de soucis. Sauf que pour des soucis de facilité, j'aimerais avoir beaucoup plus de multi-boutique. Aurais tu un conseil ? Merci d'avance ps version 1.5.6.2 ogone version 2.8 Edited April 22, 2014 by nullos (see edit history) Link to comment Share on other sites More sharing options...
nullos Posted April 28, 2014 Share Posted April 28, 2014 Personne ? Link to comment Share on other sites More sharing options...
twuest Posted April 28, 2014 Author Share Posted April 28, 2014 (edited) Si si, mais le forum a un bug, je n'arrive pas à poster ma réponse avec le code. Il faut jeter un oeil à la fin de ma réponse #2 plus haut. Edited April 28, 2014 by twuest (see edit history) Link to comment Share on other sites More sharing options...
nullos Posted May 21, 2014 Share Posted May 21, 2014 Ouf j'ai fais mon lurd j'avais pas vu ton comm. oui ok mais le probleme c'est que je vais avoir beaucoup de boutique si je fais mon calcul actuellement j'en aurais +/-90. Un peu long pour un switch non ? En plus je me vois mal commencer a encoder cela a chaque création d'un boutique virtuelle. Quelqu'un serait open pour aider un pauvre mec sans trop de competance dans le domaine ? Link to comment Share on other sites More sharing options...
Recommended Posts