Jump to content

Configuration Ogone pour multi-boutique


Recommended Posts

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 by twuest (see edit history)
Link to comment
Share on other sites

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 by twuest (see edit history)
Link to comment
Share on other sites

  • 1 month later...

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 by nullos (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...

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

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