probleme de retour de lien

Eléphant du PHP | 56 Messages

11 juin 2007, 12:54

bonjourà tous
bon voilla je suis un peu perdu j'ai un probleme avec le lien de retour j'ai toujour une erreur 404 pourtant cette page existe bien
Normalement ce fichier me vide mon le panier puis
il enregistre les donner du client dans mon interface adminatration

<?

require('includes/application_top.php');
require(DIR_WS_MODULES . 'payment/cofidis_ZhenIT1.php');
$cofidis=new cofidis_ZhenIT1();
$cofidis->trace("Desde: ".$_SERVER['REMOTE_ADDR']." pide:".$_SERVER['REQUEST_URI']);
if($_REQUEST['referencia']=='')
	//tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'error_message=' . urlencode("Hubo un error procesando el pago, por favor, intente de nuevo o contacte con el comercio"), 'SSL', true, false));
	tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'SSL', true, true));
$cofidis->answer($_REQUEST['referencia'],
               $_REQUEST['accept'],
               $_REQUEST['numcuotas']
                );
//tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'SSL', true, false));
 
?>
et voici la tranche qui à mon avis pose probleme
 {
      global $order, $customer_id,$currency,$language, $currencies;
			$sql = "select * from " . TABLE_CUSTOMERS . " c  where c.customers_id = '" . (int)$customer_id . "'";
			$query = tep_db_query($sql);
			$customer = tep_db_fetch_array($query);
      //Total setup without .	  
      $importe=$order->info['total'];
      $importe=round($importe*$order->info['currency_value'],2);
      $importe=number_format($importe, 2, '.', '');      
      //$importe=preg_replace('/\./', ',', $importe);
      $data=array("importe"=>$importe,
									"customers_id" => (int)$customer_id
									);
      tep_db_perform("cofidis_ZhenIT", $data);
      $referencia = tep_db_insert_id();
			
			$apellidos = split(" ",$order->customer['lastname']);
			
			$hayNif = tep_db_num_rows(tep_db_query('describe address_book entry_nif'));
			$nif_contrib =  '';
			if ($hayNif >0){
				if(!isset($order->customer['nif'])){
					$nif_query = tep_db_query("select ab.entry_nif from " . TABLE_CUSTOMERS . " c, " . TABLE_ADDRESS_BOOK . " ab where c.customers_id = '" . (int)$customer_id . "' and ab.customers_id = '" . (int)$customer_id . "' and c.customers_default_address_id = ab.address_book_id");
					$nif = tep_db_fetch_array($nif_query);
					$order->customer['nif'] = $nif['entry_nif'];
				}
				$nif_contrib = 	tep_draw_hidden_field('nif', $order->customer['nif']) . tep_draw_hidden_field(' tipo_documento', 'nif');
			}			
				
			list($year,$month, $day) = sscanf($customer['customers_dob'], "%04d-%02d-%02d");
			$day = sprintf("%02d", $day);
			$month = sprintf("%02d", $month);
      $process_button_string='';				
      $process_button_string = 
			/*Obligatorios*/
															 tep_draw_hidden_field('partner', MODULE_PAYMENT_COFIDIS_PARTNER) .						   
                               tep_draw_hidden_field('producto', MODULE_PAYMENT_COFIDIS_PRODUCTO) .							   
                               tep_draw_hidden_field('referencia', $referencia ).							 
                               tep_draw_hidden_field('importe',$importe ) .
                               tep_draw_hidden_field('nombre', $order->customer['firstname']) .
															 tep_draw_hidden_field('apellidos', $order->customer['lastname']) .
															 tep_draw_hidden_field('apellido1', $apellidos[0]) .
															 tep_draw_hidden_field('apellido2', $apellidos[1]) .															 
															 
                               tep_draw_hidden_field('url_acept', tep_href_link(FILENAME_CHECKOUT_PROCESS, 'referencia='.$referencia, 'SSL', true, true),false) .
                               tep_draw_hidden_field('url_rechaz', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL', true, true),false) .									 
                               tep_draw_hidden_field('url_confirm', tep_href_link('cofidis_ZhenIT_return.php', '', 'SSL', true, true),false) .
                               tep_draw_hidden_field('url_error', tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL', true, true),false) .
															 
			/*opcionales*/
                               tep_draw_hidden_field('sexo', $customer['customers_gender']=="m"?"V":"M") .
															 tep_draw_hidden_field('email', $order->customer['email_address']) .
															 tep_draw_hidden_field('telefono', $order->customer['telephone']) .
															 $nif_contrib.
															 tep_draw_hidden_field('via', $order->customer['street_address']) .	
															 tep_draw_hidden_field('cod_postal', $order->customer['entry_postcode']) .	
															 tep_draw_hidden_field('poblacion', $order->customer['entry_city']) .
															 tep_draw_hidden_field('diaNac', "".$day) .
															 tep_draw_hidden_field('mesNac', "".$month) .
															 tep_draw_hidden_field('anyNac', "".$year) ;
			return $process_button_string;
    }

    function before_process() 
    {
			$referencia = $_REQUEST['referencia'];
			$sql = "select resultado from cofidis_ZhenIT where referencia='".(int)$referencia."'";
			$query = tep_db_query($sql);
			$payment = tep_db_fetch_array($query);
			if($payment['resultado']=='1')
       {
    	 //The order has been succesfully paid
      	 return false;    		
       }
      //Payment unsuccesful
      tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode("Hubo un error procesando el pago, por favor, intente de nuevo o contacte con el comercio"), 'SSL', true, false)); 			
    	//The order has been succesfully paid
      return false;    		
    }
puis plus loin




function answer($referencia,
               $accept,
               $numcuotas){
			$this->trace("Desde: ".$_SERVER['REMOTE_ADDR']." pide:".$_SERVER['REQUEST_URI']);
			$sql = "select resultado from cofidis_ZhenIT where referencia='".(int)$referencia."'";
			$query = tep_db_query($sql);
			$payment = tep_db_fetch_array($query);
			if($payment['resultado']=='2'){//Estaba pendiente Asnef
				if($accept=1)
					//Habría que enviar un mail, pero no hay manera de relacionarlo con un pedido
					$this->trace("Confirmado un pendiente Asnef");
			}
			$data=array(
				"resultado"=>$accept,
				"numcuotas"=>$numcuotas
        );
      tep_db_perform("cofidis_ZhenIT", $data,'update',"referencia='".(int)$referencia."'"); 
    }
  }
Quoi que je face j'ai toujour une erreur 404 comme si checkout process n'exitait pas

Mammouth du PHP | 804 Messages

11 juin 2007, 13:34

tu veux dire que c'est la réponse serveur banque qui ne renvoi pas correctement ?

Eléphant du PHP | 56 Messages

11 juin 2007, 14:15

bon c'est vrai que je ne suis pas clair :D

en fait c'est un module oscommerce que j'ai recupérer pour payer via un site de crédit en ligne espagnol

mais au lieu que ce module envoi le client vers ce site il l'envoi vers un formulaire de mon site pour lui demander tout les info neccessaire

jusque la tous va bien
mais c'est le retour qui pose probleme normalement je pense que ce site de crédit en ligne doit envoyer une valeur pour dir si le crédit et accept ou refuser mais je ne la connait pas d'ou a mon avis l'erreur 404 car le fichier chekout process exite bien.

merci d'avance

Mammouth du PHP | 804 Messages

11 juin 2007, 15:02

c'est toi qui a installé le paiement sécurisé ?

la banque te renvoi une reponse qui ressemble à 00 pour ok et 05 pour pas de sous :lol:

ensuite tu dois dois avoir configuré 2 url de retour dans l'API de la banque
(attention pas de chemin relatif mais une url complète)

regarde bien l'adresse de ton navigateur ce qui est marqué vérifis la moindre virgule ou le moindre point :wink:

Eléphant du PHP | 56 Messages

11 juin 2007, 18:38

Bon j'ai tout repris depuis le debut est rien n'y fait j'ai essayer de mettre

$referencia =='666';ou'1' ou '2'et aussi
$accept =='1';ou
$numcuotas == '1';


mais rien n'y fait c'est bizar pourtant au debut de la commande juste envant de l'envoi au formulaire j'ai bien un enregistrement dans ma base sql



et non il n'est pas securisé pour l'instant.
CREATE TABLE `cofidis_ZhenIT` (
  `referencia` int(11) NOT NULL auto_increment,
  `orders_id` int(11) default '0',
  `customers_id` int(11) default '0',
  `resultado` int(11) default '666',
  `numcuotas` varchar(64) default NULL,
  `importe` int(11) NOT NULL default '0',
  PRIMARY KEY  (`referencia`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

-- 
-- Contenu de la table `cofidis_ZhenIT`
-- 

INSERT INTO `cofidis_ZhenIT` VALUES (8, 0, 1529, 666, NULL, 414);
INSERT INTO `cofidis_ZhenIT` VALUES (9, 0, 1530, 666, NULL, 414);
et quand j'esseyer avec mozilla j'ai ce message qui s'affiche
Not Found
The requested URL /HTTP_ALT_SERVER/checkout_process.php was not found on this server.

merci beaucoup

Mammouth du PHP | 804 Messages

11 juin 2007, 20:39

c'est surement le problème SEO URL qui est exploqué ici

http://www.oscommerce-fr.info/forum/ind ... opic=44083

Eléphant du PHP | 56 Messages

11 juin 2007, 22:11

Merci de ton aide j'ai trouver l'erreur viens du fichier cofidisretour

j'ai changer
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PROCESS, 'SSL', true, false));
en
tep_redirect(FILENAME_CHECKOUT_PROCESS, 'SSL', true, true);

est la la page s'affiche sans probleme mais le fichier checkout process me renvoi directement au checkout peaiment c'est à dir au debut en gros c'est la même chose que lhistoir du serpent qui ce mort la queu :D :D

je tour en rond c'est le qu'a de la dir :D :D

Eléphant du PHP | 56 Messages

12 juin 2007, 00:23

merci à tous ca marche enfin j'ai créer un deuxieme fichier process
sans les if de retou et ca marche inpec

merci mille fois et a plus

Mammouth du PHP | 804 Messages

12 juin 2007, 11:12

de rien :wink:

pense à mettre ton post en résolut bouton en haut à gauche :wink: