04
MARS

Tutorial: Intégrer PayPal à son site web en PHP - Partie 1

Publié le 04/03/09 à 07h52 par DJo

Nouveau tutorial qui vous permettra d'intégrer le service de paiement en ligne PayPal à votre site web PHP.

 

Tutorial: Intégrer PayPal à votre site web PHP

Objectif du tutorial:

Le but de ce tutorial est de vous guider pas à pas dans l'intégration du service de paiement en ligne paypal et de vous expliquer comment fonctionne le processus de paiement ...

Ce tutorial s'applique uniquement aux sites développés en PHP.

 

Plan du tutorial:

 

Principe de fonctionnement de PayPal

Pour commencer, voyons comment fonctionne le processus de paiement en ligne avec PayPal.

Voici le schéma d'une transaction typique:

Schéma fonctionnement PayPal

Pour les non anglophones:

  • Étape 1: L'acheteur se trouve sur votre page web où votre produit ou service peut être acheté.
  • Étape 2: L'acheteur est redirigé sur le site PayPal après avoir cliqué sur le bouton "Acheter". Il a le choix entre entrer ses coordonnées bancaires s'il n'a pas de compte PayPal ou de s'identifier pour utiliser son compte.
  • Étape 3: Un récapitulatif de la commande est affiché sur une nouvelle page PayPal. L'acheteur confirme ou annule sa commande.
  • Étape 4: Une fois le paiement validé, un message de validation est affiché sur le compte paypal.
  • Étape 5: Puis l'acheteur retourne sur votre site grâce à un lien sur la page précédente. Soit une page de validation du paiement soit une page

 

Une fois que le paiement est validé (Etape 4), Paypal lance une requête IPN sur votre site pour que vous puissiez traiter le paiement. Nous verrons plus tard comment récupérer les données de cette requête.

 

En ce qui concerne notre site, nous aurons besoin de créer 4 pages web:

  • La page qui contiendra le formulaire de paiement pour acheter notre produit ou commander notre service.
  • La page qui affichera un message en cas de succès du paiement
  • La page qui affichera un message en cas d'annulation du paiement
  • La page qui traitera le paiement, qui sera appelé par PayPal grâce à la requête IPN lorsqu'un paiement est validé.

 

 

Création des comptes de test dans la sandbox PayPal

Maintenant que l'on a vu en gros le principe, passons à la mise en place.

PayPal a mis en place une sandbox de son service permettant de tester l'intégration du service et simuler des paiements sans qu'aucuns fonds ne soient versés.

Très pratique pour la période de test !

1) Rendez-vous sur le site développeur de PayPal et créez un compte.

Sandbox Paypal

Le compte sandbox est indépendant de votre compte PayPal original. Vous n'avez pas besoin de mettre la même adresse.

2) Créer un premier compte de Test de type "Buyer"

Dans un premier temps, nous allons créer un compte Buyer, celui qui achetera le produit.

Cliquez sur le lien "Create a preconfigured buyer or seller account." situé sur la page d'accueil de la Sandbox.

Mettez n'importe quel nom d'utilisateur. L'adresse email n'a pas besoin d'être valide.

Créer un compte Buyer sur Paypal Sandbox

Puis validez.

3) Créer un deuxième compte de test, cette fois-ci de type "Seller"

Réitérez l'opération pour créer le compte marchand, celui qui recevra l'argent virtuel de nos tests.

Cliquez sur le lien "Create a preconfigured buyer or seller account." situé sur la page d'accueil de la Sandbox.

Sélectionnez Account Type = "Seller".

Validez.

4) Vérifiez que vos deux comptes soient bien créés dans votre sandbox

Cliquez sur "Test Accounts" dans le menu de la sandbox.

Vous devriez avoir vos deux comptes virtuels affichés.

Vous pouvez essayer de lancer la sandbox sur l'un des deux comptes, vous verrez que l'interface est identique à celle que vous avez avec votre compte PayPal réel.

5) Activer les notifications Instantannées de paiement  (IPN) sur le compte vendeur

Sélectionnez le compte vendeur (Celui qui fini par biz@votredomaine) puis lancez la sandbox (Cliquez sur Enter Sandbox Site).

Identifiez vous dans la nouvelle page avec l'email / pass de votre compte virtuel vendeur.

Allez dans la partie "Profile" puis "Selling Preferences" et cliquez sur le lien "Instant Payment Notification".

Activez la notification et spécifiez le domaine de votre site.

 

 

Mise en place du bouton de paiement

Passons maintenant au développement.

Nous allons mettre en place le formulaire de paiement associé à notre produit ou service.

Typiquement, il est préférable que cette page soit sécurisée avec du SSL pour crypter les paramètres qui seront envoyés à PayPal, mais ce n'est pas non plus une obligation.

Pour chacun de vos produits en vente, ou pour la validation de votre panier ou même l'achat de crédits pour un service, vous devrez créer un formulaire comme celui-ci:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type='hidden' value="Montant_Achat" name="amount" />
<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://votredomaine/paiementValide.php" />
<input name="cancel_return" type="hidden" value="http://votredomaine/paiementAnnule.php" />
<input name="notify_url" type="hidden" value="http://votredomaine/validationPaiement.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="votre_emailtest_biz@domaine" />
<input name="item_name" type="hidden" value="Nom de votre produit" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden" value="ID_ACHETEUR" />
<input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
</form>

Ce formulaire ne comporte que les paramètres basiques essentiels, il en existe beaucoup d'autres, allez faire un tour sur la documentation paypal pour plus de détails.

Explication des paramètres du formulaire

Décortiquons ligne par ligne le code du formulaire:

1) La déclaration du formulaire

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

Nous déclarons le formulaire. Les valeurs seront envoyées à la sandbox pour nos tests. Une fois que vous passerez en production, il faudra que vous changiez l'adresse pour: https://www.paypal.com/cgi-bin/webscr

 

2) Le montant de la transaction

<input type='hidden' value="Montant_Achat" name="amount" />

Le paramètre amount contiendra le montant de la transaction. Vous pouvez le charger automatiquement si vous avez des produits avec des tarifs fixes, avec du PHP.

Mais vous pouvez aussi faire un select permettant de choisir parmi plusieurs prix:

<select name="amount">
<option value='10'>10 Crédits</option>
<option value='25'>25 Crédits</option>
<option value='50'>50 Crédits</option>
</select>

A vous de voir !

 

3) Choix de la monnaie

<input name="currency_code" type="hidden" value="EUR" />

Vous pouvez spécifier la monnaie par défaut ou alors changer dynamiquement la valeur si votre site a une vocation internationale.

 

4) Frais de port

<input name="shipping" type="hidden" value="0.00" />

 

5) Taxe TVA

<input name="tax" type="hidden" value="0.00" />

Laisser à 0 si vous n'avez pas de taxes sur le produit ou service.

 

6) Adresses des pages de retour

<input name="return" type="hidden" value="http://votredomaine/paiementValide.php" />
<input name="cancel_return" type="hidden" value="http://votredomaine/paiementAnnule.php" />
<input name="notify_url" type="hidden" value="http://votredomaine/validationPaiement.php" />

Il faut spécifier dans le formulaire les adresses des trois pages de retour:

  • La page de retour si paiement accepté: name="return"
  • La page de retour si la transaction est annulée: name="cancel_return"
  • Et la page qui sera appelée par l'IPN: name="notify_url"

 

7) Type de bouton cliqué

<input name="cmd" type="hidden" value="_xclick" />

Ce paramètre permet de déterminer sur quel type de bouton l'utilisateur à cliqué. la valeur "_xclick" signifie que l'on a cliqué sur un bouton de type "Acheter".

 

8) Adresse du compte à créditer

<input name="business" type="hidden" value="votre_emailtest_biz@domaine" />

Très important, l'adresse email du compte PayPal à créditer. Pour les tests, mettez l'adresse virtuel du compte Seller.

 

9) Nom du produit ou service vendu

<input name="item_name" type="hidden" value="Nom de votre produit" />

Attention avec les accents et l'encodage, des fois cela ne passe pas très bien et le problème d'encodage s'affiche sur la facture PayPal ...

 

10) Supprimer la demande de note

<input name="no_note" type="hidden" value="1" />

Par défaut, PayPal demande aux acheteurs d'ajouter un commentaire lors de la transaction. En spécifiant ce paramètre, la boite ne s'affichera plus.

 

11) Langue par défaut

<input name="lc" type="hidden" value="FR" />

 

12) Paramètre pour le bouton

<input name="bn" type="hidden" value="PP-BuyNowBF" />

 

13) Paramètre personnalisé pour le traitement du paiement sur notre site

<input name="custom" type="hidden" value="ID_ACHETEUR" />

Ce paramètre est très important car il va nous permettre de donner l'identifiant du membre qui effectue la transaction.

Lorsque l'on voudra traiter le paiement, nous pourrons récupérer ce paramètre pour ensuite créditer son compte ou préparer la livraison du produit acheté ...

 

14) Bouton de validation du formulaire

<input name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />

Il est préférable de laisser l'URL du bouton en provenance de Paypal pour faire gage de confiance, et permettre de garder des boutons à jour ...

 

A vous de rajouter les paramètres que vous aurez besoin en plus.

Voilà pour la première partie de ce tutorial !

Nous verrons prochainement comment tester notre formulaire et plus important, comment traiter les transactions réussies.

 

 

Support du tutorial

Aucun support ne sera fourni en commentaire. Si vous avez des problèmes ou questions, merci de les poser dans le topic dédié au tutorial.

Partie 2 du tutorial Paypal

Baraguiné par pilulu le 20/09/09 à 19h30
pilulu sur La Ferme du Web
Attention, gros problèmes de sécurité avec cette méthode si vous intégrer le formulaire dans votre page de vente,
Avec un logiciel intégré avec firefox comme Web Developer, on change facilement les valeurs cachées du formulaire.
On peux donc passer de 100? au panier à 1?.
Baraguiné par DJo le 20/09/09 à 23h15
DJo sur La Ferme du Web
Il y'a bien sûr un contrôle avec le IPN derrière en PHP.
Baraguiné par le 14/10/09 à 19h28
c'est sur qu'il y'as des problèmes de sécurité ????
Baraguiné par DJo le 14/10/09 à 21h59
DJo sur La Ferme du Web
Non pas du tout, l'IPN permet de tout controler.
Baraguiné par le 26/11/09 à 23h34
Oép tu refais le calcul du panier avant d'enregistrer la commande dans l'ipn comme sa tu si un mec a baisser les prix sa commande ne sera pas enregistrée.
Sinon il faut crypter le bouton paypal avec SSL
Baraguiné par le 04/06/10 à 09h54
Salut !

Juste une précision sur le point n°9 du paragraphe "Explication des paramètres du formulaire".

"Attention avec les accents et l'encodage, des fois cela ne passe pas très bien et le problème d'encodage s'affiche sur la facture PayPal ..."

La solution au problème est de préciser l'encodage souhaité dans le formulaire via un champ de type hidden :

Par exemple :
Baraguiné par le 04/06/10 à 10h15
Alors, évidemment de champ hidden ne s'affiche pas donc pour utiliser ce champ dans votre formulaire, il faut faire un champ avec les informations suivantes :
- type : hidden
- name : charset
- value : utf-8

A plus tard !
Baraguiné par check120 le 22/11/10 à 17h20
check120 sur La Ferme du Web
Si l'on exploite en retour de paiement les informations IPN renvoyé par Paypal il n'y a aucun problème de sécurité (vérification des montants, de l'id transaction, etc..). Il faudra par contre utiliser un statut intermédiaire pour sa commande avec le passage "en attente de paiement" à "Payée", le temps que l'on est reçu et vérifié l'IPN Paypal.

Par contre, si on modifie sur un site d'ecommerce l'adresse www.paypal.com par www.sandbox.paypal.com, toujours via les champs cachés du bouton Paypal. Je ne vois pas pourquoi il ne serait pas possible de payer cette commande avec les faux utilisateurs de la sandbox !(je n'ai pas essayé...) Cela signifie qu'il faut impérativement vérifié le champ 'test_ipn' de l'IPN pour détecter la sandbox ou ne filtrer que les IP valide de Paypal.com avec htaccess.
Baraguiné par tejipe le 30/01/11 à 00h24
tejipe sur La Ferme du Web
Bonjour

Je suis vraiment novice mais je l'avoue...
Voila, j'essaie de mettre en place ce fameux tuto pour avoir paypal sur le site que je crée, mais la 1ere partie est nickel mais à partir de la 2eme pour l'IMP, je ne comprends rien et je n'y arrive vraiment pas...

et oui, je vous l'avais dit que j'étais novice...

Pouvez vous m'aider?
Baraguiné par stephanemathieu5 le 19/10/11 à 18h56
stephanemathieu5 sur La Ferme du Web
bonjour
est ce que quelqu'un à récemment installer le module paypal sur son site ?
Merci
Baraguiné par dummycreation le 26/12/11 à 08h42
dummycreation sur La Ferme du Web
Bonjour à tous,

En fait, de quel type de paiement Paypal ce tutoriel concerne? A ma connaissance il y en a plusieurs!
- Paiement standard
- Paypal Express
- Paypal Intégral
- Paypal Option plus, etc.

Paypal Express semble conseillé par les forums mais si je ne me trompe pas c'est du standard le tuto
Baraguiné par le 18/02/12 à 23h35
bonjour, je teste votre tutoriel mais curieusement kan le je teste le formulaire sur la page du récapitulatif de ma commande. in n y a aucun bouton pour continuer le paiement
Baraguiné par le 25/09/12 à 11h06
bonjour j'ai intégré cette solution dans mon site , mais au niveau de paypal lorsque le transfert est terminé ça ne redirrige pas pas directement vers ma page que j'avais précisé dans
Baraguiné par le 27/09/12 à 20h59
Super tuto les gars c'est du bon boulot :) en 20 minutes les comptes teste ce créditait niquel, je viendrais vous dire une fois le nom de domaine dans la poche si cela fonctionne :p merci à tous =)
Baraguiné par le 01/05/13 à 11h23
Dommage cette page n'est plus valable depuis peu. En effet PayPal Developer Beta vient d'être lancé..
En tout cas, tuto utile.. dans le passé.
Baraguiné par le 05/01/14 à 04h01
Je suis ravis de suivre ce tuto!
Baraguiné par fast13 le 21/06/14 à 14h41
fast13 sur La Ferme du Web
Bonjour! Comment connaître le fin de cette belle histoire?
Que faut-il changer dans ce tuto par rapport au nouveau "PayPal Developer Beta"? Merci par avance! Jon
Baraguiné par DrSnake le 12/08/14 à 00h30
DrSnake sur La Ferme du Web
Hello, un petit up pour les anciens posts ;) une nouvelle version du site verra le jour avec une communauté active de paysans :D
rendez-vous fin Août début septembre
Baraguiné par Goyavi le 31/01/15 à 15h42
Goyavi sur La Ferme du Web
Bonjour,

Je vois que ce tuto est assez ancien, est-il toujours d’actualité ?
Il me semble aussi que Paypal a fait des modifications il n'y a pas très longtemps pour des raison de sécurité avec les SSL.

Ajouter un Commentaire

Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:

Compte la Ferme du Web

Identifiez-vous
Inscrivez-vous

Compte Facebook

Connexion avec Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web