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:

  • Allow PayPal IPN          True pour activer le module.
  • PayPal IPN ID                Adresse e-mail qui vous identifie sur le compte PayPal.
  • PayPal IPN Notify URL   Addresse(URL) de la page /paypal_notify.php, ce paramètre est, normalement, rensigné automatiquement.
  • PayPal IPN Use cURL    Indiquez True si Detected.
  • PayPal IPN Add Shipping to Amount
  • PayPal IPN Add Tax to Amount
  • PayPal IPN Update Stock Before Payment
  • PayPal IPN Allowed Currencies  Code ISO des devises acceptées. Exemple: USD=dollard américain, EUR=euro.
  • PayPal IPN Default Currency  Devise par défaut, euro (EUR) en principe.
  • PayPal IPN Test Mode         False si vous êtes en production.
  • PayPal IPN Payment Zone  Francais vous permet d'avoir l'interface en français.
  • PayPal IPN Set Order Status
  • PayPal IPN Sort Order of Display.  Ordre d'affichage du module, vous pouvez laisser 0.

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é :

Créez tout d'abord un compte développeur dans la centrale des développeurs PayPal: http://developer.paypal.com , ensuite:
  1. Créez un compte Personnel dans l'espace virtuel (sandbox) et ajoutez une carte bancaire.
  2. Créez un compte Business dans l'espace virtuel puis ajoutez et confirmez un compte bancaire. Indiquez un code banque réel (ex:30003) et un n° de compte fictif à 11 chiffres.

    Pour obtenir le statut vérifié, il suffit de saisir le code fictif à 4 chiffres donné en exemple.
    Attention: les e-mail des comptes de tests sont fictifs, vous devez les récupérer à partir de l'onglet e-mail de votre compte développeur. Vous récupérerez le lien pour confirmer votre compte. C'est indispensable pour recevoir les notifications automatiques dans la boutique.
    Ensuite, dans votre compte business, il faut activer le renvoi automatique à le boutique une fois le paiement terminé. Pour cela, procéder de la facon suivante:
    Connectez vous à votre compt Business.
    Cliquez sur le lien Profil situé sous la barre d'onglets.
    Sur la page de gestion du profil, allez sur: Préférences de réception de paiement
    situé dans la colonne Préférences des ventes.
    Cochez la case oui de l'option Renvoi automatique.
    Indiquez l'url de renvoi, il s'agit de l'url de votre boutique à laquelle vous ajoutez le nom du script correspondant, cela donne quelquechose qui ressemble à ceci, si votre boutique est dans le dossier /catalog sous la racine du serveur.
    http://www.maboutique.com/catalog/checkout_process.php

    Ne perdez pas le fil, cela fait beaucoup d'informations à gérer (3 identifiants et 3 mots de passe!)
  3. Cas général: dans votre bouton PayPal et le script de gestion IPN, utilisez l'URL https://www.sandbox.paypal.com/cgi-bin/webscr là où vous utiliseriez normalement https://www.paypal.com/cgi-bin/webscr .
    Dans le cas d'une boutique osCommerce Creload avec PayPal IPN 0.981, il faut donc modifier les fichiers:
    paypal_notify.php situé dans le répertoire /catalog/
    Allez à la ligne suivante et remplacer comme indiqué ci dessus:
    tep_redirect("https://www.paypal.com/cgi-bin/webscr?cmd=_...etc
    Devient donc:
    tep_redirect("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_...etc

    checkout_paypal.php du même répertoire.
    Recherchez et remplacez:
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,"
    https://www.paypal.com/cgi-bin/webscr");
    Par ceci:
    curl_setopt($ch, CURLOPT_URL,"https://www.sandbox.paypal.com/cgi-bin/webscr");
    Faites de même pour chaque ligne de code contenant l'url paypal.

    La contribution PayPal IPN Module v1.0 for 2.2 MS2 gère cela automatiquement, il y a un paramètre dédié dans l'admin pour passer en mode test.
  4. Dans votre admin, laissez le paramètre PayPal IPN Test Mode = False du module Paypal IPN, si ce paramètre =True, c'est seulement pour faire des tests en local sans connexion au sandbox. Vous devez également indiquer l'adresse e-mail du compte PayPal Business en regard du paramètre PayPal IPN ID. 
  5. Procédez ensuite à un achat avec paiement PayPal IPN à partir de votre boutique, en utilisant l'e-mail et le mot de passe du compte Personnel pour la connexion.
    A ce stade, vous pouvez non seulement tester osCommerce, mais vous entrainer à gérer votre compte Paypal Business: en effet, n'oubliez pas que chaque paiement doit être traité individuellement. Dans la partie admin de osCommerce, vous trouverez également un historique des transactions, qui sont l'enregistrement des données retournées par PayPal.

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:

  1. Disposer d'un compte PayPal Business bien réel avec le statut Vérifié.
  2. Paramétrer correctement ce compte comme indiqué précedemment.
  3. Dans l'admin osCommerce, indiquer l'identifiant email du compte PayPal réel.
  4. 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

 
[ osCommerce ]
Copyright © QuadLoop 2006