Installer/Intégrer un système de paiement Paypal sur son site

Publié le 26 septembre 2011 - Developpement Web. Tags : ,

S’il est bien une solution de paiement facile à intégrer sur son site, c’est bien celle proposée par Paypal. La solution de micropaiement de la firme Américaime atomise la concurrence et facilite au passage la vie de bon nombre de sites Internet. Pour une raison ou pour un autre, on peut avoir besoin d’installer une solutions de paiement sur son site. Seulement voilà, si vous n’êtes pas un site e-commerce assez important, et que vous n’avez que quelques services à vendre pour monétiser votre site, très peu de solutions rentables s’offre à vous.

Nous allons donc nous intéresser à la solution Paypal, et voir, comment intégrer cette solution simplement sur son site.

Ici, il ne sera pas question d’apprendre à intégrer une solution de paiement complexe pour une boutique en ligne (d’autant plus que la plupart du temps, ces boutiques intègrent nativement ces  solutions – dans ce cas tournez-vous vers Prestashop), mais plutôt de comprendre le fonctionnement de paypal dans sa configuration la plus simple, ce qui vous permettra de rapidement mettre en place une solution 100% fonctionnelle aux multiples applications : vente de ebooks, accès à un espace privé, abonnements, formules sans pub, etc.).

1. Création d’un compte développeur Paypal

Avant toute intégration, nous allons devoir créer un compte développeur sur Paypal. Cela va nous permettre de créer des comptes acheteur et vendeur fictifs afin de pouvoir tester la solution de paiement que nous allons mettre en place. Rendez vous à cette adresse et inscrivez-vous.

2. Création de comptes de test

Une fois connecté sur la sandbox, il va falloir créer des comptes de test. Pour ce faire, rien de plus simple, utilisez le lien créer un compte pré-configuré et créez 2 comptes :

  • Un compte vendeur, destiné à simuler les paramètres du vendeur
  • Un compte acheteur,pour effectuer vos achats virtuels

Si vous suivez bien, ces comptes sont en réalité des sous comptes de votre compte développeur.

3. Paramétrage du compte vendeur et création d’un bouton

Le menu principal de la SandBox vous propose une option intitulée Test Accounts, permettant de vous connecter rapidement à l’un des sous comptes précédemment créés. Ouvrez une session avec le compte vendeur, paramétrez les diverses options comme bon vous semble, sans oublier d’Activer l’IPN (My Account -> Profile -> Instant Payment Notification Preferences) et de spécifier une URL de notification (correspondant à l’emplacement de votre fichier ipn.php, qu’on va voir plus bas). ex: http://www.domain.com/inc/ipn.php

Maintenant que le compte vendeur est opérationnel, nous allons créer un bouton pour vendre un produit. Allez dans l’onglet Merchand Services, et cliquez sur le lien sell single item.

Différentes options assez explicites s’offrent à vous, paramétrez donc votre bouton selon vos besoins, les champs principaux étant la Description du produit/service et le prix (à ce titre, pensez à jeter un œil sur la grille des commissions Paypal pour éviter les mauvaises surprises). C’est ici que s’ajoute l’option facultative concernant la redirection vers une URL spécifique de votre site à l’issu du paiement (étape 3 : options avancées)

Validez le formulaire en appuyant sur create button puis copiez/collez le code qui s’affiche à l’endroit désiré sur votre site pour y intégrer le bouton.

4. Intégration de paramètres additionnels au bouton

Comme nous venons de le voir, pour intégrer un bouton sur notre site, il suffit de copier/coller le code fournit par Paypal. Cependant, il peut s’avérer utile de passer des variables supplémentaires lors du paiement, afin par exemple, d’identifier un membre (upgrade de compte, etc.). De nombreuses options sont disponibles, voici votre bible à ce sujet.

Pour information, sachez que cette personnalisation fonctionne le plus simplement du monde. Ainsi, si vous désirez récupérer l’ID d’un membre une fois le paiement effectué, vous devez ajouter ceci sur le formulaire :

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

et ceci sur la page ipn.php (que nous allons voir ci-après) :

$_POST['custom']

Bien entendu, cela fonctionne de la même façon pour tous les options disponibles…

5. Mise en place de l’IPN

L’IPN, ou l’Instant Payment Notification, c’est ce qui va permettre à votre site de communiquer avec Paypal, à travers une connexion sécurisée. Grosso modo c’est ici que sera communiqué l’acceptation/refus du paiement. Paypal offre divers exemples de codes (PHP ici) à insérer sur son site, il suffit de le copier/coller en y ajoutant les actions que vous voulez effectuer selon les cas.

Tout est assez clair, veillez cependant à changer la ligne :

$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

par

$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

…lors de vos tests.

De même, si vous avez utilisé le champ personnalisé, pensez à ajouter le code ci-dessous au niveau des variables postées, afin de récupérer la valeur envoyée :

$custom = $_POST['custom'];

Il y a de nombreux champs possibles selon vos besoins, pensez donc bien à récupérer les valeurs de tous les champs additionnels éventuellement envoyés (comme vous le feriez sur un formulaire classique en somme…).

Comme vous l’aurez compris, la partie du code qu’il va falloir éditer selon vos besoins correspond aux zones entre ces accolades :

if (strcmp ($res, "VERIFIED") == 0) {
//Paiement OK
} else {
//Problème
}

En clair, si le paiement est OK, vous faites le nécessaire conformément à ce que vous avez vendu, et s’il y a un problème vous contactez l’acheteur.  Vous pouvez également gérer les remboursements via l’IPN. Pour cela, il suffit d’ajouter un cas de ce type (dans la zone « //paiement OK » du snippet ci-dessus):

if($_REQUEST["payment_status"] == "Refunded" || $_REQUEST["payment_status"] == "Reversed" {
//Mise à jour
}

Pour info, toutes les transactions sont enregistrées dans l’historique de votre compte paypal (My account > History > IPN).

Nb. Comme précisé en introduction, le but de cet article n’est pas de vous présenter une solution fonctionnelle de A à Z, mais de montrer comment intégrer un tel système, afin de pouvoir l’adapter facilement à votre site. Néanmoins, si vous avez besoin d’un exemple concret, voici un excellent article de Tuts+ (Anglais): Utiliser l’IPN Paypal avec PHP

6- Rédirection vers le site

Une fois les vérifications concernant le paiement effectuées, il est possible de spécifier deux URLs de destination vers votre site (l’une pour un paiement validé, l’autre pour un paiement annulé). Cela n’est pas obligatoire, mais largement répandu, et honnêtement plutôt indispensable d’un point de vue ergonomique. (au moins pour ce qui est d’un paiement validé)

Affichez sur ces pages ce que vous voulez, sans oublier que c’est un emplacement idéal pour le message de remerciement 😉

nb. Ces pages de destinations sont définies à la création du bouton. (point #3 de ce tutoriel)

7- Phase de test

Maintenant que tout est prêt, il va falloir tester le système. Connectez-vous à votre compte développeur Paypal, ouvrez un session « Acheteur », puis rendez-vous sur la page ou vous avez mis le bouton paypal. En cliquant dessus vous allez être redirigés sur la page de paiement, telle qu’un acheteur la verra une fois que ce sera en ligne.

Essayez différentes configurations (avec un compte acheteur approvisionné, non approvisionné, annuler des achats, etc.), et vérifiez scrupuleusement que l’intégralité des actions sensées êtres exécutées en fond sont correctement réalisées. (Selon ce que vous vendez cela peut impliquer de nombreuses requêtes et cas).

8- Mise en ligne

Pour passer à la mise en production de votre système de paiement, vous devrez reproduire les paramétrages que nous venons de voir à l’identique sur votre compte officiel. Une fois la solution en ligne, il est préférable de la tester une dernière fois afin de s’assurer qu’aucun grain de sable ne soit venu gripper l’engrenage sur la version définitive.

A ce titre, je vous conseille vivement de sauvegarder vos codes de test (surtout si le formulaire de vente est complexe), cela vous permettra de pouvoir repasser rapidement par la sandbox en cas de problèmes.

Si tout est OK, pensez à a afficher vos Conditions Générales de Vente…

9- Résumé

Comme vous l’aurez l’aurez compris, le mode de fonctionnement est le suivant :

Ce qui est intéressant avec cet IPN, c’est qu’il communique en temps réel avec votre site, les informations sont donc synchronisées en fond de façon transparente. Peut importe si l’acheteur ferme son navigateur avant la page de remerciement de votre site, les informations sont déjà enregistrées dans votre base de données grâce à l’IPN.

10- Conclusion

Voilà pour ce tutoriel volontairement épuré, destiné à vous montrer de façon simple comment intégrer un système de paiement sécurisé via Paypal sur son site. Évidemment, il est possible d’aller beaucoup plus loin, l’API fournie par Paypal étant très complète. Des classes PHP existent aussi pour vous faciliter le travail, elles sont d’ailleurs souvent indispensables pour travailler dans de bonnes conditions.


Articles sur ce thème :