Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonjour j'aimerai pouvoir utiliser paypal express sur mon futur site, le but est de faire payer certain partis du site avec un abonnement pour cela je voudrais utiliser (paypal ) systéme le moins cher pour nous actuellement . Mais j'ai j'arrive a créer un bouton "acheter" mais je ne comprend pas trés bien le reste :
C'est a dire :
-confirmation du paiement
- comment savoir quel est le client qui a payer
-retour du client sur mon site .
merci de votre aide
Cordialement
Hors ligne
Salut,
Je sais pas si cela peut t'aider mais un gars avait commencer quelque chose ,tu pourrais te mettre en relation avec lui:
http://framework.zend.com/wiki/display/ … ahar+Evron
Hors ligne
merci je vais etudier
Hors ligne
j'ai trouve ce site http://phppaypalpro.sourceforge.net/ qui propose une systéme intéressant d'intégration , mais pour l'instant j'arrive pas a la faire marcher lol
Hors ligne
Paypal propose moulte moyens de permettre la réalisation du paiement. La plus simple est de mettre en place des boutons Acheter ou Faire un don. Tu le créé via un assistant sur le site, ça te construit un formulaire HTML que tu copies colles dans ta page. Quand le client cliquera, il sera redirigé, et effectuera son paiement. Il n'y a AUCUN moyen fiable de vérifier dans l'immédiat que le paiement a été accepté et qu'il a été effectué sur ton compte PayPal. Il te faudra donc aller vérifier à la main dans ton compte si le paiement est arrivé et prendre les actions nécessaire (envoyé un email avec des codes d'accès par exemple).
Si ce que tu cherches est une complète intégration, il te faut utiliser l'Express Checkout. Dans l'idée, quand le client clique sur acheter, du coté de ton script, tu effectues une requête sur les serveurs de PayPal en fournissant les infos comme le prix. Il te réponde par un token que tu ajoute à une url de redirection. C'est sur cette url que tu dois rediriger ton client pour qu'il fasse son paiement sur le site PayPal. A la fin, il revient sur ton site avec le token, et là dans ton script, tu effectues une requête sur les serveurs PayPal avec le token, et ils te répondent si le paiement a été validé, ou est en cours de validation (par exemple, monnaie différente), ou refusé avec le motif.
Enfin, il existe un dernier service qui n'est pas forcément lié aux deux précédentes, tu peux configurer dans ton compte PayPal, une adresse web que PayPal appellera à chaque nouvelle transaction dans ton compte (debit/credit/changement de status), et qui te permettront par exemple, de passer automatiquement un paiement en attente, en paiement confirmé/refusé.
Tout cela est extrêmement bien expliqué sur le site de PayPal. A savoir que pour la deuxième et troisième solutions, tu peux ouvrir un compte de test sur https://developer.paypal.com.
API référence : https://www.paypal.com/IntegrationCente … rence.html
PDF pour savoir comment intéroger les serveurs PayPal : https://www.paypal.com/en_US/pdf/PP_NVP … rGuide.pdf
Exemple en php : https://www.paypal.com/IntegrationCente … v5_1_0.zip
@speedy142: merci pour le lien, je ne connaissais pas et j'ai quasi refait ce qu'il a fait (en tout cas pour une la partie express checkout)
Hors ligne
il y a se lien aussi je vais tester ce soir pour voir si il marche .
http://www.paypalblog.info/article-3598934.html
Merci pour les infos
Hors ligne
alors tous est peut être bien expliquer mais je comprend rien lol , j'ai passé la nuit dessus j'ai essayer plein de script ...
mon probléme actuelle c'est que je créer des compte de test ok mais comment je les utiliser car j'ai essayer sa
<form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"> <input type="image" src="https://www.paypal.com//fr_FR/i/btn/x-click-but22.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> <img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1"> <input type="hidden" name="add" value="1"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="business" value="email"> <input type="hidden" name="item_name" value="services cesu"> <input type="hidden" name="item_number" value="<?php echo $compte;?>"> <input type="hidden" name="custom" value="<?php echo $compte;?>"> <input type="hidden" name="amount" value="10.00"> <input type="hidden" name="no_shipping" value="0"> <input type="hidden" name="return" value="adressescript"> <input type="hidden" name="cancel_return" value="adresseretour"> <input type="hidden" name="no_note" value="1"> <input type="hidden" name="currency_code" value="EUR"> <input type="hidden" name="lc" value="FR"> <input type="hidden" name="bn" value="PP-ShopCartBF"> </form>
ok j'arrive sur la sanbox pour payer mais alors aucun des compte de test marche .
pour le script de test j'ai cela
/* ETAPE 1 On commence par générer la requête à réenvoyer à PayPal (Au départ, PayPal envoie une requête à une URL que vous aurez spécifiée dans votre espace PayPal dans la rubrique "Préférences de Notification instantanée de paiement" et qui est donc l'adresse URL de cette page même sur votre serveur). */ // il faudra ajouter 'cmd=_notify-validate' à la requête reçue $req = 'cmd=_notify-validate'; // On reforme la requête avec les variables envoyées par Paypal foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } /* ETAPE 2 On renvoie la requête au système PayPal pour validation (par POST) qui nous permettra d'avoir toutes les informations de la transaction et de vérifier si la transaction est bien validée. */ $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30); /* ETAPE 3 On affecte les variables fournies par PayPal */ // Désignation d'achat (ex : Achat de vidéos) $designation = $_POST['item_name']; // A utiliser de préférence pour définir un id ou autre qui représente le payeur (voir autre page fournit dans la source) $compte = $_POST['item_number']; // Statut du paiement $statutpaiement = $_POST['payment_status']; // Montant réglé (au format 10.00) $montantpaiement = $_POST['mc_gross']; // Devise de paiement (pour € on a EUR) $devisepaiement = $_POST['mc_currency']; // ID de transaction $idtransaction = $_POST['txn_id']; // Adresse email du receveur du paiement (qui doit être la votre !) $receveurpaiement = $_POST['receiver_email']; // Adresse email du payeur (pratique pour envoyer un email de confirmation du paiement) $payeur = $_POST['payer_email']; /* ETAPE 4 Exécution de la requête en envoyant ce qui a été définit en étape 1 & 2 */ if ($fp) { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { if($statutpaiement == "Completed") { /* DEBUT DE L'ETAPE 5 A partir de cet instant, on sait que le paiement a été accepté. Reste à savoir si la devise de paiement est bonne, si le montant est bon, si vous êtes bien le receveur du paiement, etc... Notez qu'il est inutile de spécifier des messages d'erreur car cette page sera simplement exécutée par un serveur en cache, personne ne verra donc cette page. */ /* EXEMPLE DE CODAGE : */ // Si la devise est l'euro et l'adresse email du receveur du paiement est bien celle de mon compte Paypal. if($devisepaiement == "EUR" && $receveurpaiement == "monemail@portannuaire.info") { // J'inclue la page avec les informations de connexion à la base de données //include('../includes/infos_bdd.php'); // Je me connecte à la base de données pour éxécuter quelques requêtes. //connexion_bdd(); $db=Zend_Registry::get("db"); // Je cherche des doublons de cette transaction //$doublonidtrans = mysql_numrows(mysql_query("SELECT id_trans FROM `PAYPAL` WHERE id_trans='$idtransaction' LIMIT 1")); $select=$db->select(); $select->from("paiement"); $select->where("id_transaction='$idtransaction'"); $row=$db->fetchAll($select); if(count($row) == 0) { /* >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< DANS CE CAS ON VALIDE FINALEMENT LA TRANSACTION... AVEC ENVOI D'EMAIL DE CONFIRMATION... INSERTION DANS BASE DE DONNEES... ETC... >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<< */ $data=array(); $data["id_transaction"]=$idtransaction; $data["id_user"]=Zend_Registry::get("id_user"); $data["date"]=date("Y-m-d"); $data["montant"]=$montantpaiement; $db->insert("paiement",$data); } mysql_close(); } /* FIN DE L'ETAPE 5 A partir de cet instant, il ne faut plus rien modifier. */ } } } fclose ($fp); }
merci de votre aide
Dernière modification par lebilien (30-05-2008 10:10:03)
Hors ligne
Tu te sers de l'api IPN (Instant Paiement Notification) avec la création d'un bouton Acheter que tu réalises sur le site dans tes préférences de compte ?
Pour la sandbox, je vais détailler (plus pour les autres qui se lancent, tu as du y arriver je pense)
Au niveau de la sandbox, tu as deux adresses :
https://developer.paypal.com/ est la première que tu dois utiliser, c'est l'espace qui permet de gérer les comptes virtuels.
Chaque compte virtuel peut être "resetté", c'est le seul moyen de connaitre le password (j'ai essayé d'en mettre à moi, ça ne marche pas, il faut prendre celui indiquer)
Avec ces comptes tu connectes sur la deuxième url https://www.sandbox.paypal.com/ qui est une réplique du site classique. A ce niveau, tu te connecte avec un compte business, tu créés un bouton de test, tu configures l'adresse de retour IPN dans les préférence du compte, sur la colonne de droite si je me souviens bien)
A l'url configurée correspond le code php que tu as fourni. Néanmoins dans celui-ci, l'url appelé par le fsockopen pour faire la verification des datas n'est pas correcte car elle pointe sur l'environnement réel de production et non la sandbox. Faut pointer sur le sous domaine sandbox. Je te conseille également d'ajouter des logs
je fais un script php bidon au début pour tester que la communication se faisait bien et pis pour voir un peu mieux ce qui est envoyé.
<?php ob_start(); echo "=> " . date(DATE_ATOM) . "\n"; print_r($_REQUEST); echo "\n"; $out = ob_get_clean(); file_put_contents("log/ipn.txt", $out, FILE_APPEND | LOCK_EX );
Ca te permettra au moins de voir si paypal appelle bien ton url et pour toi aussi tester ton script :p
Si déjà ça, ça ne marche pas. Il faut bien verifier ta configuration. Dans le formulaire html, l'élément business correspond bien à l'email du compte business virtuel ?
Relis bien tout les documents, et les exemples de code (perso je les ai trouvé très bien mais je parle du cas d'intégration de l'express checkout), Je pense que je ne ferai que de la redite maladroite.
Dernière modification par cortex (31-05-2008 15:56:08)
Hors ligne