osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

3 Pages V  < 1 2 3  
Reply to this topicStart new topic
> traquer les conversions, avec google
Guillaume 13
posté 9 Mar 2011, 14:44
Message #51


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 1
Inscrit : 9-March 11
Membre no 29491



Bonjour,

J'avoue prendre rarement le temps d'intervenir sur un forum de développement, mais j'ai tellement ramé sur ce sujet précis que je désire partager mon expérience.

Déjà rassurant, il est effectivement possible avec osCommerce et le système de paiement ATOS de tracker correctement ses commandes dans un système de suivi statistique web.

Pour cela, il faut effectivement utiliser le paramètre NO_RESPONSE_PAGE comme cela a été indiqué dans des billets précédents, pour forcer après le paiement la redirection de l'internaute sur une page du site marchand (qui elle, contient la balise qui va bien du système de suivi statistique web).

Mais deux points font que cela ne marche pas du premier coup :
- le premier point est lié à une spécification Atos qui fait que quand on utilise le paramètre NO_RESPONSE_PAGE, la réponse du serveur ATOS du paramètre DATA se fait en GET et non plus en POST.

--> Pour prendre en compte cela, dans le script atos_response.php il faut remplacer la ligne :
$hash = $atos->decodeResponse($HTTP_POST_VARS['DATA']);

Par (par exemple) :
if (isset($HTTP_POST_VARS['DATA'])) {
$hash = $atos->decodeResponse($HTTP_POST_VARS['DATA']);
} else {
$hash = $atos->decodeResponse($HTTP_GET_VARS['DATA']);
}

- le deuxième point est lié à un bug ATOS non documenté et qu'ils ne veulent pas corriger (allez savoir pourquoi ...). Quand on force la redirection automatique, cette redirection se fait sur les urls renseignées dans les paramètres normal_return_url ou cancel_return_url en fonction du résultat du paiement. Le bug est qu'ATOS ne sait pas traiter dans ce cas des urls avec des paramètres en querystring. Et dans la contribution ATOS pour OsCommerce, ces urls ont malheureusement un paramètre (atos_response.php?osCsid=zzzz). C'est ce qui fait qu'après le paiement on est redirigé sur la home au lieu de la page checkout_success. Coup de chance, après vérification des scripts de la contribution, je n'ai pas l'impression que la transmission du paramètre osCsid serve à quelque chose.

--> Du coup pour régler ça, on peut changer dans le script atos.php, fonction makeRequest() les lignes :
$command .= " " . $this->os_info['quote'] . "normal_return_url=" . tep_href_link('atos_response.php', tep_session_name() . '=' . tep_session_id(), $request_type, false) . $this->os_info['quote'];
$command .= " " . $this->os_info['quote'] . "cancel_return_url=" . tep_href_link('atos_response.php', tep_session_name() . '=' . tep_session_id(), $request_type, false) . $this->os_info['quote'];

Par (toujours par exemple) :
$command .= " " . $this->os_info['quote'] . "normal_return_url=" . tep_href_link('atos_response.php', '', $request_type, false) . $this->os_info['quote'];
$command .= " " . $this->os_info['quote'] . "cancel_return_url=" . tep_href_link('atos_response.php', '', $request_type, false) . $this->os_info['quote'];

En passant, c'est aussi à ce niveau qu'on peut renseigner le paramètre NO_RESPONSE_PAGE en rajoutant la ligne suivante :
$command .= " data=NO_RESPONSE_PAGE";

Voilà, vous avez désormais une redirection automatique après paiement qui devrait fonctionner.

Maintenant, il reste à traiter la denière objection qui est qu'on doit délivrer une sorte de "ticket de caisse" à l'internaute après son paiement. ATOS utilise les paramètres payment_date, payment_time, merchant_id, transaction_id, amount, card_number, authorisation_id et payment_certificate pour éditer le sien. On a simplement à faire de même, ces paramètres étant bien transmis dans le paramètre DATA en GET (il y a des restrictions sur les variables transmises en GET par rapport au POST mais ces variables-là sont bien transmises).

Pour cela, on peut enrichir le script atos_response.php en remplaçant la ligne :
tep_redirect(MODULE_PAYMENT_ATOS_PRODUCTION_MODE == 'false'
? tep_href_link(FILENAME_CHECKOUT_PAYMENT,
'info_message=' . urlencode(MODULE_PAYMENT_ATOS_TEXT_CHECKOUT_DEMO),
'SSL')
: tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL'));

Par
tep_redirect(MODULE_PAYMENT_ATOS_PRODUCTION_MODE == 'false'
? tep_href_link(FILENAME_CHECKOUT_PAYMENT,
'info_message=' . urlencode(MODULE_PAYMENT_ATOS_TEXT_CHECKOUT_DEMO),
'SSL')
: tep_href_link(FILENAME_CHECKOUT_SUCCESS, ((isset($HTTP_GET_VARS['DATA'])) ? 'DATA=' . $HTTP_GET_VARS['DATA'] : ''), 'SSL'));
Cela permet de transmettre le paramètre DATA à la page checkout_success.

Il vous reste désormais à traiter ce paramètre DATA dans la page checkout_succes (prendre atos_response.php en exemple, les étapes clés tiennent dans $hash = $atos->decodeResponse($HTTP_GET_VARS['DATA']); suivi par un affichage des variables du tableau $hash).

En espérant que ce post puisse être utile.
Guillaume.

Go to the top of the page
 
Romuald3838
posté 12 Apr 2011, 09:19
Message #52


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 1
Inscrit : 17-March 11
Membre no 29536



Super explication Guillaume,

Enfin une solution viable sur ce problème de CB ATOS !!!

Peux-tu s'il te plait donner aussi l'affichage du tableau $hach en PHP ?
Merci je suis débutant en PHP

A+

Romuald
Go to the top of the page
 
concorde44
posté 31 May 2011, 16:28
Message #53


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 366
Inscrit : 31-December 03
Lieu : Nantes
Membre no 1780



BOnjour
Rhaaa génial Guilaume13 !

Abonné à ce topic j'avais vu en avril ta réponse et j'ai mis un paquet de temps avant de la retrouver et la mettre en application.

Au final, ça fonctionne bien je retourne bien sur la page checkout_success.

Une chose que je n'ai pas compris, c'est comment récupérer les infos DATA passées en GET ?

après le paiement, je retourne sur la page success vec un data long comme mon bras (et dieu sait si j'ai le bras long...) :
Code
http://maboutique.com/checkout_success.php?DATA=2020333437603028502c2360532d233c532d2360522d2360502c4360502c3334502d2330522
d2334542c4360532c236x502c43242a2c2360532c23605f2d232c502e33602a2c2360552c2360502d
4324572c4324512d4048512c2334502c232450333425333524353230542532316048502c2338502c2
324542cq360512c3360552c5324512d3328512c33382a2c3360532c2360502d4324572c4328512c50
48512c2330502c2360582c4w60512c3360552c53242a2c3360512c2360502c4360505c224324502c2
360502c2338592d333c562d33342a2c2328592c2360502c4639525c224360502e2360502c232c592d
53402a2c2360592c2360502c4639525c224324502d4360502c233c552c332c512b4338505c2243245
12d2340502c2338522c2324512c23442a2c2328572c2360512d44592f375529253455212f33452d25
3755212131543y2a2c2030502c2360512d2425353524412f34455d2330352134353529255c2243605
32e3360502c2324565c224324502c4360502c3328542d2638592c462c572c2344593856342a2c3360
592c2360502c435c5f5c224324512c2360502c2324515c224324512c3360502c2328502c6048512c4
328502c2360512c6048512c432c502c2360512c6048502c4338502c2360512d40z860e352dbfcba66
9f5d


je suis perplexe pour appeler la méthode
decodeResponse($HTTP_GET_VARS['DATA']);
directement de checkout success.

Pourrais tu nous aiguiller ?

Merci d'avance.

Seb


--------------------
Osc 2.2 ms2 en prod : STS - Easy Populate - CSS Buttons - SEO - Email Invoice -MailingList 2.0 - Order editor - Wordlpay ...
Go to the top of the page
 

3 Pages V  < 1 2 3
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 21st May 2013 - 08:42
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)