Documentation PayPal IPN v2.1 pour osCommerce

I. Introduction à PayPal IPN

Comme la documentation du module de paiement PayPal IPN v2.1 pour osCommerce 2.2 MS2 ne semble par exister en français, je m’y suis collé et vous la propose donc en consultation.

A quoi sert le module de paiement PayPal IPN ? Le module PayPal IPN stocke les commandes prématurément dans la base de données pour qu’elles soient ensuite changées par les notifications PayPal IPN. Cela est fait pour tenir compte des clients qui ne reviennent pas à la boutique après une commande, pour stocker les commandes dans la base de données, et prendre en compte les commandes quand la notification de PayPal IPN est envoyée.

Vous la trouverez en téléchargement ici : osCommerce PayPal IPN Module v1.0 For 2.2MS2

II. Explications

Auteurs originaux : Harald Ponce de Leon, Mark Evans osCommerce Team Members

Mises à jour par PandA.nl, Navyhost, Zoeticlight, David, gravyface, windfjf, Monika in Germany, AlexStudio and Terra

Traduction française par Damien Desrousseaux. Pour les bugs et remarques constructives : webmaster @ boutique-ecommerce.fr

PayPal: http://www.paypal.com

osCommerce: http://www.oscommerce.com

Support Thread: http://forums.oscommerce.com/index.php?act=ST&f=7&t=179917

TerraNetwork: http://www.terranetwork.net

Sommaire

Introduction

Les boutiques osCommerce ont besoin que le client revienne sur celles-ci lorsque le paiement Paypal a été effectué pour que les détails de la commande soient enregistrés, les emails de confirmation de commande soient envoyés et les stocks de produits soient mis à jour.

Dans le passé les propriétaires de boutiques avaient donc des problèmes quand un client ne retournait pas sur la boutique. Les propriétaires de boutiques recevaient une notification de paiement de Paypal mais aucune trace de commande sur la boutique. Le module Paypal IPN règle ce problème en stockant les commandes dans la base de données avant les paiements Paypal, avec un état noté “Preparing [PayPal IPN]”. Et dès que le client paie sa commande, le statut de celle-ci est automatiquement mis à jour par celui que vous avez configuré (en général “En instance”).

Cela signifie que même si un client ne revient pas sur la boutique, le propriétaire de la boutique aura une trace de la commande effectuée, et cela même si aucun mail n’a été envoyé. Toutes les commandes qui resteront sous l’état “Preparing [PayPal IPN]” seront à vérifier minutieusement, et plusieurs scénarios seront alors possibles :

1) Commandes en cours

Les commandes récentes avec l’état “Preparing [PayPal IPN]” peuvent être des commandes en cours, c’est-à-dire un client qui change sa commande ou qui est en train de payer. Action: Aucune – les commandes récentes doivent être laissée telle quelle (laissez le client terminer).

2) Commande abandonnées (non payées)

Si un client choisit d’abandone une commande, i.e. il ne poursuit pas le paiement, alors un enregistrement de la commande non payée sera ajoutée avec l’état “Preparing [PayPal IPN]”. Action: Supprimer – les commandes de plus de 48 heures sans paiement correspondant peuvent être supprimées (l’option pour restaurer le stock doit être décochée puisque lors de l’état “Preparing [PayPal IPN]” les produits commandés ne sont pas encore déduits du stock).

retour en haut

Problèmes connus

  • Si la réponse IPN de Paypal échoue, alors aucun email de commande n’est envoyé, le stock et l’état de la commande ne sont pas mis à jour.
  • Si un client ne revient pas sur le site, son panier n’est pas vidé.
  • Le coût de livraison envoyé à Paypal inclut la TVA, comme il n’y a pas d’autre moyen de passer la TVA séparément.
  • Le module PayPal IPN fonctionne le mieux avec les options “aggregate” et “move tax to total = true” – les autres paramètres peuvent passer des montants incorrects à Paypal.
  • Le mélange de PayPal IPN avec d’autres contributions nécessite souvent de s’y connaître en développement PHP – lisez le conseil ci-dessous svp.
  • IDs de commandes en double – Si vous avez plus de une boutique liée à votre compte Paypal, alors vous devez configurer votre compte Paypal pour qu’il ne vérifie pas les commandes doublons.
  • Si PayPal ne s’affiche pas comme option de paiement pendant la validation de commande, vérifiez que le module the PayPal IPN a un numéro d’ordre de tri différent de vos autres modules de paiement. Les modules avec le même numéro d’ordre de tri peuvent se mélanger et créer ce problème.

retour en haut

Le fonctionnement

Le module PayPal IPN stocke les commandes prématurément dans la base de données pour qu’elles soient ensuite changées par les notifications PayPal IPN. Cela est fait pour tenir compte des clients qui ne reviennent pas à la boutique après une commande, pour stocker les commandes dans la base de données, et prendre en compte les commandes quand la notification de PayPal IPN est envoyée.

En communiquant avec la notification IPN, l’information de commande est envoyée de Paypal de façon sécurisée par les fonctionnalités OpenSSL natives de PHP ou par cURL quand OpenSSL n’est pas disponible, ou encore de façon normale non sécurisée quand aucun moyen de communication sécurisée n’existe, pour confirmer la commande effectuée. Si cela réussi, l’état de la commande est mis à jour automatiquement pour informer qu’une commande a été passée avec succès. Les commandes invalides sont laissées telles quelles et doivent être vérifiées par le propriétaire de la boutique.

Ce module a également la possibilité d’utiliser une clé de chiffrement OpenSSL publique/privée pour envoyer les informations de commande de manière sécurisée à PayPal pendant la procédure d’achat. Plus d’informations sur cette fonctionnalité sont disponibles ici:

Encrypted Web Payments: https://www.paypal.com/us/cgi-bin/webscr?cmd=p/xcl/rec/ewp-intro-outside

Ce module a été réalisé pour être aussi simple que possible, sans avoir besoin de toucher à des fichiers du noyau de osCommerce pour l’installation et l’utilisation.

retour en haut

Installation de PayPal IPN

  1. Copiez les fichiers qui se trouve dans le répertoire “catalog” de l’archive téléchargée de la contribution dans votre répertoire d’installation d’osCommerce, incluant le nouveau dossier /ext/.
  2. Faites les changements nécessaires si vous avez besoin pour les fichiers de langues.
  3. Allez dans la partie d’Administration -> Modules-> Paiement de votre boutique osCommerce.
  4. Installez le module PayPal IPN (il s’appelle “Carte de crédit/débit (via PayPal)” si vous utilisez le fichier de langue français) et configurez ses paramètres. Note: Ce module est désactivé par défaut pour qu’aucune erreur de configuration ne puisse se produire pendant l’installation sur une boutique en production.

Si vous avez déjà une version du module PayPal IPN installée, alors commencez par supprimer IPN de vos modules en partie d’administration avant toute chose (en cliquant sur “supprimer”) avant de suivre les étapes précédentes.

retour en haut

Configuration du module (Administration de la boutique)

Enable PayPal IPN Module

Lorsque cette option est activée, le client peut choisir la méthode de paiement par Paypal IPN lors de sa commande.

Gateway Server

Le serveur utilisé pour effectuer les transactions.

Le serveur Testing utilises le serveur Sandbox (test) de Paypal, et le serveur Live est utilisé pour réaliser les vraies transactions.

Veuillez noter que le serveur Test/Sandbox est indépendant du serveur Réel (Live), et nécessite un compte spécifique. Les comptes peuvent être créés gratuitement à l’adresse : https://developer.paypal.com.

Note: L’option est réglée sur le serveur de test (Testing) par défaut.

E-Mail Address

L’adresse e-mail de votre compte business de Paypal (l’adresse e-mail du vendeur). L’argent généré par les commandes payées avec le module Paypal IPN sera envoyé à ce compte PayPal.

Sort order of display

L’ordre dans lequel le moyen de paiement par PayPal IPN apparaîtra sur la page de paiement de la boutique, si plus d’un moyen de paiement est disponible.

Transaction Currency

La devise dans laquelle PayPal effectuera les transactions. Selected Currency accepte plusieurs devises quand la devise du client est utilisée pour la transaction. Si vous utilisez cette option alors vous devez accepter ces devises dans les paramètres de votre compte Paypal. Si une devise spécifique est sélectionnée (i.e. EUR, USD, ..) et que le client a sélectionné une autre devise pendant la procédure de commande, la transaction sera effectuée de force dans la devise définie par le propriétaire de la boutique.

Payment Zone

Si définie, cette option permet de limiter la possibilité de paiement par PayPal IPN à la zone géographique définie.

Force Shipping Address?

Si l’option “force shipping address” est sur TRUE, alors l’adresse Paypal de l’acheteur s’affichera dans les détails de commande Paypal et dans les commentaires de la commande de la boutique. Si l’adresse Paypal correspond à l’adresse d’envoi alors la commande doit être valide pour la protection des vendeurs. NB: LA Protection des vendeurs n’est pour le moment disponible que pour les clients aux USA, Canada and UK (au momen de l’écriture en janvier 2007).

Toutefois ce paramètre a un bug qui reste, puisque les clients sans compte Paypal devront ré-entrer leur adresse. Si “force shipping” est mis sur FALSE, alors la commande n’est pas eligible pour la Protection Vendeur mais les clients sans compte Paypal auront leur champ adresse prérempli.

Force Shipping Address?TrueFalse
Protection Vendeurpeut être eligiblepas eligible
Champ d’adresse pré-rempli si pas de compte PayPalnonoui

Set Preparing Order Status

Dès que la page de confirmation de commande appaîrait au client, le contenu de son panier est stocké prématurément dans la table des commandes avec un état de commande bien défini.

Si le client décide de changer le contenu de son panier d’achats (des produits différents, un mode de livraison différent ou un changement de devis), la commande est supprimée de table commandes de la base de données et réinsérée avec les informations mises à jour.

Cela ne se passe que lorsque la page de confirmation de commande apparaît au client, donc si le panier d’achats a été modifié, il ne sera pas synchronisé avec la commande stockée prématurément en base de données jusqu’à ce que le client revienne sur cette page de confirmation de commande.

Si un commande prématurée a été stockée dans la table de commandes de la base de données et que le client a annulé le paiement avec Paypal,la commande restera dans la base de données jusqu’à ce qu’elle soit supprimée manuellement par le propriétaire de la boutique. Cela peut être réalisé simplement en sélectionnant les commandes en cours dans le filtre d’état des commandes sur la page Administration ->Clients->Commandes, pour voir les commandes stockées prématurément (= avant paiement).

Faites attention en supprimant des commandes prématurées de ce type – assurez vous qu’elles datent de quelques jours.

Les commandes prématurées se verront attribuer l’état “Preparing [PayPal IPN]” mais ne contiendront aucune entrée dans la table de l’historique des états de commandes jusqu’à ce le client ne fasse le paiement par Paypal et ne soit revenu à la boutique sur les pages “checkout process” et “checkout success” qui confirment que la commande a été prise en compte. (Cela peut servir pour différencier les commandes invalides des commandes valides).

Set PayPal Acknowledged Order Status

C’est l’état de commande qui sera fixé lorsqu’une notification IPN sera reçue de la part de Paypal, et renvoie le résultat VERIFIED (payé).

Les notifications renvoyant un résultat INVALID n’entraineront aucune modification de l’état des commandes prématurées.

Les paiements VERIFIED entraineront une mise à jour de la commande, sur laquelle sera ajouté un enregistrement d’historique d’état de commande contenant la valeur de l’état Paypal dans le commentaire de la commande. Ce commentaire ne sera pas envoyé au client par e-mail, il sera uniquement visible par celui-ci lorsqu’il consultera son historique de commandes dans son compte.

Set PayPal Completed Order Status

C’est l’état attribué à une commande prématurée lorsque la notification IPN a été envoyée par Paypal, a renvoyé un résultat de type “VERIFIED” et que le paiement Paypal a été réalisé avec succès.

Seules les commandes pour lesquelles les paiements ont été bien reçus obtiendront cet état de commande, vous permettant ainsi d’autoriser les contenus à télécharger si vous en avez.

Transaction Type

Cela vous permet de définir comment les transactions doivent être traitées par Paypal – soit chaque produit commandé sera envoyé à Paypal (Per Item : un paiement par produit), soit uniquement le total de commande est envoyé à Paypal (Aggregate).

La configuration récommandée est “Aggregate”. La configuration “Per item” (par objet) peut poser des problèmes, notamment lorsqu’elle est utilisée avec une contribution telle CCGV(trad).

Move tax to total

Voulez-vous ajouter la TVA au montant total ? Si oui, Paypal montrera toujours le montant total incluant la TVA. (requiert “Aggregate” plutôt que “Per Item” pour fonctionner). La configuration recommandée est “True”.

Page Style

Le style de page à utiliser qui est défini dans votre compte Paypal. PayPal vous permet de définir des styles de page de paiement dans votre compte pour afficher votre logo pendant la procédure de paiement par exemple. Laissez vide pour utiliser le style par défaut.

Debug E-Mail Address

Tous les paramètres d’une commande invalide seront envoyés à l’adresse e-mail configurée ici à des fins de débugguage.

Enable Encrypted Web Payments

Lorsque cette option est activée, les paramètres de commande seront cryptés pour être envoyés à Paypal.

Note: Cette fonctionnalité nécessite une installation en fonctionnement de OpenSSL, avec les droits d’accès sur le fichier “openssl”.

Note: Le fichier de programme “openssl” est appelé par la fonction PHP exec(), le serveur web doit donc avoir l’accès.

Your Private Key

Le chemin et nom de fichier de la clé privée utilisée pour la signature des données de la commande.

Your Public Certificate

Le chemin et nom de fichier de votre certificat public pour la signature des données de la commande.

PayPal’s Public Certificate

Le chemin et nom de fichier de votre clé publique Paypal qui sera utilisée pour crypter les données de la commande.

Your PayPal Public Certificate ID

L’ID du certificat public que Paypal doit utiliser pour décrypter les données cryptées de commande.

Note: Cette valeur est définie dans la page de vos paramètres de paiement sécurisé dans Paypal.

Working Directory

Le répertoire de travail pour stocker les fichier temporaires. (Tous les fichiers créés seront automatiquement supprimés quand ils ne seront plus utiles)

OpenSSL Location

Le chemin et nom du fichier du programme OpenSSL (“openssl”).

retour en haut

Statut de paiement PayPal – infos dans les commentaires de commandes

L’information renvoyée par PayPal est incluse dans le commentaire de commande entre parenthèses. Vous pourrez y trouver les réponses suivantes:

  • Canceled-Reversal: un remboursement a été annulé. Par exemple, vous avez gagné une procédure contre le client, et les fonds de la transaction qui avaient été remboursés, vous reviennent à nouveau.
  • Completed: La paiement a été effectué, et les fonds ont été ajouté à votre compte Paypal sans problème.
  • Denied: Vous avez réfusé un paiement. Cela arrive seulement lorsque le paiement était en attente pour de multiples raisons décrites dans l’élement “PendingReason”.
  • Expired: l’authorisation a expiré et ne peut être récupérée.
  • Failed: Le paiement a échoué. Cela n’arrive que si le paiement a été effectué d’un compte en banque de votre client.
  • In-Progress: La transaction est en cours d’authorisation.
  • Partially-Refunded: La transaction a été partiellement remboursée.
  • Pending: Le paiement est en attente. Voir “pending_ re” pour plus d’informations.
  • Processed: Un paiement a été accepté.
  • Refunded: Vous avez remboursé le paiement.
  • Reversed: Un paiement a été renvoyé pour un retour ou autre type de renvoi. Les fonds ont été retirés de votre compte et ont été renvoyés à l’acheteur. La raison d’un renvoi est spécifiée dans l’élement “ReasonCode”.
  • Voided: L’authorisation a été vidée.

Pour plus d’informations et pour une liste complètes des raisons, rendez vous sur la page https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.html et descendez jusqu’à voir “payment_ status”.

La compréhension des codes vous aidera à identifier correctement l’information renvoyée par PayPal, et qui est stockée dans le commentaire de la commande.

Exemple

Un état de commande qui ressemble à cela:
11/06/2006 12:49:50 False Pending PayPal IPN Invalid [Pending; address]
11/06/2006 13:20:49 True Processing
11/06/2006 13:24:30 False Pending PayPal IPN Verified [Completed (Unverified; $49.50)]
signifie que la paiement était en attente parce que “Le paiement est en attente car votre client n’a pas confirmé son adresse de livraison et votre configuration de réception des paiements vous permet actuellement d’accepter ou refuser manuellement ces types de paiement”. Quand le paiement a été accepté, l’état de commande à été mis un jour avec un “Completed” (complété) par PayPal.

retour en haut

Paramètres du compte PayPal

Renvoi automatique

Vous n’avez PAS besoin d’activer le renvoi automatique dans votre compte PayPal puisque cette information est envoyée automatiquement par le module IPN.

Si vous voulez l’activer quand même, alors le chemin du renvoi est le chemin vers votre fichier checkout_process.php. Voici des exemples de ce chemin:

  • pour les sites avec le full SSL: https://votredomaine.com/checkout_process.php
  • pour les sites avec SSL partagé : https://votreserveur.xssl.net/votredomaine.com/checkout_proccess.php

Note: N’activez le renvoi automatique que si vous avez une seule boutique qui utilise votre compte PayPal!

IPN

Vous n’avez PAS besoin d’activer IPN (transfert des données de paiement) dans votre compte PayPal puisque toutes les informations requises sont envoyées par le module.

Si vous voulez l’activer, l’URL de notification est le chemin vers votre fichier /ext/modules/payment/paypal_ipn/ipn.php.

Problème des commandes en double.

Le transfert des données PayPal envoi un paramètre “invoice” à PayPal. Ce paramètre correspond au numéro ID de la commande (1,2,3,4 etc). Toutefois, PayPal a besoin que ce numéro soit unique donc si vous avez déjà envoyé une commande avec le même numéro, elle sera refusée. L’envoi du même numéro ID de commande peut arriver si vous avez deux boutiques osCommerce utilisant votre compte PayPal unique – le compte PayPal ne peut pas faire la distinction entre les différentes boutiques / domaines / bases de données, il regarde uniquement le nombre et dit “hey, cette commande a déjà été payée!”

Pour désactiver la vérification des numéros de commandes en double dans votre compte PayPal – > “Préférences” – > “Préférences de réception de paiements”. Ici vous aurez l’option:

Bloquer les paiements accidentels :
Vous pouvez empêcher les paiements accidentels en bloquant les doublons pour les numéros de demande de paiement
Oui, bloquer les paiements multiples pour un numéro de demande de paiement unique
Non, autoriser les paiements multiples pour un numéro de demande de paiement unique
Choisissez “Non”.

PayPal autorisera maintenant les paiements de toutes les commandes, même si le numéro ID de commande correspond à une commande déjà payée. Ca peut être un problème potentiel si les clients paient une commande en double par erreur (ex: en actualisant la fenêtre dans le navigateur ou en appuyant deux fois sur un bouton etc.).

retour en haut

Paiement sécurisés SSL

Si vous avez SSL d’activé, alors vous n’aurez pas besoin de paramétrer les paiements web cryptés car le module de paiement utilise automatiquement SSL s’il est disponible.

Pour paramétrer les paiements cryptés, identifiez-vous sur votre compte PayPal, cliquez sur “Préférences -> Certificats de cryptage pour site marchand”. Cliquez sur le bouton “Télécharger” pour télécharger le certificat public de Paypal. Créez votre propre certificat et envoyez le sur Paypal.

Pour créer votre propre certificat, vous pouvez utiliser openssl:
Créer une clé privée: openssl genrsa -out my-prvkey.pem 1024
Créer une clé publique: openssl req -new -key my-prvkey.pem -x509 -days 365 -out my-pubcert.pem

Quand vous ajouterez ce certificat, PayPal vous renverra un “Id de certificat public PayPal”=”. C’est un des paramètres dont osCommerce aura besoin.

Pour plus d’informations, rendez vous sur la page https://www.paypal.com/en_US/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf – Si vous avez des problèmes avec les paiements sécurisés, je vous recommande fortement de lire le chapitre correspondant du guide PDF car il donne des informations précieuses!

Vous pouvez optionnellement bloquer tous les paiements non sécurisés: en allant dans “Préférences” > “Préférences de réception de paiements sur le site”, et en choisissant “Oui” pour “Bloquer les paiements sur site marchand non cryptés”.

retour en haut

Utiliser IPN avec d’autres contributions

Note: Règle d’or – dès que vous faites un QUELCONQUE changement sur votre page checkout_process.php, vous devez manuellement ajouter les changements dans les pages paypal_ipn.php and ipn.php

L’IPN PayPal fonctionne différemment des autres modules de paiements, il passe outre la page checkout_process. Cela signifie que toute contribution qui modifie le fichier checkout_process.php nécessitera un peu de développement manuel dans paypal_ipn.php et ipn.php.

Depuis la version 1.3 de ce module, le module de paiement PayPal IPN est compatible avec le Register Globals Patch v1.4 – vous n’avez pas besoin de faire de modifications pour utiliser ça.

La version 2.0 introduit un nouveau noyau de code donc tous les fixs postés pour les versions 1.x ne fonctionneront probablement pas sans une modification.

retour en haut

Questions Fréquemment posées

Je n’ai pas le SSL et ne veut pas configurer le paiement sécurisé crypté. Est-ce Paypal voudra bien m’envoyer des données non protégées?Oui, dans le Order Integration Guide (PDF) PayPal dit que “Les informations sur les cartes de crédit et banques ne sont pas transmises dans le transfert des donnés de paiement (IPN), PayPal ne nécessites donc pas le Secure Sockets Layer (SSL) pour crypter les transmissions IPN.” Mais notez qu’il y a un hack dans lequel les clients peuvent changer le numéro de commande des paiements non cryptés, donc vérifiez que les paiements Paypal et les totaux de commande correspondent.Quand je clique sur Continuer sur la page de confirmation, ça m’emmène sur la boutique de Test comme il faut, mais le total est à $0. Pourquoi?Vérifiez votre devise – La valeur 0 ressort en général lorsque votre boutique et votre compte PayPal ont des restrictions de devise différentes ou si vous utilisez une mauvaise abbréviation sur une devise de votre boutique. Par exemple le Canada doit avoir CAD (et non CAN). Une liste complète des codes de devises est ici : Supported Currencies.Style de page – Le style de page à utiliser pour la procédure de transaction (définie dans vos préférences PayPal). Dois-je toucher à quelque chose ici?Seulement si vous le soulvez, sinon laissez vide. Ce paramètre vous permet de relooker les pages Paypal avec votre logo etc. Regardez l’aide dans votre compte PayPal pour plus dinformations.”Set PayPal Acknowledged Order Status” – Mettre l’état des commandes passées avec ce module de paiement sur cette valeur – Quelle valeur? Pour le moment j’ai “default” est-ce bon?Oui, default fonctionne, sinon choisissez la valeur que vous souhaitez dans la liste déroulante. C’est à vous de choisir.Mes commandes mettent parfois [Completed (Verified; $ et d’aures fois [Completed (Unverified; $)]. Qu’est-ce que cela signifie et comment une commande devient vérifiée?Completed signifie que l’argent de la commande est déjà arrivé dans votre compte, verified ou unverified signifie que le client a un compte PayPal “vérifié” ou “non vérifié”.J’ai une contribution ABC et maintenant elle ne fonctionne pas avec PayPal IPN!C’est une question récurrente du sujet de support. Veuillez lire les notes concernant l’intégration de contribution de ce guide. Comme expliqué, PayPal IPN ne passe pas par la page checkout_process.php donc, à la place, toute modification faite sur ce fichier doit être intégrée dans paypal_ipn.php et ipn.php. Ce n’est pas chose facile pour tout le monde, des connaissances en PHP et MySQL sont fortement recommandées pour réaliser cela. Des notes additionnelles pour les développeurs se trouvent à la fin de ce document.Mon hébergement est chez GoDaddy et IPN ne marche pas!Toute personne hébergée par godaddy.com et utilisant ce module aura les modifications suivantes à faire dans /ext/modules/payment/paypal_ipn/ipn.php:
Trouvez (vers la ligne 71):
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Juste après ajoutez :
curl_setopt($ch, CURLOPT_PROXY, “HTTP://64.202.165.130:3128”);
Vous aurez besoin de cela pour la communication avec PayPal.
Le Fix est de Brian Christensen comme dit dans le sujet de support du forum le 25 Août 2006La version de OsCommerce que j’utilise n’a pas de répertoire EXT. Ai-je besoin de ce répertoire EXT? Et quels CHMOD dois-je lui mettre?Oui, vous devrez créer ce répertoire – envoyez juste le répertoire /ext/ en entier sur votre boutique pour être sûr d’avoir la structure de répertoires convenable. Mettez le CHMOD sur 755 pour les dossiers, 644 pour le fichier.

retour en haut

Support

Le support et l’aide pour ce module sont dans le forum osCommerce: http://forums.oscommerce.com/index.php?act=ST&f=7&t=179917

Il y a aussi ici un sujet intéressant de AlexStudio sur PayPal IPN, SSLs & les paiements sécurisés et les contrôles de téléchargements : http://forums.oscommerce.com/index.php?showtopic=177853&st=0&p=730503.

Veuillez ne pas m’envoyer de MP ou email directement (Terra) sauf si vous cherchez un support payant via ma société d’hébergement et développement www.terranetwork.net.

retour en haut

Notes pour développeurs

ipn.php

ipn.php récupére les informations renvoyées par PayPal. Lorsque l’état de paiement change, ipn.php est appelé et la commande est mise à jour. Depuis la version 2.0, ipn.php gère aussi les mises à jour du stock et les envois d’emails de commandes. Veuillez noter que le ipn.php est appelé à chaque fois que l’état change. – ex: quand un paiement est validé ou remboursé.

Comme le ipn.php n’a rien à voir avec l’id de session du client, nous n’y trouverons pas tous les tableaux du checkout_process.php. Ce que nous aurons c’est:

  • Les variables générées par application_top.php
  • Le tableau $order généré par la fonction query() dans la classe “order”. Le tableau $order dans ipn.php EST DIFFERENT du tableau $order disponible dans checkout_process!. Pour vérifier la structure du tableau, voyez la fonction query() dans la classe “order” de commande /includes/classes/order.php.
  • Toutes les variables renvoyées par PayPal en $_POST.

Pour vérifier ce que le tableau contient, vous pouvez vous l’envoyer en email. Ajoutez le code suivant ipn.php vers la ligne 91 (et changez l’adresse email par la vôtre bien sûr):
// DEBUG contenu du tableau post
$order_email = print_r($_POST,true) . “\n\n” . EMAIL_SEPARATOR . “\n\n” . print_r($_order,true);
mail(‘[email protected]’, ‘Debug Tableau de Test’, $order_email);
// DEBUG DEBUG DEBUG

paypal_ipn.php

paypal_ipn.php gère le pré-stockage de la commande et envoie les paramètres à PayPal.

checkout_process.php

paypal_ipn.php évite de passer par checkout_process en chargeant une redirection dans le before_process. Aucun code n’est utilisé dans le checkout_process.php après le before_process() (vers la ligne 50).

Processus de paiement

osCommerce utilise un certain nombre de fonctions dans le processus de commande pour inclure du code provenant du module de paiement. La liste suivante vous donne le nom de chaque page et les fonctions qu’elle contient:

  • checkout_payment: javascript_validation(); selection()
  • checkout_confirmation: update_status(); pre-confirmation_check(); confirmation(); process_button()
  • checkout_process: before_process(); after_process()

Ressources PayPal

Pre-populate form field variables

IPN Variables

Developer PDF documentation

retour en haut

III. Conclusion du tutorial

Cette traduction française de la documentation du module de paiement PayPal IPN pour osCommerce peut aussi être trouvée sur la page officielle de la contribution, ainsi que sur le blog de boutique ecommerce : Documentation PayPal IPN v2.1 français

Merci à Harald Ponce de Leon, Mark Evans, PandA.nl, Navyhost, Zoeticlight, David, gravyface, windfjf, Monika in Germany, AlexStudio et Terra.

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*