Problème Paybox, Oscommerce et retour http, Question d'utilité publique |
Bienvenue invité ( Connexion | Inscription )
Problème Paybox, Oscommerce et retour http, Question d'utilité publique |
25 Sep 2008, 11:58
Message
#51
|
|
Ceinture orange OSC Groupe : Membres Messages : 258 Inscrit : 17-March 04 Lieu : Paris Membre no 2144 |
Bonjour à tous !
Moi mon problème est inverse ! Dans les quatre champs de Paybox j’ai mis : Adresse URL retour OK : http://www.MABOUTIQUE.com/checkout_process.php Adresse URL retour erreur : http://www.MABOUTIQUE.com/checkout_process.php Adresse URL retour abandon : http://www.MABOUTIQUE.com/checkout_process.php Adresse url http : http://www.MABOUTIQUE.com/checkout_process.php Tout ceci étant fait sur les conseils d’un agent de Paybox. Me disant ainsi que les utilisateurs d’OSC mettent généralement ce paramètre et que ça marche bien. Effectivement cela marche bien mais uniquement pour les paiements valides. Dans le cas où le client « fait une erreur » dans sa saisie de numéro de CB, Paybox renvoi alors un message d’erreur mais qui est interprété par checkout_process.php comme une validation. La commande est alors mise en production bien que le paiement ne soit pas validé ! Voici un extrait de ce qui se passe chez Paybox : Comme vous le voyez, le client a fait plusieurs tentatives et j'ai eu autant de confirmation de commandes ! Si j’ai bien compris ce fil, response_paybox.php est le fichier qui doit recevoir toutes les informations. Lui doit alors mettre en production la commande en cours. Ma question est la suivante : J’ai mis l’adresse de response_paybox.php dans les champs Adresse URL retour OK, Adresse URL retour erreur, Adresse URL retour abandon. J’ai fais un test avec CB ok et la commande est validée comme avant. Le même test avec fausse CB et comme avant la commande est validée donc aucun changement. Ces trois champs ne seraient alors pas utilisés par Paybox ? Je suppose alors qu’il me faille mettre response_paybox.php dans Adresse url http ? Si oui, que va devenir mon client ? Car selon les tests que j’ai effectué, et si j’ai tout bien compris, Paybox utilise aussi Adresse url http pour générer le bouton « Retour commerce » qui après renvoi le client à checkout_success.php. Hors, response_paybox.php ne génère pas de redirection et si le client clic sur « Retour commerce » et que c’est bien response_paybox.php qui est en lien, il va se retrouver sur une page blanche ! Que faire alors ? Suis-je dans le faux ou sinon avez-vous une idée ? Merci, Riziere |
|
25 Sep 2008, 17:58
Message
#52
|
|
Ceinture verte OSC Groupe : Membres Messages : 649 Inscrit : 13-September 05 Lieu : Paris Membre no 7102 |
Bonjour,
J'ai du faire la mise en place de PayBox un peu différemment. La commande est bien bloqué chez moi. Je viens de tester et après le 3e tentative, l'internaute est retourné à la boutique comme il faut avec le message, Citation Erreur de paiement ! Il y a eu une erreur durant le traitement de votre paiement CB. Merci de recommencer. Aucune commande n'est enregistrée. Je lis dans l'URL : Code https://www.mondomain.fr/checkout_payment.php?payment_error=paybox&trans=301126139&tarif=1739&abonnement=0&erreur=00004&language=fr Ci-dessus mon includes/modules/payment/paybox.php Ne l'utilisez pas tel quel !!!!! D'abords je suis en https et aussi j'ai ajouté une icone et en plus je pense avoir créé une variable pour mon convenance. Puisque tu ne donne pas les vrai noms des variables, je n'ai pas pu les chercher dans mon code pour donner leur valeur mais tu peux donc comparer toi même avec ce code. Note bien que je suis en retour par le navigateur. CODE <?php /* Contribution by Emmanuel Alliel <manu@maboutique.biz> Modification Businesshop - 05-2006, mise en place par india 06-2007 osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce Released under the GNU General Public License */ class paybox { var $code, $title, $description, $enabled; // class constructor function paybox() { global $order; $this->code = 'paybox'; $this->title = MODULE_PAYMENT_PAYBOX_TEXT_TITLE; $this->description = MODULE_PAYMENT_PAYBOX_TEXT_DESCRIPTION; $this->sort_order = MODULE_PAYMENT_PAYBOX_SORT_ORDER; $this->icon = DIR_WS_ICONS . 'visa_master.gif'; $this->enabled = ((MODULE_PAYMENT_PAYBOX_STATUS == 'True') ? true : false); if ((int)MODULE_PAYMENT_PAYBOX_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_PAYBOX_ORDER_STATUS_ID; } if (is_object($order)) $this->update_status(); $this->form_action_url = MODULE_PAYMENT_PAYBOX_CGI; } // class methods function update_status() { global $order; if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYBOX_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYBOX_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } function javascript_validation() { return false; } function selection() { return array('id' => $this->code, 'module' => $this->title, 'icon' => $this->icon); } function pre_confirmation_check() { return false; } function confirmation() { return false; } function process_button() { global $order, $language; switch ($language) { case french: $langue_pbx='FRA'; break; case english: $langue_pbx='GBR'; break; case german: $langue_pbx='DEU'; break; case espanol: $langue_pbx='ESP'; break; } if (MODULE_PAYMENT_PAYBOX_PRODUCTION == 'Serveur') { define('PBX_PAYBOX_EFFECTUE', tep_href_link(FILENAME_CHECKOUT_SUCCESS, 'pbx=1&' . tep_session_name().'='. tep_session_id(), 'SSL', false)); } else { define('PBX_PAYBOX_EFFECTUE', tep_href_link(FILENAME_CHECKOUT_PROCESS, 'pbx=1&' . tep_session_name().'='. tep_session_id(), 'SSL', false)); } $process_button_string = tep_draw_hidden_field('PBX_MODE', '1') . tep_draw_hidden_field('PBX_SITE', MODULE_PAYMENT_PAYBOX_PBX_SITE) . tep_draw_hidden_field('PBX_RANG', MODULE_PAYMENT_PAYBOX_PBX_RANG) . tep_draw_hidden_field('PBX_IDENTIFIANT', MODULE_PAYMENT_PAYBOX_PBX_IDENTIFIANT) . tep_draw_hidden_field('PBX_TOTAL', (round($order->info['total'],2)) * 100) . tep_draw_hidden_field('PBX_DEVISE', '978') . tep_draw_hidden_field('PBX_LANGUE', $langue_pbx) . tep_draw_hidden_field('PBX_CMD', tep_session_id()) . tep_draw_hidden_field('PBX_PORTEUR', $order->customer['email_address']) . tep_draw_hidden_field('PBX_RETOUR', tep_session_name().':R;trans:T;auto:A;tarif:M;abonnement:B;pays:Y;erreur:E') . tep_draw_hidden_field('PBX_ANNULE', tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL', true)) . tep_draw_hidden_field('PBX_REFUSE', tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error=' . $this->code, 'SSL', true)) . /* tep_draw_hidden_field('PBX_EFFECTUE', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL', true)) . */ tep_draw_hidden_field('PBX_EFFECTUE', PBX_PAYBOX_EFFECTUE) . tep_draw_hidden_field(tep_session_name(), tep_session_id()) . tep_draw_hidden_field('PBX_BOUTPI', 'nul') . tep_draw_hidden_field('options', 'test_status=' . $test_status . ',dups=false,cb_post=true,cb_flds=' . tep_session_name()); return $process_button_string; } function before_process() { global $HTTP_POST_VARS; if ($HTTP_POST_VARS['valid'] == 'true') { if ($remote_host = getenv('REMOTE_HOST')) { if ($remote_host != 'paybox.com') { $remote_host = gethostbyaddr($remote_host); } if ($remote_host != 'paybox.com') { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_session_name() . '=' . $HTTP_POST_VARS[tep_session_name()] . '&payment_error=' . $this->code, 'SSL', false, false)); } } else { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, tep_session_name() . '=' . $HTTP_POST_VARS[tep_session_name()] . '&payment_error=' . $this->code, 'SSL', false, false)); } } } function after_process() { return false; } function get_error() { global $HTTP_GET_VARS; if (isset($HTTP_GET_VARS['message']) && (strlen($HTTP_GET_VARS['message']) > 0)) { $error = stripslashes(urldecode($HTTP_GET_VARS['message'])); } else { $error = MODULE_PAYMENT_PAYBOX_TEXT_ERROR_MESSAGE; } return array('title' => MODULE_PAYMENT_PAYBOX_TEXT_ERROR, 'error' => $error); } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_PAYBOX_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Paybox Module', 'MODULE_PAYMENT_PAYBOX_STATUS', 'True', 'Activer ce module Paybox ?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Mode confirmation commande Navigateur ou Serveur', 'MODULE_PAYMENT_PAYBOX_PRODUCTION', 'Navigateur', 'Vous pouvez activer le mode Serveur seulement si vous avez fournit à la banque l\'URL de retour qui permettra de valider les commandes.<br><br><u>Exemple d\'URL retour</u> : http://www.maboutique.com/response_paybox.php', '6', '2', 'tep_cfg_select_option(array(\'Navigateur\', \'Serveur\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Numéro d\'IP autorisé \(serveurs PAYBOX\)', 'MODULE_PAYMENT_PAYBOX_IP', '194.2.160.66,195.101.99.72,194.50.38.4', 'Numéro d\'IP du serveur de la banque qui fera appel à votre boutique pour confirmer la commande.<br><br><u>Note</u> : Vous pouvez ajouter plusieurs numéro d\'IP, pour cela il vous suffit de les séparer par une virgule.', '6', '3', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PBX_SITE', 'MODULE_PAYMENT_PAYBOX_PBX_SITE', '1999888', 'PBX_SITE fournit par Paybox', '6', '2', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PBX_RANG', 'MODULE_PAYMENT_PAYBOX_PBX_RANG', '99', 'PBX_RANG fournit par Paybox', '6', '3', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('PBX_IDENTIFIANT', 'MODULE_PAYMENT_PAYBOX_PBX_IDENTIFIANT', '2', 'PBX_IDENTIFIANT fournit par votre banque', '6', '4', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('CGI Path', 'MODULE_PAYMENT_PAYBOX_CGI', 'https://paybox.icodia.com/paybox.cgi', 'Chemin de votre module CGI fournit par Paybox', '6', '5', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_PAYBOX_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_PAYBOX_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_PAYBOX_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Recevoir des états d\'alertes par e-mail', 'MODULE_PAYMENT_PAYBOX_MAIL', 'True', 'Voulez-vous recevoir les états d\'alerte par e-mail ?', '6', '10', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_PAYMENT_PAYBOX_STATUS', 'MODULE_PAYMENT_PAYBOX_PRODUCTION', 'MODULE_PAYMENT_PAYBOX_IP', 'MODULE_PAYMENT_PAYBOX_PBX_SITE', 'MODULE_PAYMENT_PAYBOX_PBX_RANG', 'MODULE_PAYMENT_PAYBOX_PBX_IDENTIFIANT', 'MODULE_PAYMENT_PAYBOX_CGI', 'MODULE_PAYMENT_PAYBOX_ZONE', 'MODULE_PAYMENT_PAYBOX_ORDER_STATUS_ID', 'MODULE_PAYMENT_PAYBOX_MAIL', 'MODULE_PAYMENT_PAYBOX_SORT_ORDER'); } } ?> Dans includes/filenames.php je vois par exemple, Code define('FILENAME_CHECKOUT_PAYMENT', 'checkout_payment.php'); define('FILENAME_CHECKOUT_PAYMENT_ADDRESS', 'checkout_payment_address.php'); define('FILENAME_CHECKOUT_PROCESS', 'checkout_process.php'); Conclusion : PBX_ANNULE et PBX_REFUSE retourne l'internaute à la page de paiement, comme il faut. J'éspère que ça aide, A+ -i p.s. J'ai pu dire Bonjour à Marjorie Cerda de PayBox hier au salon e-commerce à Paris. Elle est charmante. D'ailleurs elle nous dit qu'il vont mettre à jour un peu l'esthétique du back-office. J'ai répondu non je déteste les mises à jour ça peut faire des bugs et PayBox n'a pas de bugs ! "Ne le changez pas merci." Elle nous assurent que c'est uniquement esthétique. Ouf. Ce message a été modifié par IndiaStarker - 25 Sep 2008, 18:12. -------------------- ms2fr, Header Tags 2.5.5b, Order logging before payment, Better PayPal Description perso, Free shipping per product, Must agree to terms, Country State Selector, World Zones, Visible countries, Store Pick Up, plusieurs modules de livraison,Personal Invoice Number, 'On the Fly' Auto Thumbnailer using GD Library, More_Pics_6 for 2.2 ms2, Ultimate SEO URLs 2-2.1d/e (ouf maintenant il fait ce que je veux),Virement Bancaire, Estimated Shipping 1.5, xml_guide,
local : ubuntu 9.04 sur un netbook latitude 2100 remote : IcoOpenBSD 4.x, server : IcodiaSecureHttpd, MySQL 4.1.x, php : 5.2.8 You never get a second chance to make a first impression. |
|
27 Sep 2008, 16:09
Message
#53
|
|
Ceinture verte OSC Groupe : Membres Messages : 649 Inscrit : 13-September 05 Lieu : Paris Membre no 7102 |
Ben je le mets plus simplement. Il faut comprendre que checkout_process.php crée la commande.
Si tu ne veux pas de commande créée (le cas pour erreur ou annulé), ne pas mettre checkout_process.php ! Adresse URL retour OK : http://www.MABOUTIQUE.com/checkout_process.php OK si retour Paybox=>boutique est par le navigateur. Si par contre la commande est crée par le retour http, il faut mettre autre chose. checkout_success.php a été suggéré ailleurs. Le ick est qu'une félicitation sera donnée au client même quand le paiement n'a pas réussi. Adresse URL retour erreur : http://www.MABOUTIQUE.com/checkout_process.php Non, checkout_payment.php Adresse URL retour abandon : http://www.MABOUTIQUE.com/checkout_process.php Non, checkout_payment.php Adresse url http : http://www.MABOUTIQUE.com/checkout_process.php Non et oui. Il faut changer le fichier par défaut pour qu'il ne fasse pas de redirection. Le mieux sera de faire une version pour seul l'usage de paybox retour http. Faut pas forcer de cookies. Bon tout ça est de mémoire. Merci de vérifier et poster la conclusion. Tout ceci étant fait sur les conseils d’un agent de Paybox. Me disant ainsi que les utilisateurs d’OSC mettent généralement ce paramètre et que ça marche bien. L'agent a besoin d'une formation...mais bon les oscommerçants sont parmi les plus petits clients de PayBox. On pourrait imaginer de réécrire checkout_process.php pour avoir de comportements différemment selon les cas, mais le plus simple est qu'un refus de paiement se termine plutôt à une page de regret : Code ... <INPUT TYPE = hidden NAME = PBX_EFFECTUE VALUE = 'http://www.commerce.fr/merci.html'> <INPUT TYPE = hidden NAME = PBX_REFUSE VALUE = 'http://www.commerce.fr/regret.html'> <INPUT TYPE = hidden NAME = PBX_ANNULE VALUE = 'http://www.commerce.fr/regret.html'> ... Source : la documentation technique de PayBox System. La page d'osc checkout_payment.php marchera très bien pour cet usage. -i p.s. DOC : Choisir, 1. Manuel Spécifications Techniques / Paramètres de test - Version 4.23 format .pdf, version Française ou 2. Technical Manual / Test Informations - Version 4.23 .pdf, English Version (Il faut juste fournir vos coordonnées pour avoir accès aux documents.) Ce message a été modifié par IndiaStarker - 27 Sep 2008, 16:17. -------------------- ms2fr, Header Tags 2.5.5b, Order logging before payment, Better PayPal Description perso, Free shipping per product, Must agree to terms, Country State Selector, World Zones, Visible countries, Store Pick Up, plusieurs modules de livraison,Personal Invoice Number, 'On the Fly' Auto Thumbnailer using GD Library, More_Pics_6 for 2.2 ms2, Ultimate SEO URLs 2-2.1d/e (ouf maintenant il fait ce que je veux),Virement Bancaire, Estimated Shipping 1.5, xml_guide,
local : ubuntu 9.04 sur un netbook latitude 2100 remote : IcoOpenBSD 4.x, server : IcodiaSecureHttpd, MySQL 4.1.x, php : 5.2.8 You never get a second chance to make a first impression. |
|
5 Nov 2008, 22:37
Message
#54
|
|
Ceinture blanche OSC Groupe : Membres Messages : 6 Inscrit : 1-April 08 Membre no 21344 |
Salut à tous,
voici une solution pour utiliser le module de Delaballe avec l'utilisation du response_paybox.php (validation de la commande par le serveur de la banque) ET le forcage des cookies à True (indispensable pour un référencement correct). Modifs : fichier response_paybox.php remplacer : Code // On récupére la session utilisé après par le fichier application_top.php session_name($RequestVars['osCsid']); include('includes/application_top.php'); par Code // On récupére la session utilisé après par le fichier application_top.php session_name($RequestVars['osCsid']); $response_paybox_call = 'yes'; include('includes/application_top.php'); fichier includes/application_top.php remplacer : Code // start the session $session_started = false; if (SESSION_FORCE_COOKIE_USE == 'True') { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); par Code // start the session $session_started = false; if ((SESSION_FORCE_COOKIE_USE == 'True') && ($response_paybox_call != 'yes')) { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); Le but du jeu étant de recréer la session sans utilisation de cookie (car non géré par le serveur bancaire) pendant l'appel au response_paybox.php (la session est recrée grâce au paramètre osCsid renvoyé par le serveur bancaire dans l'url appelée). That's all... Ca marche chez moi... Vos retours sont les bienvenus ! Ce message a été modifié par LeMulotNocturne - 5 Nov 2008, 22:40. |
|
12 Nov 2008, 15:22
Message
#55
|
|
Ceinture blanche OSC Groupe : Membres Messages : 1 Inscrit : 12-November 08 Membre no 23656 |
Bonjour à tous,
J'ai un petit souci lorsque je vais dans la page response_paybox.php. J'ai l'erreur suivante : Code This function has been deprecated. Please use Register Globals Off compatible code J'ai vérifier le php.ini, register_globals est bien à Off Merci pour votre aide. |
|
18 Dec 2008, 15:05
Message
#56
|
|
Ceinture blanche OSC Groupe : Membres Messages : 9 Inscrit : 15-December 03 Membre no 1738 |
Je craque, je viens de tout relire et j'ai toujours le même problème...
Citation Erreur sur la boutique : La session n'a plus être ouverte ! elle est inexistante ou bien elle a expirée CECI EST UN MESSAGE AUTOMATIQUE, MERCI DE NE PAS REPONDRE. du coup les commandes ne sont pas passées... et restent dans le panier malgré un encaissement au niveau de la banque. j'ai ajouté le mouchard indiqué précédement et j'ai bien ce retour... Citation /response_paybox.php?osCsid=v9dnvr15hfitaskto6b1vnfl87&PBX_TOTAL=100&auto=475923&erreur=00000 j'ai un numéro de session, mais je pense que la page response_paybox.php bloque sur cette partie Citation // Vérification que la session est bien ouverte $session_registered = 'false'; if (tep_session_is_registered('customer_id')) { $session_registered = 'true'; } car j'ai le mail d'erreur correspondantà Citation // Modification du retour de l'URL code erreur de la banque suite à une erreur de vérification sur la session ou le numéro d'IP if (($no_ip == 'true') && ($session_registered == 'false')) { $RequestVars['erreur'] = 'no_ip_and_session'; } else if ($no_ip == 'true') { $RequestVars['erreur'] = 'no_ip'; } else if ($session_registered == 'false') { $RequestVars['erreur'] = 'no_session'; } Voici mon paramétrage de session : Citation Répertoire des sessions /var/www/vhosts/monsite.com/tmp Utilisation de force des cookies true Vérifiez l'identification de session false Vérifiez l'utilisateur false Vérifiez l'adresse IP false Empêchez les sessions d'araignée true Recréez une session true Nota : J'ai appliqué le patch proposé par LeMulotNocturne le 5 Nov 2008, 23:37 L'url retour a bien été communiquée à la banque... Je reçois bien un email d'erreur si j'accède directement à la page response_paybox.php Les paiements passent correctement au niveau du serveur bancaire Tout fonctionnait en mode Test... une idée ??? Ce message a été modifié par Coyote - 18 Dec 2008, 15:22. -------------------- @+ Coyote
osCommerce MS2fr + contributions |
|
22 Dec 2008, 10:29
Message
#57
|
|
Ceinture verte OSC Groupe : Membres Messages : 649 Inscrit : 13-September 05 Lieu : Paris Membre no 7102 |
et avec récreer un session à False ?
-------------------- ms2fr, Header Tags 2.5.5b, Order logging before payment, Better PayPal Description perso, Free shipping per product, Must agree to terms, Country State Selector, World Zones, Visible countries, Store Pick Up, plusieurs modules de livraison,Personal Invoice Number, 'On the Fly' Auto Thumbnailer using GD Library, More_Pics_6 for 2.2 ms2, Ultimate SEO URLs 2-2.1d/e (ouf maintenant il fait ce que je veux),Virement Bancaire, Estimated Shipping 1.5, xml_guide,
local : ubuntu 9.04 sur un netbook latitude 2100 remote : IcoOpenBSD 4.x, server : IcodiaSecureHttpd, MySQL 4.1.x, php : 5.2.8 You never get a second chance to make a first impression. |
|
1 Jun 2011, 11:57
Message
#58
|
|
Ceinture blanche OSC Groupe : Membres Messages : 4 Inscrit : 5-November 09 Membre no 26479 |
Bonjour,
j'ai exactement le mm probleme que Coyote et impossible de trouver une solution mm avec recreate session à false. Quelqu'un aurait-il une idée svp? |
|
1 Jun 2011, 15:34
Message
#59
|
|
Ceinture blanche OSC Groupe : Membres Messages : 6 Inscrit : 1-April 08 Membre no 21344 |
Salut Glows,
bon, pas de panique... c'est toujours la mouise ce prb... As-tu intégré la modification que j'ai posté en 2008 (un peu plus haut dans ce post) ?... Il faut bien avoir à l'esprit que PayBox NE gère PAS les cookies... Hors, le premier truc que fait osCommerce lors de la recréation de la session si tu es en Force Cookie = ON, c'est de planter un cookie justement et de vérifier derrière... et c'est seulement si le cookie est OK que la session est recréée... donc aucune chance dans le cas ou la banque rappelle... c'est ici, dans application_top.php : CODE // start the session $session_started = false; if ((SESSION_FORCE_COOKIE_USE == 'True') && ($response_paybox_call != 'yes')) { tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain); if (isset($HTTP_COOKIE_VARS['cookie_test'])) { tep_session_start(); $session_started = true; } } Donc, il faut faire un bypass de cette vérification quand c'est la banque qui rappelle... Exemple dans le code juste ci-dessus avec le rajout de la condition de test && ($response_paybox_call != 'yes'). De cette manière quand c'est la banque qui rappelle, on ne plante pas de cookie, la session est recrée automatiquement à l'aide du paramètre osCsid renvoyé dans l'URL par la banque. Pour culture, le nom de session PHP est indiqué ici, dans application_top.php : CODE // set the session name and save path tep_session_name('osCsid'); Dans ton fichier response_paybox.php, il faut que tu rajoute $response_paybox_call = 'yes' avant l'inclusion du fichier application_top.php. So ?... |
|
30 May 2018, 15:07
Message
#60
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 133 Inscrit : 10-April 05 Membre no 5450 |
bonjour,
je viens de réussir l'implémentation du retour via http, sans appel à un script extérieur de réponse. le souci c'est que la session n'est pas recrée quand il y a un appel du serveur sur checkout_process.php.... Si vous avez mis en adresse automatique: checkout_process.php?osCsid=xxxxyyyyy en fait, en me basant sur les modifs ATOS que j'avais fait pour cela passe, je me suis aperçu qu'en fait c'est dans le application_top.php qu'il fallait regarder. il faut modifier le includes/application_top.php pour pouvoir recréer la session avec l'id fourni en parametres uniquement s'il detecte que cela vient de paybox (pour plus de sécurité). regardez s'il y a pas déja un code similaire et rajouter: CODE // set the session cookie parameters if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, $cookie_path, $cookie_domain); } elseif (function_exists('ini_set')) { ini_set('session.cookie_lifetime', '0'); ini_set('session.cookie_path', $cookie_path); ini_set('session.cookie_domain', $cookie_domain); } // set the session ID if it exists //MODIF ICI if (isset($_POST[tep_session_name()])) { tep_session_id($_POST[tep_session_name()]); } elseif ( isset($_POST['VARIABLE_RETOURNE_SERVEUR_PBX']) && isset($_GET[tep_session_name()]) ) { //PAYBOX tep_session_id($_GET[tep_session_name()]); } elseif ( ($request_type == 'SSL') && isset($_GET[tep_session_name()]) ) { tep_session_id($_GET[tep_session_name()]); } //FIN MODIF // start the session $session_started = false; Bien sur il faut sécuriser cela un peu mieux par exemple en vérifiant que l'appel vient du serveur Paybox. Ici on detecte simplement si dans un POST, il y a le retour d'une variable VARIABLE_RETOURNE_SERVEUR_PBX (à vous de changer selon comment vous avez nommé vos variables). Ce message a été modifié par demoalt - 30 May 2018, 15:20. |
|
31 May 2018, 14:52
Message
#61
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 133 Inscrit : 10-April 05 Membre no 5450 |
Concernant l'erreur 302 retourné par checkout_process.php, cela vient du fait qu'il y a une redirection vers checkout_success.php si la session s'est bien passée. Pour éviter cette erreur, lors d'un appel serveur cette redirection doit être annulé tout simplement. |
|
Version bas débit | Nous sommes le : 16th April 2024 - 06:15 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |