Formulaire + bouton paypal crypté

Petit nouveau ! | 1 Messages

08 févr. 2013, 00:01

Bonjour,

Je voudrai que l'utilisateur entre son adresse mail, et clique sur un bouton paypal crypté pour qu'ensuite il reçoive un code secret sur son mail si le montant est bon.

Je voudrai mettre l'adresse mail dans la variable custom, le souci c'est que je n'arrive pas à récupérer l'adresse mail qu'il saisi.

voici toute la page php:

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>titre</title> Entrez ici le mail sur lequel vous désirez reçevoir votre code:<br> <br> <form method="get"> <input name="emailsaisi" type="text"> </form> <br> <br> <?php session_start(); $situation_de_test = "OUI"; // OUI ou NON qui défini Paypal ou PayPal SandBox $id_acheteur = $_SESSION['espace_membre']; // Identifiant du client ou du membre $montant = "11"; // Montant de l'objet ou de l'abonnement $monaie = "EUR"; // Devise $nom_produit ="Nom du produit"; // Nom du Produit $avis = "0"; // 0 ou 1 -> Demander l'avis des clients $descrip_produit = ""; // Description du produit $ref_produit = "1"; // Référence du produit $langue = "FR"; // Langue -> FR, US ou autre $page_paiement_accepte = "http://www.*****/apres_paiement.html"; // Si le paiement s'est bien déroulé $page_paiement_annule = "http://www.*****"; // Si le paiement à été annulé $cac_a = "vendeu_*****[email protected]"; // Adresse e-mail du compte vendeur PayPal SandBox $cac_b = "postmaster@*****"; // Adresse e-mail du compte vendeur PayPal $type_de_bouton = "1"; putenv("HOME=~"); $MY_KEY_FILE = "***key.pem"; $MY_CERT_FILE = "***cert.pem"; $PAYPAL_CERT_FILE = "***cert.pem"; $OPENSSL = "/usr/bin/openssl"; $cert_id = "123456789"; if($situation_de_test == "OUI") { $paypaltype = '<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">'; $cac = $cac_a; } else { $paypaltype = '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">'; $cac = $cac_b; } $frais_de_port = "0.00"; // 0.00 -> Frais de livraison $taxe = "0.00"; // 0.00 -> Pas de taxe $u_quantity = "0"; // 1 -> Permet aux clients de choisir la quantité d'objet $poids = "0"; // Poids de l'objet en Kg $poids_units = "kgs"; // Unité du poids kgs ou lbs $address_override = "0"; // 1 -> Ne pas laisser le vendeur définir l'adresse $address1 = "rue des prés"; // 1ère Rue du client $address2 = ""; // 2ème Rue du client $city = ""; // Ville du client $first_name = ""; // Prénom du client $last_name = ""; // Nom du client $bouton = "_xclick"; $form_1 = array('cmd' => $bouton, 'business' => $cac, 'cert_id' => $cert_id, 'item_name' => $nom_produit, 'amount' => $montant, 'weight' => $poids, 'weight_unit' => $poids_units, 'undefined_quantity' => $u_quantity, 'shipping' => $frais_de_port, 'no_shipping' => $activation_frais_de_port, 'return' => $page_paiement_accepte, 'cancel_return' => $page_paiement_annule, 'no_note' => $avis, 'item_number' => $ref_produit, // 'custom' => $id_acheteur.'-*-'.$descrip_produit.'-*-'.$date_us.'-*-'.$date_fr.'-*-'.$heure.'-*-'.$montant, 'currency_code' => $monaie, 'tax' => $taxe, 'address_override' => $address_override, 'address1' => $address1, 'address2' => $address2, 'city' => $city, 'email' => "", 'custom' => $emailsaisi, //<<<<<<<############## LE PROBLEME EST ICI IL NE RECUPERE RIEN ); if($frais_de_port == "0.00") { $activation_frais_de_port = "0"; } $date_us = date("Y-m-d"); $date_fr = date("d-m-Y"); $heure = date("H:i:s"); function paypal_encrypt($hash) { global $MY_KEY_FILE; global $MY_CERT_FILE; global $PAYPAL_CERT_FILE; global $OPENSSL; if (!file_exists($MY_KEY_FILE)) { echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n"; } if (!file_exists($MY_CERT_FILE)) { echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n"; } if (!file_exists($PAYPAL_CERT_FILE)) { echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n"; } if (!file_exists($OPENSSL)) { echo "ERROR: OPENSSL $OPENSSL not found\n"; } $hash['bn']= 'StellarWebSolutions.PHP_EWP'; $openssl_cmd = "$OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " ."-outform der -nodetach -binary | $OPENSSL smime -encrypt " ."-des3 -binary -outform pem $PAYPAL_CERT_FILE"; $descriptors = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), ); $process = proc_open($openssl_cmd, $descriptors, $pipes); if (is_resource($process)) { foreach ($hash as $key => $value) { if ($value != "") { fwrite($pipes[0], "$key=$value\n"); } } fflush($pipes[0]); fclose($pipes[0]); $output = ""; while (!feof($pipes[1])) { $output .= fgets($pipes[1]); } fclose($pipes[1]); $return_value = proc_close($process); return $output; } return "ERROR"; }; $encrypted = paypal_encrypt($form_1); echo''.$paypaltype.' <input type="hidden" name="cmd" value="_s-xclick"> <input name="encrypted" type="hidden" value="'.$encrypted.'" /> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynow_SM.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> </form> '; ?> </body></html>

Je pourrait biensûr récupérer l'email de l'acheteur directement mais c'est mieux qu'il puisse choisir lui même sur quel mail il veut recevoir le code secret qu'il a payé.

Je vous remercie par avance, toute aide est la bienvenue.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 févr. 2013, 00:18

salut,


tu essai d'utiliser une façon de faire qui n'a plus court depuis longtemps et a été totalement supprimée depuis php 5.4 : l'auto déclaration des variables.

voici un tuto t'expliquand comment récupérer les valeurs d'un formulaire.


@+
Il en faut peu pour être heureux ......

Invité
Invité n'ayant pas de compte PHPfrance

08 févr. 2013, 10:19

D'accord, mais ca n'est pas possible de la récupérer directement, si je fais :

$form_1 = array('cmd' => $bouton,
'business' => $cac,
'cert_id' => $cert_id,
'item_name' => $nom_produit,
'amount' => $montant,
'weight' => $poids,
'weight_unit' => $poids_units,
'undefined_quantity' => $u_quantity,
'shipping' => $frais_de_port,
'no_shipping' => $activation_frais_de_port,
'return' => $page_paiement_accepte,
'cancel_return' => $page_paiement_annule,
'no_note' => $avis,
'item_number' => $ref_produit,
<input type="text" name="custom"/>
'currency_code' => $monaie,
'tax' => $taxe,
'address_override' => $address_override,
'address1' => $address1,
'address2' => $address2,
'city' => $city,
'email' => "", // $emailpourcode,
'first_name' => $first_name,
'last_name' => $last_name,
'charset' => $charset,
'night_phone_a' => $night_phone_a,
'night_phone_b' => $night_phone_b,
'night_phone_c' => $night_phone_c,
'state' => $state,
'zip' => $zip,
'lc' => $langue
);


Ca ne fonctionne pas

Invité
Invité n'ayant pas de compte PHPfrance

08 févr. 2013, 11:16

Bon finalement c'est résolu,

J'ai fait en deux pages web : une première pour la saisie de l'email et une seconde pour le bouton paypal.