paiement sécurisé variable caddie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : paiement sécurisé variable caddie

par dogmongo » 03 mai 2007, 15:31

désolé j'avais jamais remarqué ce bouton merci pour l'info

par Cyrano » 03 mai 2007, 15:24

Modération :
dogmongo, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par dogmongo » 03 mai 2007, 15:10

Je ne sais pas comment te remercier ca marche super, j'avais pas pensé que les espaces causeraient une erreur :wink:

merci :wink:

par naholyr » 03 mai 2007, 10:15

Effectivement, si tu envoies des espaces, ça va être considéré comme un paramètre supplémentaire ;)
Il faut donc les échapper, essaie peut-être en remplaçant " " par "\\ " dans ta variable avant de l'ajouter à $parm, genre
$parm_caddie = str_replace(' ', '\\ ', $_POST['caddie']);
$parm = "$parm caddie=$parm_caddie";
Si ça ne fonctionne pas, il faut chercher dans la doc de webaffaires comment on peut passer ce genre de paramètres. Il y a fort à parier que ces paramètres sont finalement envoyés à une URL, et donc on pourrait raisonnablement penser que urlencode() fera l'affaire.

par dogmongo » 03 mai 2007, 09:08

oui c'est exectement ca
	
	$parm="merchant_id=";
	$parm="$parm merchant_country=fr";
	$parm="$parm amount=$amount";
	$parm="$parm currency_code=978";



	// Initialisation du chemin du fichier pathfile (à modifier)
	    //   ex :
	    //    -> Windows : $parm="$parm pathfile=c:\\repertoire\\pathfile";
	    //    -> Unix    : $parm="$parm pathfile=/home/repertoire/pathfile";
	    
	$parm="$parm pathfile=./pathfile";

	//		Si aucun transaction_id n'est affecté, request en génère
	//		un automatiquement à partir de heure/minutes/secondes
	//		Référez vous au Guide du Programmeur pour
	//		les réserves émises sur cette fonctionnalité
	//
	//		$parm="$parm transaction_id=123456";



	//		Affectation dynamique des autres paramètres
	// 		Les valeurs proposées ne sont que des exemples
	// 		Les champs et leur utilisation sont expliqués dans le Dictionnaire des données
	//
	 		$parm="$parm normal_return_url=http://www.site.com/paiement/accept.php";//redif si accept
			$parm="$parm cancel_return_url=http://www.site.com/paiement/refus.php";//redif page refus
			$parm="$parm automatic_response_url=http://www.site.com/paiement/call_response.php";
			$parm="$parm language=fr";
			$parm="$parm payment_means=CB,2,VISA,2,MASTERCARD,2";
			$parm="$parm header_flag=no";
			$parm="$parm capture_day=";
			$parm="$parm capture_mode=";
			$parm="$parm bgcolor=";//couleur de font de la fenetre paiement
			$parm="$parm block_align=center";
			$parm="$parm block_order=";
			$parm="$parm textcolor=";
			$parm="$parm receipt_complement=";
			$parm="$parm caddie=";//article achetés
			$parm="$parm customer_id=$_SERVER[UNIQUE_ID]";
			$parm="$parm customer_email=$_POST[mail]";
			$parm="$parm customer_ip_address=$_SERVER[REMOTE_ADDR]";
			$parm="$parm data=";
			$parm="$parm return_context=";
			$parm="$parm target=_blank";
			$parm="$parm order_id=";

	//		Les valeurs suivantes ne sont utilisables qu'en pré-production
	//		Elles nécessitent l'installation de vos fichiers sur le serveur de paiement
	//
	 		$parm="$parm normal_return_logo=";
	 		$parm="$parm cancel_return_logo=";
	 		$parm="$parm submit_logo=";
	 		$parm="$parm logo_id=";
	 		$parm="$parm logo_id2=";
	 		$parm="$parm advert=/logo-top.jpg";//logo en haut de la fenetre paiement
	 		$parm="$parm background_id=";//image de font de la fenetre paiement
	 		$parm="$parm templatefile=";


	//		insertion de la commande en base de données (optionnel)
	//		A développer en fonction de votre système d'information

	// Initialisation du chemin de l'executable request (à modifier)
	// ex :
	// -> Windows : $path_bin = "c:\\repertoire\\bin\\request";
	// -> Unix    : $path_bin = "/home/repertoire/bin/request";
	//

	$path_bin = "./request";


	//	Appel du binaire request

	$result=exec("$path_bin $parm");

	//	sortie de la fonction : $result=!code!error!buffer!
	//	    - code=0	: la fonction génère une page html contenue dans la variable buffer
	//	    - code=-1 	: La fonction retourne un message d'erreur dans la variable error

	//On separe les differents champs et on les met dans une variable tableau

	$tableau = explode ("!", "$result");

	//	récupération des paramètres

	$code = $tableau[1];
	$error = $tableau[2];
	$message = $tableau[3];

	//  analyse du code retour

  if (( $code == "" ) && ( $error == "" ) )
 	{
  	print ("<BR><CENTER>erreur appel request</CENTER><BR>");
  	print ("executable request non trouve $path_bin");
 	}

	//	Erreur, affiche le message d'erreur

	else if ($code != 0){
		print ("<center><b><h2>Erreur appel API de paiement. </h2></center></b>");
		print ("<br><br><br>");
		print (" message erreur : $error <br>");
	}

	//	OK, affiche le formulaire HTML
	else {
		print ("<br><br>");
		
		# OK, affichage du mode DEBUG si activé
		print (" $error <br>");
		
		print ("  $message <br>");
	}

print ("</BODY></HTML>");

la variable caddie je peu mettre plus de 2000 caractère de tout type d'ou mon etonnement sur l'error ?
Enfin bref, déjà es-tu sûr du contenu de $_POST['caddie'] ? Ne faudrait-il pas sérializer, urlencoder, ou que sais-je encore ? As-tu lu la doc de webaffaires ? As-tu fais un “echo $parm” pour vérifier ?
oui je confirme impeccable je respect bien ce qu'il me disent , surtout que comme je te le precise plus haut ce champ n'est pas traité par la bank il est retourné tel que je le donne.

j'ai testé et je récupere très bien mes données avant traitement

Par contre une info qui peu peu être vous guider j'ai essayé de mettre des données numérique uniquement et la ca passe ??

par naholyr » 03 mai 2007, 08:59

Je pense qu'il s'agit du système de paiement webaffaires c'est ça ? Le seul système de paiement qui t'oblige à mettre sur ton serveur un exécutable dont tu ne sais même pas ce qu'il y a dedans...

Enfin bref, déjà es-tu sûr du contenu de $_POST['caddie'] ? Ne faudrait-il pas sérializer, urlencoder, ou que sais-je encore ? As-tu lu la doc de webaffaires ? As-tu fais un “echo $parm” pour vérifier ?

par Cyrano » 03 mai 2007, 07:48

Pour ma part, je n,avais déjà pas compris la première fois, cette précision ne m'éclaire pas davantage.... :-k

Et si tu nous mettais un tout petit peu plus de code, quelques lignes avant, quelques lignes après, histoire qu'on ait une idée du contexte et de ce que tu veux faire ???

par dogmongo » 03 mai 2007, 02:22

c'est vraix que ce n'ai pas ca mais je comprend ton erreur vu que je n'ai pas mis la fin du code
//Appel du binaire request
$result=exec("$path_bin $parm");
Donc l'esapce est voulu :wink:

merci quand même :)

par Theri le Vorace » 03 mai 2007, 01:22

Lorsque tu utilises ce paramètre, tu essayes d'affecter la variable "$_POST[caddie]" au texte "caddie" étant donné que ta variable contient un espace ?

"$parm caddie" à remplacer par "$parm_caddie" ?

Je suppute sur ce que je crois avoir compris de ta phrase et les utilisations que tu veux faire de cette variable.. M'en veux pas si je suis loin même pas à côté de la plaque... :roll:

paiement sécurisé variable caddie

par dogmongo » 02 mai 2007, 12:56

Bonjour tout le monde

J'install un paiement sécurisé et rencontre un problème sur la variable:

$parm="$parm caddie=$_POST[caddie]"

aucun problème les données arrivent d'une page à l'autre, mais le souci c'est que le fichier call_request.php qui traite les données me renvoi une erreur

erreur appel request :?:
message erreur : Invalid Keyword in parameter :?:

Normalement dans la doc ce champ me permet de mettre tout ce que je veux, c'est la commande dans mon cas et j'ai droit à tout les caractères d'ou mon interrogation ? Où est l'erreur

Si quelqu'un à une idée ou déjà rencontré le problème merci de m'éclaircir ma lanterne :idea:

merci d'avance