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
- 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/.
- Faites les changements nécessaires si vous avez besoin pour les fichiers de langues.
- Allez dans la partie d'Administration -> Modules-> Paiement de votre boutique osCommerce.
- 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? |
True |
False |
Protection Vendeur |
peut être eligible |
pas eligible |
Champ d'adresse pré-rempli si pas de compte PayPal |
non |
oui |
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 leOrder
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 2006
La 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.
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('youremail@yourdomain.com', '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
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.
Liens utiles :
PayPal: http://www.paypal.com
osCommerce: http://www.oscommerce.com
Support Thread: http://forums.oscommerce.com/index.php?act=ST&f=7&t=179917