Il faut dans un premier temps créer un compte développer sur Paypal, afin de simuler des comptes vendeur et acheteur. - Rendez-vous sur https://developer.paypal.com cliquez sur « signup » et remplissez le formulaire. Une fois le formulaire complété vous recevrez un mail de confirmation dans lequel il faudra cliquer sur un lien pour terminer votre inscription.
Votre compte developer est maintenant créé, il faut désormais ouvrir des comptes fictifs pour le vendeur et les acheteurs.
Connectez-vous à https://developer.paypal.com en utilisant le login et le mot de passe que vous avez indiqués précédemment. Cliquez sur le lien « enter sandbox » situé en haut à droite. Vous allez vous retrouver sur l'accueil de la « sandbox paypal ». Son aspect est identique à la page Paypal classique à l'exception d'un bandeau bleu en haut, vous indiquant que vous êtes connecté avec votre login (celui du compte developer.paypal).
Nous allons commencer par créer le compte vendeur. Cliquez sur « ouvrez un compte » Sélectionnez votre langue et votre pays, puis cliquez sur « compte business ». Vous aurez ensuite un formulaire à compléter, vous demandant d'entrer des informations concernant votre société. Remplissez-le avec des informations fictives (mais cohérentes cela vous permettra de ne pas vous mélanger entre vos comptes acheteur et vendeur).
Il faudra ensuite compléter le formulaire concernant le compte Paypal du vendeur. Indiquez une adresse email (je vous conseille une adresse simple à retenir et indiquant bien que c'est le login du compte vendeur par exemple vendeur@domaine.com ) ainsi qu'un mot de passe. Terminez de compléter le formulaire et validez.
Vous verrez s'afficher une page vous indiquant qu'un email comportant un lien de validation vous a été envoyé. Inutile de vous précipiter sur votre boîte mail (surtout que vous n'avez pas forcément dû indiquer une adresse mail vous appartenant). Il faut retourner sur le « Paypal developer central » ( https://developer.paypal.com ) se connecter et cliquer sur « test Email ». Vous verrez apparaître le mail de confirmation envoyé par paypal ouvrez-le et copiez collez l'url indiquée dans votre navigateur. Entrez le mot de passe du compte vendeur et voilà vous venez de créer votre compte vendeur, de test.
La démarche est la même que précédemment à part qu'il faut choisir un compte personnel. Je rappelle qu'il est intéressant d'indiquer comme email une adresse éloquente du type « acheteur@domaine.com »
Connectez-vous à votre compte acheteur et cliquez sur « enregistrer une carte bancaire ». Un formulaire pré-rempli s'affichera, si le type de carte n'est pas indiqué choisissez « visa » et modifiez la date d'expiration pour qu'elle ne soit pas déjà dépassée, puis cliquez sur enregistrer.
Nous allons ici, modifier quelques réglages du compte vendeur afin d'améliorer le confort et la sécurité tant des acheteurs que du vendeur.
Connectez-vous à votre compte vendeur , puis rendez-vous sur l'onglet « mon compte » ⇒ « préférences ». Cliquez sur « Préférences de réception de paiements » , dans la page qui s'affiche vérifiez que le bouton radio « Oui, bloquer les paiements multiples pour un numéro de demande de paiement unique » est bien coché, sinon cochez-le. Cette option permet d'éviter à vos clients de payer deux fois une facture à cause d'une mauvaise manipulation de leur part.
Retournez dans l'onglet « préférences » mais cette fois cliquez sur « préférences de réception de paiements sur le site ». Pour les options, « bloquer les paiements sur site marchand non cryptés » et « compte Paypal facultatif », cochez la case oui. La première option aura pour effet de refuser les paiements provenant de boutons Paypal non cryptés, ce qui vous protégera contre les fraudes. La seconde donnera la possibilité aux acheteurs d'utiliser soit leur compte Paypal soit leur carte bleue pour payer.
Voilà, vous avez désormais un compte acheteur capable de simuler des paiements en ligne et un compte vendeur capable de les recevoir.
Pour empêcher les personnes mal intentionnées de modifier les valeurs de vos commandes (et notamment le prix) il est nécessaire de crypter votre bouton « acheter maintenant ». Je vous passe les explications concernant le fonctionnement des clef ou des certificats, sachez simplement qu'il s'agit d'un système de cryptographie asymétrique. Vous trouverez plus d'explications sur wikipédia.
Paypal n'accepte que les certificats publics de type X.509. Pour créer votre clef et votre certificat, vous avez la possibilité d'utiliser OpenSSL ou d'aller sur ce site qui vous les fournira en quelques instants, en vous proposant de remplir un formulaire (évitez de donner la même adresse email que celle de votre compte vendeur pour ne pas prendre de risque).
Une fois votre clef privée et votre certificat public récupérés, connectez-vous à votre compte vendeur. Aller dans « mon compte » ⇒ « préférences » ⇒ « Certificats de paiements sur site marchand ». Cette page vous montre les différents certificats publics que vous avez déjà envoyés à Paypal (pour l'instant à priori il n'y en a aucun). Cliquez sur « ajouter » puis sélectionnez votre certificat public (attention ! ne pas confondre avec la clef privée) et envoyez-le. Une fois l'upload terminé, Paypal vous affichera un ID de certificat correspondant au fichier que vous venez d'envoyer, notez-le quelque part nous en aurons besoin par la suite.
Toujours sur la même page vous verrez un bouton « télécharger », cliquez dessus pour récupérer le certificat public de Paypal.
<?php #Scrypt traduit et modifie par maniT4c #Retrouvez le scrypt d'origine sur http://www.stellarwebsolutions.com/en/articles/paypal_button_encryption_php.php #Defini le chemin de la racine pour OpenSSL putenv("HOME=~"); # chemin vers la clef privee $MY_KEY_FILE = "/mon_chemin/ma_clef.pem"; # chemin vers le certificat public $MY_CERT_FILE = "/mon_chemin/mon_certificat.pem"; # chemin vers le certificat public de paypal $PAYPAL_CERT_FILE = "/mon_chemin/paypal_cert_pem.txt"; # chemin vers openssl sur votre serveur # pensez a verifier que openssl est active sur votre serveur avec la commande phpinfo() $OPENSSL = "/usr/bin/openssl"; $form = array('cmd' => '_xclick',//indique a paypal qu'il s'agit d'un bouton payer maintenant 'business' => 'vendeur@domaine.com',//adresse du vendeur (qui doit recevoir le paiement) 'item_name' => '5 kilo de mandarine', //nom de la commande 'item_number' => '1', //numero de la commande 'currency_code' => 'EUR', //Devise 'amount' => '10', //montant a payer 'lc' => 'FR', //langue de l'interface paypal 'cert_id' => '72B3ENUM3MZGC', //identifiant de certificat donné par paypal 'custom' => 'mes valeurs utiles pour le traitement',//variable permettant de recevoir diverses informations sur la page de retour 'invoice' => '1',//valeur unique empechant les paiements accidentels (doit être differente pour chaque paiement) 'charset' => 'utf-8',//Definit le charset utilisez 'no_shipping' => '1', //Le client n'est pas invite a rentrer son adresse 'cpp_header_image' => 'http://www.domaine.com/logo.jpg',//Adresse de l'image se trouvant en haut de la page de paiement (750x90px maxi) dans l'ideal cette image soit se trouver sur un serveur securisé pour eviter d'avoir un message indiquant que certaine parti de la page ne sont pas écurisée. 'return' => 'http://www.domaine.com/boutique.php',//Adresse de retour lorsque l'utilisateur clique sur retouner a la boutique 'cancel_return' => 'html://www.domaine.com/anul.php',//Adresse de retour pour les annulations 'no_note' => '1',//Empeche l'utilisateur de rajouter des commentaires a son paiement. 'notify_url' => 'http://www.manit4c.com/global/panier/ipn.php'//Url appelee par paypal lors du paiement, cette page permettra le traitement des commandes payees. ); //on enregistre le formulaire crypte dans une variable $encrypted = paypal_encrypt($form); //Cette fonction encrypte le formulaire il n'est pas necessaire de comprendre son fonctionnement 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"; } //Assign Build Notation for PayPal Support $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 != "") { //echo "Adding to blob: $key=$value\n<br />"; fwrite($pipes[0], "$key=$value\n"); } } fflush($pipes[0]); fclose($pipes[0]); $output = ""; while (!feof($pipes[1])) { $output .= fgets($pipes[1]); } //echo "outpout=".$output; fclose($pipes[1]); $return_value = proc_close($process); return $output; } return "ERROR"; }; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Paiement Paypal</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="fr" /> </head> <body> <!-- l'attribut action du formulaire doit rediriger vers www.sandbox.paypal.com pour la phase de test et vers www.paypal.com pour le réel --> <form target="paypal" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <!-- on affiche le formulaire crypté --> <input type="hidden" name="encrypted" value=" <?php echo $encrypted; ?>"> <!-- Indique la source de l'image du bouton payer maintenant --> <input type="image" src="http://images.paypal.com/images/x-click-but01.gif" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée"> </form> </body> </html>
<?php //email pour prévenir le vendeur $mailTo="Moi <votreemail@domaine.com>"; //permet de traiter le retour ipn de paypal // lire la publication du système PayPal et ajouter 'cmd' $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // renvoyer au système PayPal pour validation $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"; //www.sandbox.paypal.com pour la phase de test //www.paypal.com pour la phase réel. $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30); // affecter les variables publiées aux variables locales $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; $headerMail= "Content-Type:text/html;charset=iso-8859-1\n";//permet d'envoyer les message au format html $headerMail.= "Content-Transfer-Encoding: 8bit\n";//permet d'envoyer les message au format html $headerMail.="From: me";//pour répondre au message //on prépare le texte de l'email $textMail=" <strong>Détail de la commande</strong><br /> Commande numéro:".$item_number."<br /> prix: ".$payment_amount." € "; if (!$fp) { // ERREUR HTTP } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { //on envoi un email pour prévenir qu'une commande a ete passee mail($mailTo,"Une nouvelle commande à été réglée",$textMail,$headerMail); // C'est ici que vous devrez traiter la commande (enregistrement bdd etc..) // vérifier que payment_status est Terminé // vérifier que txn_id n'a pas été précédemment traité // vérifier que receiver_email est votre adresse email PayPal principale // vérifier que payment_amount et payment_currency sont corrects // traiter le paiement } else if (strcmp ($res, "INVALIDE") == 0) { // consigner pour étude manuelle } } fclose ($fp); } ?>
Il ne vous reste plus qu'à afficher la page contenant le bouton Paypal, effectuer un paiement, et consulter votre messagerie pour voir si vous avez bien reçus l'email. Une foi que votre système sera totalement opérationnel il suffira de refaire la même chose mais cette foi en mode réel. Bon courage.
La sandbox paypal a la facheuse tendance à ramer et à ne pas toujours vous générer automatiquement un numéro de carte bancaire. Voici une solution pour pallier à ce problème. Il suffit de créer une page html et à y copier le code suivant.
<html> <!-- générateur de numéros de cartes Visa à 16 chiffres basé sur un code GPL de Graham King : http://www.darkcoding.net/projects/credit-card-generator/ --> <head> <script type="text/javascript"> var visaPrefixList = new Array ( "4539", "4556", "4916", "4532", "4929", "40240071", "4485", "4716", "4" ); function strrev(str) { if (!str) return ''; var revstr=''; for (i = str.length-1; i>=0; i--) revstr+=str.charAt(i) return revstr; } function completed_number(prefix) { var ccnumber = prefix; // generate digits while ( ccnumber.length < 15 ) ccnumber += Math.floor(Math.random()*10); // reverse number and convert to int var reversedCCnumberString = strrev( ccnumber ); var reversedCCnumber = new Array(); for ( var i=0; i < reversedCCnumberString.length; i++ ) reversedCCnumber[i] = parseInt( reversedCCnumberString.charAt(i) ); // calculate sum var sum = 0; var pos = 0; while ( pos < 15 ) { odd = reversedCCnumber[ pos ] * 2; if ( odd > 9 ) odd -= 9; sum += odd; if ( pos != 14 ) sum += reversedCCnumber[ pos +1 ]; pos += 2; } // calculate check digit var checkdigit = (( Math.floor(sum/10) + 1) * 10 - sum) % 10; ccnumber += checkdigit; return ccnumber; } function credit_card_number (prefixList) { var randomArrayIndex = Math.floor (Math.random() * prefixList.length); var randomPrefix = prefixList[ randomArrayIndex ]; return completed_number (randomPrefix); } </script> </head> <body> <h3>35 pseudo-cartes VISA :</h3> <script type="text/javascript"> for (var n = 0; n < 35; n++) { var visa = credit_card_number (visaPrefixList); document.write ( visa + '<br/>'); } document.write ( '<br/><h3>faire \'reload\' ...</h3><br/>'); </script> </body> </html>
Il vous suffira ensuite d'ouvrir cette page en local puis de copier l'un des code de CB proposez et de le coller dans le formulaire de paiement. PEnsez à rentrer une date d'expiration dans le futur et à mettre 000 comme cryptogramme visuel. Ps: j'ai trouvé ca sur le forum de paypal merci à l'auteur dont je n'ai plus le nom (dsl). Ps2: utilisez ces codes pour autre choses que la sandbox paypal ne vous ménera pas bien loin à part peut être en prison :)
Discussion
je pense qu'il y a un problème a la fin du code je ne pense pas qu'un else if (qui devrait plutot elseif )fonctionne derriere une boucle while
.mais je peux me tromper…..
Oups en effet j'ai oublier une ligne :) Je vien de la rajouter.
Bonjour,
Merci beaucoup pour ce tutorial ;) ca m'a permis d'avancer dans mon projet. Par contre j'ai encore un pti souci, lorsque je clique sur le bouton “acheter maintenant” j'ai le message suivant sur l'adresse (https://www.sandbox.paypal.com/fr/cgi-bin/webscr), je suis en test actuellement :
“Certaines des informations requises sont manquantes ou incomplètes. Veuillez corriger les informations saisies, puis réessayer.”
merci d'avance pour votre aide.
Il est possible que l'encodage de ton formulaire ne fonctionne pas. Verifit que ton serveur te permet d'utiliser openssl. Dans un premier temps tu peux mettre en place le paiement sans cryptage pour faire des test. Il suffit d'accepter les paiements non cryptés (à modifier dans les options paypal) et mettre directement ton formulaire sans le crypter. Si tu as toujours le même message cela signifie qu'en effet tu oublit un element (montant, etc..) il faut vérifier que les informations obligatoires sont bien présentes. Si tu n'as plus le message c'est bel et bien que le problème venait du cryptage du formulaire. En règle général si openSSL n'est pas accessible sur le serveur la variable $encrypted sera vide.
Bonjour maniT4c,
Merci pour ton aide, j'ai bataillé hier comme un malade, j'ai donc testé la variable $encrypted qui était effectivement vide … donc j'ai bien analysé la classe paypal et j'ai fini par la testé en local (sous fedora) et là ca a marché ! J'ai contacté mon hébérgeur pour avoir plus d'infos et tu as trouvé, d'apres lui je n'ai pas accés à OpenSSL, donc je l'ai dans l'os :p La seul solution me dit-il, c'est de basculer sur du dédier.
Merci encore pour ton tuto et pour les infos de ce site en général.
Bonne continuation et merci encore.
Personnellement j'ai tester sur un mutualisé chez OVH et j'avait accès a OpenSSL. (sur un 90plan de mémoire)
Salut,
le script a l air bien mais je comprends pas où est le fichier “conf.php” qui est inclu dès la premiere ligne… j imagine que ca doit faire parti de ton code et en aucun cas du script… je me trompe ? en tous cas merci, car c'est pas Paypal qui va nous aider pour rendre les choses simples…
bonne nuit
Bastien
Re,
en effet, tu as du oublier d'enlever le include('../conf.php') car il n'est pas présent dans le script d'origine.
Par contre, je suis en train d'améliorer le script pour qui il fonctionne avec un panier complet, contenant tous les articles, et pas seulement un seul article. Si jamais j'arrive à faire fonctionner ca, je pourrais te l'envoyer.
bonne nuit Bastien
En effet le fichier conf.php fait parti de mon script perso, je l'ai retiré du code. pour ma part j'utilise le bouton payer maintenant de paypal sur le total d'un panier que j'ai développé précédemment.
Slt,
je n'arrivais pas à faire fonctionner le script. En regardant sur l'original, j'ai vu que dans le formulaire, tu avais remplacé target=“_blank” par target=“paypal”. J'ai remis l'original et ca fonctionne. Si jamais d'autres personnes ont eu ce souci…
Par contre, je n'ai pas réussi à faire fonctionner ce cryptage sur un panier (_cart au lieu de _xclick). Paypal trouve une erreur dans le panier et je ne sais pas du tout où elle est. Le panier fonctionne bien sans cryptage mais si je passe la liste des objets dans le form que je vais crypter, ca fonctionne plus du tout. Si jamais qq a une idée.
bonne journée Bastien
J'avoue ne jamais avoir essayé sur un panier (_cart) mais il me semblait que la méthode était assez similaire. Si tu trouve la solution a ton problème n'hésite pas à nous la faire partager. Bon courage.
Il m'est impossible d'utiliser openssl, il me donne un code d'erreur. Je crois qu'il est innaccessible, comment je pourrais l'activer ? J'ai un serveur dédié.
Dans un premier temps il faut que tu soit sur que tu n'as pas openSSL d'activer. Il suffit d'utilsier la commande phpinfo et tu devrait voir si openssl est activé. Ensuite pour le mettre en place sur ton serveur dédier, tu peux déja aller voir sur www.openssl.org pour avoir plus d'informations.
Bonjour, Merci pour votre tutoriel très complet. Juste une petite question concernant le chemin pour ssl. Je suis sur un serveur mutualisé d'ovh, un 90 plan. Je ne sais pas trop quoi mettre. Merci d'avance pour votre réponse. Encore merci pour votre aide.
Bonjour Sophie, Essai ce chemin ”/usr/bin/openssl”
Bonjour ManiT4c, merci pour le chemin…. Ca semble passer. En revanche, ma page de test m'affiche bien le bouton paypal mais affiche également les 3 erreurs disant qu'il ne trouve pas les clefs : $MY_KEY_FILE $MY_CERT_FILE $PAYPAL_CERT_FILE Pourtant les chemins semblent bon. Quand je tape directement les adresses dans le browser, les clefs sont bien affichées. Peut etre faut -il les mettre dans un dossier particulier ? Merci d'avance, Sophie
J'ai trouvé la réponse à ma question : Il faut mettre le chemin relatif vers les clefs et non le chemin complet avec le http://...
En revanche dans la page ipn, au niveau traitement de données, si quelqu'un pouvait me donner une idée de script pour les actions suivantes, ce serait super sympa à lui. Merci d'avance, Sophie
C'est ici que vous devrez traiter la commande (enregistrement bdd etc..) vérifier que payment_status est Terminé
vérifier que txn_id n'a pas été précédemment traité vérifier que receiver_email est votre adresse email PayPal principale
vérifier que payment_amount et payment_currency sont corrects traiter le paiement
Ce n'est pas évident de te donner un script tout fait cela depend de ta boutique de ta base de donnée, etc… Il faut surtout que tu comprenne ce que tu doit faire et que tu l'adapte à ta boutique. En thèorie tu as du sauvegarder la commande passé par le client dans une base de donnée (ou autre chose). Il faut alors vérifier que les informations renvoyée par paypal corresponde aux informations enregistré dans la base de donnée et agir en conséquence. (Valider la commande si tout est bon, ou avertir le propriétaire de la boutique qu'il y a eu un problème lors de la commande, etc..)
Bonjour,
J'ai suivi le tuto à la lettre, mais voilà ce que j'ai quand j'essaie le bouton:
https://www.sandbox.paypal.com/fr/cgi-bin/webscr: Nous ne sommes pas parvenus à décrypter l'ID de certificat.
j'héberge le site aux US
Merci
As tu vérifié que l'ID de certificat que tu as mis pour la variable 'cert_id' est bien l'ID que t'as fournis paypal lorsque tu as envoyé ton certificat public ?
Salut,
Vous avez réussi à le faire fonctionner avec un panier complet? Si quelqu'un à la solution, j'aimerais bien en profiter car là je patauge un peu…
Merci
Je n'ai pas encore essayer et je ne pourrais pas le faire de suite. Mais dés que j'ai trouvé une solution je viendrait rédiger un article sur wiki. A moin bien sur que quelqu'un ai réussi et le courage avant moi de poster un article.
Bonjour, Je suis étudiant en DUT Réseaux & Télécommunication et je suis en train de créer un site avec paypal. Donc merci beaucoup pour ce tuto.
J'ai juste un problème, quand je m'inscrit à cet adresse : https://developer.paypal.com , il ne me renvoit pas le mail de confirmation. Donc impossible de créer le compte et donc je ne peux pas insérer paypal pour mon site.
Merci d'avance pour votre aide.
Bonjour Florian, J'ai eu le même problème que toi lors de mon inscription d'après le forum des developper paypal il fallait attendre.. mais 24h j'ai commencer à trouvé ca long alors j'ai tenter avec une nouvelle adresse et cette fois ca à fonctionné (j'ai jamais reçus mon premier mail de ma première inscription de toute facon). Donc le seul conseil que je peux te donner c'est d'essayer avec une autre adresse email. Bon courage !
Bonjour,
Même avec une autre adresse, toujours rien recu.
Si quelqu'un peut m'aider svp.
Merci
Je pense qu'il ne te reste plius qu'a essayer de les contacter et leur expliquer ton probleme. Vérifie bien quand m^me tes boite de spam etc…
Tres bonne explication. Je voudrais savoir si quelqun peut m'aider la dessus. je voudrais vendre des objets a un seul exemplaire avec un bouton paypal acheter maintenant. Est-il possible de désactiver ou de le rentre inutilsable apres que l'Acheteur eu acheter cette item. Je peut pas croire qu'il existe pas un moyen. merci de m'aider
Essai en fixant une valeur unique pour chaque article que tu vent pour la variable invoice. Imaginons que tu vende une voiture si tu lui met comme “invoice” 2. Lorsque les clients arriveront sur paypal si le produit dont invoice vaut 2 à déja été acheter il refuseront le paiement.
Sinon l'autre solution est de te créé un système de gestion de stock qui affiche le bouton selon l'etat des stocks.
Bonjour,
Voilà j'utilise .. enfin j'essaye de faire marcher le bouton avec Wampsrv2 ssl etc fonctionne bien..
mais mon encrypted est vide.. je ne comprend pas pourquoi..
Mon openssl.exe est dans C:\wamp\bin\apache\apache2.2.6\bin donc j'ai mis $OPENSSL = “C:\wamp\bin\apache\apache2.2.6\bin”; faux ? et pour putenv(“HOME=~”); j'ai laisser comme ca.. faux aussi ?
j'en peux plus.. ca fait des heures que je suis dessus.. merci :)
Verifi que openSSL est bien activé. De mémoire chez moi en local j'avait des problème avec openSSL j'ai rapidement décider de travailler directement sur mon serveur web.
oui oui il est activé.. je px pas encore utilisé sur un serveur web.
si qqn trouve.. merci
(j'ai aussi essayer de mettre le chemin relatif.. marche pas non plus..)
Bonjour, j'ai le même souci que toi lon-va, donc je suis passé par l'outils paypal de création de bouton acheter maintenant. Cela marche presque … lorsque je clique 1ere page de paypal s'affiche avec soit on se connecte en membre paypal? soit on remplit un formulaire. Je me loggue (via SandBox), j'ai le récapitulatif de mon achat, et la j'appuie payer, et puis je tombe sur une page qui me demande de réessayer ou de retourner à l'index.Si quelqu'un à une idée.
Hello Comme les autres, je te remercie pour la rédaction de cet article, trés clair, mais bien entendu, j'ai un souci Je travaille sur la Sandbox. Comme tu le conseilles, j'obtiens certif et clé par le biais du site : http://www.stellarwebsolutions.com/certificates/stellar_cert_builder.php Et je télécharge le certif paypal sans oublier de copier le cert_id obtenu.
bien.
J'ai bien tout checké, dans mon certif perso, j'ai bien la même adresse email que celle du compte vendeur confirmé sur la Sandbox. Mais je tombe en permanence sur cette erreur lors du test :
Nous ne sommes pas en mesure de traiter cette transaction en raison d'un problème concernant l'adresse email PayPal fournie par le vendeur. Veuillez contacter le vendeur afin de résoudre ce problème. Si ce paiement (…)
Aurais-tu des indices de résolution concernant ce message d'erreur ?? J'ai tout bien respecté, et je dois passer en prod réelle le plus rapidement possible, je craque… (Note : j'avais installé openssl sur mon apache pour créer les clé et certif au nom de mon client, et je les garde sous le coude pour réaliser l'opération en réel dés que tout sera ok)
Merci d'avance car là, j'en peux plus…
joss
salut joss
contacte moi ici http://www.informatique-rodez.fr/tutorial-paypal-presentation/ je pourrai peut être t'aider car je viens moi aussi de finir d'installer paypal sur un site
joss pour t'aider sur le site en question va à la rubrique contact et donne moi un email valide! pour ke je puisse t'aider
un autre tuto pour cyrpter le bouton http://www.informatique-rodez.fr/cryptage-dynamique-en-php-des-boutons-paypal/
bonjour à tous,
j'ai suivi les différents tuto, et j'ai un soucis au niveau de l'IPN, j'ai testé sur sandbox et lorsque le client paye ma base ne se met pas à jour, alors que le codre est bon je lai testé, j'ai juste l'impression que paypal n'envoie pas les données sur ma page ou est situé mon script IPN.
Quelqu'un a une idée?
J'ai inséré le lien dans l'option IPN des préférences du compte du vendeur.
As tu essayé de lancer directement ta page ipn ? En mettant en dur les infos que devrais te renvoyer paypal. Si t'as BDD est mises à jour c'est déjà une bonne chose. Ensuite tu peux momentanément remplacer ton code de mise à jour de ta bdd par un code qui t'enverra un email contenant les infos renvoyé par paypal ça te mettra peut être sur la voie d'une eventuelle erreur de ta part. Perso lorsque j'ai eu des ptit problème avec mon script ipn je me suis envoyé des emails pour chaque étape (un email pour vérifier les données renvoyées par paypal, un email pour vérifier si l'enregistrement dans ma BDD avait fonctionné, etc..) c'est un peu fastidieux mais difficile de faire autrement. Ou alors tu te créé un fichier de log dans lequel tu écris les infos qui t'intéresse. C'est certainement plus rapide que la méthode de l'email.
Serait-il possible selon toi de remplacer l'appel externe à openssl par un appel php direct (présenté sur php.net http://www.manuelphp.com/php/ref.openssl.php) ? Ca pourrait améliorer les perfs (noter que je n'ai pas - encore - testé le bout de code que tu donnes et je ne sais donc pas si c'est gourmand en temps de cryptage et donc de chargement).
En tous cas, très bon tuto, merci!
Ah autre chose
Lors de la réponse IPN, dans le bout de code while (!feof($fp)) { $res = fgets ($fp, 1024);
Peut on une fois la chaine VERIFIED ou INVALID trouvée arrêter la boucle ?
Bonjour, j'ai un petit problème, au niveau du bouton. Lorsque je clique sur le bouton je suis redirigé vers sandbox.paypal.com mais un message s'affiche, Je cite:“Un problème est survenu lors de vérification de la signature de votre commande sécurisée. Veuillez contacter votre vendeur” D'où peut venir ce problème? Merci. Sinon super tuto merci à toi
Bonjour, j'ai suivi les étapes à la lettre, maintenant je suis bloqué, je ne sais pas comment créer le bouton paypal en l'introduisant dans mon site. J'ai de la difficulté à comprendre comment on fait. Merci.