Paiements avec PayPal IPN dans osCommerce.
Votre business peut tirer avantageusement parti de la notoriété et de la confiance accordée à PayPal, y compris sur la marché français. Sa notoriété est adossée à celle de Ebay, à qui il appartient dorénavant, qui est maintenant très populaire chez nous. De plus, PayPal ne demande aucun droit d'entrée, contrairement aux banques françaises, qui font payer cher, généralement 300€ à l'ouverture, le surcroit de confiance qu'elles sont sensées vous apporter.
Vous devez donc tout d'abord ouvrir un compte PayPal, puis activer le module à partir de l'interface d'administration de osCommerce. De cette façon, votre client qui choisira l'option PayPal sera redirigé automatiquement sur le site PayPal sécurisé où ils pourront procéder à la transaction.
Il y a deux choses à régler pour que tout aille pour le mieux. La première est que le client qui effectue le paiement ferme son navigateur sans revenir à votre boutique. Dans ce cas, la commande n'est tout simplement pas enregistrée dans votre base de donnée, ce qui est facheux: vous ne saurez pas à quoi correspond le règlement et vous devrez traiter le problème "manuellement".
La seconde est que votre client doit posséder un compte PayPal pour aboutir dans sa transaction, mais ce ne sera pas necessairement le cas si vous décidez d'implémenter vous même une facilité de PayPal : "Account Optional" ou "Compte PayPal Facultatif". Il pourra alors régler avec sa carte bancaire.
Avec la version osCommerce MS2.2 , il y a une contibution qui utilise le système PayPal IPN qui rend la transaction sure et fiable. C'est celle que nous utiliserons dans cet article.
Vous pouvez la télécharger en vous rendant sur le lien suivant:
http://www.oscommerce.com/community/contributions,1352/
Vous avez une alternative avec une autre contribution que vous pouvez télécharger en vous rendant sur le lien suivant: http://www.oscommerce.com/community/contributions,2679
Quest ce que IPN? Instant Payment Notification, c'est une interface qui supporte une mécanisme de confirmation de paiement en temps réel, par une communication de serveur à serveur. IPN délivre une confirmation immédiate de la transaction, un 'status' et des données additionnelles sur les transaction annulées, ou celles qui n'ont pas abouti. Plus simplement, IPN renvoie des informations à osCommerce, (appelées notifications) qui peuvent être exploitées par programmation. C'est cette réponse que osCommerce va exploiter pour valider la commande.
Ouvrir un compte PayPal Business:
Préparez votre carte bancaire. C'est une opération assez simple qui se fait sur un serveur sécurisé https://www.paypal.fr
Le lien pour s'inscrire est en haut, à droite de la page d'accueil PayPal, à l'heure ou nous écrivons ces lignes. Vous appliquerez la procédure de façon à ce que votre compte ait le statut vérifié ET confirmé!
Pour cela PayPal prélèvera un montant symbolique sur votre carte, les 4 chiffres nécessaires à la vérification de votre compte apparaitrons sur votre relevé de banque. (Tout cela est fictif bien sur sur le compte développeur, voir ci après)
Activer PayPal dans osCommerce.
Le module standard PayPal est disponible dans osCommerce, comme nous l'avons vu. Mais nous allons utiliser PayPal IPN, pour bénéficier du retour d'inforamation de la transaction. Il nous faut donc le télécharger, voir le lien ci-dessus, puis l'installer en suivant les instructions fournies. Si vous avez osCommerce CreLoad, cette contribution est déja installée.
Il suffit de l'activer. C'est le module PayPal IPN 0.981 de Pablo Pasqualino, il existe en effet plusieurs contributions pour le même usage, ce qui ne nous facilite pas les choses.
A partir de l'interface d'administration, allez dans module, paiements.
Dévalidez l'option standard de PayPal si ce n'est pas déja fait. Cliquez sur Installer, puis éditer pour paramétrer le module.
Vous devez renseigner les informations suivantes:
Tester PayPal
Afin de pouvoir tester le paiement par PayPal, il faut vous assurez que votre serveur de développent est visible sur le Web. Si vous testez votre boutique sur un serveur WAMP (Comme EasyPHP) le serveur PayPal ne pourra vous retourner les status à une adresse du style http://127.0.0.1/catalog/
A moins que vous utilisiez DynDNS, ou un service équivalent, vous devrez déployer votre boutique sur le serveur web pour effectuer les tests.
Il est important de tester l'intégration IPN avant de "vous lancer". L'espace virtuel PayPal offre un environnement permettant d'effectuer des tests sans utiliser des transactions de paiement réelles. Il est également judicieux de tester le système PayPal en ligne avant de l'exploiter sur votre site.
Test sur l'espace virtuel (sandbox)
L'espace virtuel PayPal permet de tester la plupart des aspects du système PayPal incluant la notification instantanée de paiement. Pour effectuer un test sur l'espace virtuel, prenez un papier et un crayon et restez concentré :
Remarques sur le traitement des commandes avec PayPal IPN
Vous remarquerez lorsque vous ferez vos tests, à l'issue du règlement sur PayPal, le panier n'est pas vidé, alors que la commande est bien prise en compte. Cela est du au fait que la communication entre PayPal et votre boutique s'effectue de façon asynchrone et prend "un certain temps". Si vous vérifiez votre caddie un peu plus tard, vous verez qu'il finit effectivement par se vider.
Par ailleurs, les mails envoyés à votre client par la boutique sont en anglais et au format texte. Rien à voir avec les superbes mails HTML envoyés par le module virement bancaire de la CreLoad. A mon sens, tout cela doit pouvoir être amélioré, nous y reviendrons.
Passer en production:
Pour mettre en production votre module PayPal, vous devez:
- Disposer d'un compte PayPal Business bien réel avec le statut Vérifié.
- Paramétrer correctement ce compte comme indiqué précedemment.
- Dans l'admin osCommerce, indiquer l'identifiant email du compte PayPal réel.
- Modifier les scripts checkout_paypal.php et paypal_notify.php en supprimant toute référence au sandbox dans les url PayPal.
Sécurité:
Ajouter un zeste de sécurité en insérant ces quelques lignes dans votre fichier .htaccess, celui de votre répertoire /catalog/
<Files paypal_notify.php>
Order deny,allow
Deny from all
Allow from notify.paypal.com
</Files>
Cela aura pour effet de réserver l'accès de paypal_notify.php au serveur PayPal
Support Technique Paypal lorsque votre site est en production:
https://www.paypal.com/IntegrationCenter/ic_contact-support.html