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
> Problème Paybox, Oscommerce et retour http, Question d'utilité publique
riziere
posté 25 Sep 2008, 11:58
Message #51


Ceinture orange OSC
Icône de groupe

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
Go to the top of the page
 
cleo
posté 25 Sep 2008, 17:58
Message #52


Ceinture verte OSC
Icône de groupe

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 &agrave; 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&eacute;ro d\'IP autoris&eacute; \(serveurs PAYBOX\)', 'MODULE_PAYMENT_PAYBOX_IP', '194.2.160.66,195.101.99.72,194.50.38.4', 'Num&eacute;ro d\'IP du serveur de la banque qui fera appel &agrave; votre boutique pour confirmer la commande.<br><br><u>Note</u> : Vous pouvez ajouter plusieurs num&eacute;ro d\'IP, pour cela il vous suffit de les s&eacute;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 &eacute;tats d\'alertes par e-mail', 'MODULE_PAYMENT_PAYBOX_MAIL', 'True', 'Voulez-vous recevoir les &eacute;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, SPPLUS,Step By Step 1.8, Order Editor 2.6.3, Google Analytics, Dynamic Sitemap 2.0, OSC-Expeditor, Recover Cart Sales, Links Manager 1.15 + Ultimate SEO mod, PayBox3.0, PayBox Echéances, TVA Intracomm 5.1

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.
Go to the top of the page
 
cleo
posté 27 Sep 2008, 16:09
Message #53


Ceinture verte OSC
Icône de groupe

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 !
Citation (riziere @ 25 Sep 2008, 13:58) *

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.
Citation (riziere @ 25 Sep 2008, 13:58) *

Non, checkout_payment.php
Citation (riziere @ 25 Sep 2008, 13:58) *

Non, checkout_payment.php
Citation (riziere @ 25 Sep 2008, 13:58) *

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.
Citation (riziere @ 25 Sep 2008, 13:58) *
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.

mrgreen.gif 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, SPPLUS,Step By Step 1.8, Order Editor 2.6.3, Google Analytics, Dynamic Sitemap 2.0, OSC-Expeditor, Recover Cart Sales, Links Manager 1.15 + Ultimate SEO mod, PayBox3.0, PayBox Echéances, TVA Intracomm 5.1

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.
Go to the top of the page
 
LeMulotNocturne
posté 5 Nov 2008, 22:37
Message #54


Ceinture blanche OSC
Icône de groupe

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 ! wink.gif

Ce message a été modifié par LeMulotNocturne - 5 Nov 2008, 22:40.
Go to the top of the page
 
Phantasie
posté 12 Nov 2008, 15:22
Message #55


Ceinture blanche OSC
Icône de groupe

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.
Go to the top of the page
 
Coyote
posté 18 Dec 2008, 15:05
Message #56


Ceinture blanche OSC
Icône de groupe

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 ??? mrgreen.gif

Ce message a été modifié par Coyote - 18 Dec 2008, 15:22.


--------------------
@+ Coyote
osCommerce MS2fr + contributions
Go to the top of the page
 
cleo
posté 22 Dec 2008, 10:29
Message #57


Ceinture verte OSC
Icône de groupe

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, SPPLUS,Step By Step 1.8, Order Editor 2.6.3, Google Analytics, Dynamic Sitemap 2.0, OSC-Expeditor, Recover Cart Sales, Links Manager 1.15 + Ultimate SEO mod, PayBox3.0, PayBox Echéances, TVA Intracomm 5.1

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.
Go to the top of the page
 
Glows
posté 1 Jun 2011, 11:57
Message #58


Ceinture blanche OSC
Icône de groupe

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?
Go to the top of the page
 
LeMulotNocturne
posté 1 Jun 2011, 15:34
Message #59


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 6
Inscrit : 1-April 08
Membre no 21344



Salut Glows,

bon, pas de panique... c'est toujours la mouise ce prb... wacko.gif
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 ?...
Go to the top of the page
 
demoalt
posté 30 May 2018, 15:07
Message #60


Ceinture jaune+ OSC
Icône de groupe

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.
Go to the top of the page
 
demoalt
posté 31 May 2018, 14:52
Message #61


Ceinture jaune+ OSC
Icône de groupe

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.


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 : 22nd September 2018 - 14:55
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)