Вы находитесь на странице: 1из 9

Outils

Accepterles paiements
en ligne avecPAYPAL
Sachantque lesventessurinternetreprésententpourl'année2006plus
d'euros
dedouzemilliards pourplusdecentmillions ll est
detransactions.
aiséde penserque pourlescommerçants celareprésenteunevéritable
aubaine.Pourles développeurs celase traduitpar une explosiondes
demandes d'unmoyende paiementparcartebancaire.
d'intégration
ment que vous allez mettre en place. Pour cela
Cetarticleexplique: Cequ'il faut savoir: PAYPAL vous propose :
. L ' e n v i r o n n e m e ndt e t r a v a i lS A N D B O X . . Connaître les basesdu PHP.
. C o m m e n t s é c u r i s e rs o n s y s t è m ed e p a i e m e n t . Posséderun site avec panier. . Paiement par email,
. Posséderun compte sur la plate-forme SAND- . Paiement sur site marchand,
e t l e s é c h a n g e sa v e c l e s e r v e u rs é c u r i s é .
. Comment installer PAYPALdans une interface B O Xp o u r l e d é v e l o p p e m e n t . . Paiement sur site marchand Pro (Etats-
existante. . Posséder un compte PAYPALpour la mise en Unis uniquement),
. Comment exploiter la réponse du serveur (NlP) production. . Passerelle Payflow,
. Acceptez PayPal.
pour mettre à jour le statut des commandes'

Vous trouverez à ce sujet et pour vous aider


Tout ces avantages font du paiement en ligne à choisir la solution qui vous convient un tâ-
un moyen simple, rapide et efficace de factu- bleau comparatif des differentes solutions que

Niveaude difficulté rer un bien ou un service en ligne. Il existe propose PAYPAL à I'adresse suivante : hnps://
sur le marché d'innombrables solutions de w w w.p ay pal. com/ cgi-b in / w eb scr?cm d : -p rof ile-
3
paiement en ligne, la plupart éditées par les comparison. Une fois que vous avez choisie votre
banques elles-mêmes. Cependant il existe solution, vous pouvez penser aux outils qui vont
ous allez voir comment utiliser PAY- quelques acteurs historiques dont le cæur de vous permettre de réaliser votre intégration.
PAL pour proposer un paiement en métier est la transaction électronique. C'est
ligne. Pour cela nous aborderonsles le cas de PAYPAL qui â commencé par pro- Quelsoutils sont mis
solutions de paiement PAYPAL au travers du poser des transferts d'argent sans saisie des à la dispositiondesdéveloppeurs
serveur sécurisé PAYPAL SANDBOX, finale- informations de carte bancaire par le biais PAYPALa pris le soinde bien documenterses
ment et après avoir abordé la question de la de sites de e-commerce partenaires, puis solutions,aussipeu importela solutionde paie
sécurité, nous verrons en detail comment in- à évoluer vers un paiement CB plus classique. ment choisie,vous trouverezfacilement la docu-
tégrer une solution de paiement électronique ceci fait PAYPAL était prêt à rentrer par la mentation qui s'yrapporte.Ceci dit, vouspouvez
à une interface existante. grande porte sur le marché des solutions de tout aussibien vousreporter aux liensci-après.
paiement en ligne avec des solutions homogè-
nes et d'une simplicité exemplaire en terme . Paiementparemail:https://www.paypal.com/
Pourquoiutiliser
une solutionde paiementen ligne d'utilisation. cgi bin/ webscr?cmd : -e mail-pay ments-ouer-
Il y a plusieurstrèsbonnesraisonsd'utiliser uiew-outside,
la plus Le Choixd'une solution PAYPAL . Paiement sur site marchand : https://
un moyende paiementélectronique,
importante de ces raisons reste néanmoins PAYPAL proposeplusieurssolutionspour ef- w ww.payp al. com/ cgi-bin/webscr? cmd: -
fectuer du transfert d'argent, ainsi, avant de p -
w stand ard- ouer uiew -out side,
de favoriser I'achat impulsif. Mais cela ne
choisir la méthode que vous allez utiliser pour . PasserellePayflow: https://www.paypal.com/
s'arrêtepas là, cela constitue égalementun
avantagepour le commerçant qui sait quasi- effectuer vos transactions depuis votre site, cmd : -p ayf low-gateway -ouer -
cgi-bin/ webscrT
ment en temps réel si une commande a été vous devez deià determiner le mode de règle- uieu-outside.
payéeou non, ce qui lui permet, par exemple,
de traiter les commandespayéesen priorité,
cela réduit égalementde façon considérable
le temps passéau traitement des paiements,
pas de bordereaude remisede chèquesà réa-
liser,pasde problème de solvabilité.Bien sur
il existedes casde fraude mais ils restent mi-
noritaires au vu du nombre de transactions.

06/2007
. Accepter Paypal : https://www.pctypal.com/ Copier/Colleq mais aussi une API de paie- deueloper.paypal.com/ Une fois votre compte
cgi b i n/ w ebscr7c m d - _a d dit i o n a I -p (ty m ent - ment très bien faite et documentée oour créé, vous accédez à un menu. Dans un pre-
oueruiew-outside. les développeurs expérimentés. mier temps commencez par créer deux comp-
tes de test, pour cela cliquez sur TestAccount
Pour mettre en ceuvre I'une de ces solutions, Voici qui constitue les principales questions puis sur Create Test Accounr, un formulaire
vous avez besoin d'un seul outil qui va vous que vous devez vous poser avant de choistr une semblable au formulaire de création de comp-
servir pour toutes les tester. Cet outil magique solution. te sur PAYPAL vous permet de créer un comp-
c'est le serveur sécurisé SANDBOX. Décou- te vendeur (seller) ou acheteur (buyer). Créez
vronssansattendre ce formidable outil. Le ser- CommentparamétrerSANDBOX
? un compte qui va représenter le marchand
veur SANDBOX ne constitue pas pour autant Voilà donc le moment d'aborder le vif du (seller) et un compte qui va représenter I'uti-

s la seuleressourceque PAYPAL a mis à la dispo-


sition des développeurs. Vous trouverez égale-
sujet. Commencez
développeur
par
à I'adresse suivante
créer un compte
: https//
lisateur final (buyer). Une fois les deux comp-
tes créés, vous allez paramétrer le compte
;t ment à cette adresse : https://utww.pctypal.com/
IntegrationCenter/ic-pdnHome.html un forum,
la variablequi déterminequevousutilisezun panierexterne
Listing 1. Renseignez
e des exemples d'intégration, des discussions
et pourrez rejoindre la communauté des déve- ,.phP
S loppeursPAYPAL. $ c o n t e n u . = t . r i n p u t t y p e = " h i d d e n " n a m e = " u p l o a d " v a l u e = r r 1 r 'r r , '

Leserveursécurisé
PAYPALSANDBOX lo variablequi déterminel'urlquiva réceptionner
Listing 2. Renseignez la N.l.P.
PAYPAL proposc pour les utilisateurs qui php
'cde id='
souhaitent utiliser leurs solutions de paie- $chaine encode = $ sESSroN,'client"cde id' ;
' ' h i d d e n \ ' n a m e = '' u r I _ n o t i f y v value= rmon_site.com?'
ment, une interface très bien faite : SAND- $contenu .= , input type=
B O X , d i s p o n i b l e à I ' a d r e s s es u i v a n t e : h t t p s : . urlencode $chaine encode, '\' '
;
//deueloper.paypal.com/.
Ce serveur sécurisé
estune copie conforme du serveur d'exploi-
tation à la difTèrence clue tout ce qui s'y passe unebouclepourrenseigner
Listing 3. Effectuez leschampsdu panier
estfictif : comptcs particuliers, comptes mar- ' :php

c h a n d s t, r a n s a c t i o n s . . . I ' i n t é g r a l i t é d e s i n f b r - while ilistr$cle, $qt; = e a c h t $ _ S E S S I O N' c a d d i e ' ;: l


m a t i o n st r a i t é e s s u r c e s s e r v e u r s n e s e r o n t $prix total = roundr$qt*$prix unitaire, 2);
er pasexploitées. Cette interfàcc vous permet- $ c o n t e n u. = ' j . n p u tt y p e = t h i d d e n \ ' n a m e = ' i t e m n a m e ' $i '\'value=
"
:à- tra de tester vos applications avant le passage . $cle '\' ' chrrl0r;
ue en production. L'avantage de SANDBOX $contenu .= ':input type=\'hidden\' name=\'amount_' $i '\' value=\"
J/ c ' e s tq u e v o u s a l l e z p o u v o i r t e s t e r I ' a p p l i c a - . $prix total '\' ' chr I10r ;
Ie- t i o n s o u st o u t e s s e s f o r m c s : c ô t é u t i l i s a t e u r $contenu .= ' input type=\'hiddenV name=\'quantity ' $i
'\' va1ue=\"
re final, côté vendeur et toutes les solutions . $qt ' \ ' ' c h r , 1 0I ;
nt que propose PAYPAL. Choisir une solution Qi r r .

depaiement.
Le choix d'une solution parmi celles propo-
séespar PAYPAL constitue la première étape
à réaliserlorsque vous avez décidé d'intégrer maintenantlesdonnéesrelotivesau client
Listing 4. Renseignez
ES PAYPAL à votre site marchand. Pour bien '. ,php

te choisir la solution qui vous convient, vous $contenu .= ' input type=','hiddenv name= 'addressl\' value= ".$ SESSI0N
1l- devez tenir compte de plusieurs éléments. tclientt'adresset,.t\t ti

Aussi il vous faudra apporter une réponse $contenu .= ' input type= rhiddenV name= taddress2\t value= r\r 'r,'
à cesquestions : $contenu .= ' input type="hiddenV name= 'zipV value=,," $ SESSION
'clientt 'cp' t\t .t
r , . . , ;
. $contenu .= ' input type=r,'hidden\' n a m e = :' c i t y \ ' '
n/ Quel genre d'article allez vous vendre ? value=" I SESSION
?r- PAYPAL propose des solutions pour les i'clientr ,'vil-le' . f'\',';
abonnementset les dons. $contenu .= ' input type= 'hidden\' name= 'country\' value= 'FR\' '
;
:// .
Quel est le poids de votre catalogue ? PAY- $contenu ,= '- input type= 'hidden\' name=,'first name\' value=,,".$ SESSION
PAL propose des boutons ACHAT IMME- :tclientt t p r e n o m t. t \ t . t ;

DIAT pour un seul article, un panier dé- ':input type= 'hiddenV name='tlast nameV value=\"
$contenu .= $ SESSION
n/ porté pour ceux qui ne souhaitent pas ou 'clientt tnom' . t\trt;

?r- ne peuvent pas avoir de panier sur leur si- $contenu .=' input type='hidden\' name='emaiL\' value="' $ SESSION
te. Et I'export du panier vers PAYPAL 'cfientt'emailt, .'\'';
p o u r l e sp l u s a g u é r r i s .
. Souhaitez-vousutiliser une base de don-
nées? Paypal propose La Notification Ins-
tantanéede Paiement pour tenir à jour sa
basede données sur le statut de paiement
descommandes.
.
Quel est votre niveau de compétence ?
PAYPAL propose des solutions du type

www.phpsolmag.org
Outils

vendeur fbusiness) pour prendre en compte le voir vous connecter avec les identifiants de con- Sécuriserles données
choix de votre solution de paiement. nexion enregistrés lors de la création du compte et les échangesserveur
test. Une fois cette étape effectué rendez vous di- Lorsque vous manipulez des informations
Pour paramétrer le compte du vendeur, sélec-
rectement dans I'onglet Outils Marchands. C'est sensibles, il est de votre intérêt de veiller
tionnez le compte business puis cliquez sur le
ici que vous allez paramétrer le compte vendeur à les protéger correctement. Pourtant est-ce
bouton Enter SandboxTest Slte pour ouvrir une
en fonction de la solution retenue. vraiment le cas ? Vous allez voir quelques as-
nouvelle fenêtre dans laquelle vous allez pou-
tuces faciles à mettre en ceuvre et qui pour-
ront vous éviter bien des tracas. Nous verlons
emailquevousavezutilisélorsde la créationde
correspondà l'odresse
Listing 6. Le comptebusiness également comment sécuriser les échanges
votre compte PAYPAL
avec PAYPAL.

. .'php
'".input type=\ 'hiddenV n a m e = \ "b u s i n e s s \
' value= ll ' Quelques principes
$contenu . =
t \'>' ; pour sécuriserlesdonnéessensibles
$moncompte .
PAYPAL en tant que pionnier dans le paie-
ment électronique s'attache depuis de nom-

Listing 7. Unexemplepour posterun formulairesansl'affrcher breuses années à sécurisé son infrastructure

.r iphp [Cryptage des données, Tèchniques de détec-


tion de la fraude et modèles de gestion des
echo "'r html :'\,n " ;
risques, Système de vérification d'adresse ...)
echo t'..head,";
i'head> \ n" ; En revanche il n'exerce aucun contrôle sur les
echo ".. titf e) Paiement Paypal< i' title>'
architectures qui utilisent leurs solutions' En
echo "..body onload='."document. form. submit O ; \">\n";
t r'' | ' effet en matière de paiement, les problèmes
echo ,..form metho4=r'post" name="form" action="' $paypal-url "':n";
de sécurité sont plus souvent dus à une mau-
foreach t$fields ae $name =; $value) i,
t" vafue="t . |il')|! vaise protection des données personnelles qu'à
echo r.:input type=,'hidden', name="t $name . $value
une attaque sur le serveur de paiement. C'est
,. prr
pourquoi il est important de respecter quel-
eChO " r- ,, f 916; ,.
ques principes qui vont assurer un mlnlmum
" . i b o d y ) . :r , h t m l : , , , n , , ;
de sécurité. Ces principes sont généraux, c'est
à dire qu'ils peuvent très bien servir pour un
et concaténezovecvotreieton d'identitéet cmd
de PAYPAL
la réponse
Listing B. Récupérez autre système de paiement et en général lors-
que vous manipulez des données sensibles.
. lphp
--- Ajout du CMD et du token Vous verrez ensuite quelques astuces concer-
//
'cmd=_notifY-sYnch' ; nant PAYPAL dans la notification instantanée
$req =
de paiement.
$tx_token = S_GETi,tx, l ;
'ofX-CZeA4EMvV-em_A_HHgZImgCSoJJMjSogeuzuQniD2588FEJG?lFwfaor;
$aurh token =
' & t x = ' '&at=' . Ne stockez jamais des informations sen-
$req .= $tx-token . $auth token;
sibles dans un fichier directement inter-
prétable depuis un navigateur. Par exem-
ainsiobtenueet récupérezla réponsede PAYPAL
lo chaînede caractères
Listing 9. Envoyez ple les fichiers texte. Utilisez plutôt des

'. lphp
variables dans un fichier PHP. Mais at-
tention de ne pas nommer vos-fichiers
$header . = "POST /cgi-bin,/webscr H T T P , / 1' 0 \ r \ ' n " ;
application/x-www-form-urlencoded' r' n"; avec une extension en .INC [commu-
$header .= "content-Type:
. 8 t r l e n ( $ r e q ) . rriar,n'ir\nrrl nément employée pour identifier des fi-
$header .= "conLent-Length: "
30); chiers inclus.) Préférez I'extension PHP
$fp = fsockopen ('www.sandbox.paypal.com', BO, $errno, $errstr,
(!Sfp) i
en nommant vos fichiers inclus de la
if
sorte : mon-fichier.inc.php. En effet les fi-
echo Serrno' :' $errstr;
chiers .inc sont apparentés à des fichiers
i else i
($fP,
texte et seront donc visibles depuis un
fPuts $header $req);
navigateur,
// the bodY data
read
. Ne stockez jamais des informations sen-
Sres = t t;
sibles à la racine de votre site web' Uti-
$headerdone = false;
(!feof($fp))
liser plutôt un dossier externe au dos-
rhile {
sier web. Si vous n'avez pas accès à la ra-
$line = fgets (gfp, 1024);
(strq($Iine, il\r\n") == 0) l cine, dans le cas d'un hébergement mu-
if
des header
tualisé par exemple, utiliser un .htaccess
// lecture
pour interdire I'accèsau dossier conte-
$headerdone = true;
($headerdone) nant les informations sensibles, ou à dé-
) elseif, {
des entêtes, lecture du contenu faut placez un fichier vide et nommez le
// après Iecture
index.html,
$res .= gline;
. Accordez les droits en lecture seule sur les
fichiers qui contiennent des données sen-
sibles depuis votre client FTP ou en ligne
de commande chmod o-\^,x /home/www/
mon fich ie r. PhP,

06/2007
. Si vous devez faire appel à un exécuta- réponse avec votre jeton d'identité. Si la chaî- Utiliserla Notification
ble pour générer un bouton de paiement, ne codée correspond, PAYPAL retourne alors lnstantanéede Paiement
]S veillez aux droits sur ce fichier de façon à votre serveur une confirmation qui contient Pour utiliser la notification instantanée de
lr à ne laisser que les droits au propriétaire o u T N V A L I DÀ
les mots clefs : vERTFTED . .. -.r- paiement vous devez paramétrer votre interfa-
le du fichier depuis votre client FTP préféré ment vous devez répondre en envoyant une ce PAYPAL pour qu'elle accepte la notification;
J- ou en ligne de commande : chmod u+rwx, réponse 200 oK pour fermer la transaction Vous allez voir maintenant quel paramétrage
l - go-rwx /home/executable. sh. et éviter I'envoi de la prochaine notification. est nécessaire pour inclure cette fonctionnalité
IS Tânt que PAYPAL ne reçoit pas cette répon- au coeur de votre projet.
]S Le respect de ces différents points simples se 200, renverra de nouveau une notification Pour cela rendez vous sur I'interface de
à mettre en oeuvre garantit une sécurité mi- pendant quatre jours. test de PAYPAL : SANDBOX dont vous
nimum. Vous pouvez bien entendu met-
tre en placedes sytèmes de contrôle supplé- Listing 1O.ExploitezlesdonnéesquePAYPAL
vousrenvoie
mentâtres.
,.php

Qu'est Geque la Notification $debug = 0;


Instantanée de Paiement ? $lines = e:qrlode (" t.n", $res t ;

Outre le fait qu'il est nécessaire de protéger $keYarraY = arrayrl,'


l e sd o n n é e s s t o c k é e s s u r u n s e r v e u r d i s t a n t ,
il est aussi nécessaire de veiller à ce que vo- if istrcryi$lines 0 , "VERIFIED") == 0)
tre identification soit sans équivoque auprès
d u s e r v e u rd e p a i e m e n t . L a p l u p a r t d e s s o l u - for i$i=1; $i.counti$Iinesr ;$i++:
t i o n sd e p a i e m e n t e n l i g n e p r o p o s e u n e i d e n -
t i f i c a t i o np a r u n e c l e f i s s u e d ' u n h a c h a g e e n - Iisti$key,$valr = explode'"=", $linesi$i, l;
t r e u n p a s s p h r a s ee t u n n u m é r o d e T P E p a r $keyarray urldecode ($keyi ; = urldecodei$val) ;
exempleet crypté selon le procédé SHA la
plupart du temps. PAYPAL propose une solu- $firstname = $keyarrayr'first_name','
t i o n s i m i l a i r ee n s o n c e r t i f i c a t d ' A P I , o u v o u s $lastname = $keyarrayr'Iast_name' ; ;
'custom'
d e v e zu t i l i s e r u n n o m d ' u t i l i s a t e u r e t u n m o t $email = $keyarray l ,'
'mc_grossr';
de passedifférent de votre compte PAYPAL, $amount = $keyarray
c o u p l éà u n e s i g n a t u r e c a l c u l é e à p a r t i r d e s Scde_id = $keyarray 'invoice' ;
informations précédentes. Ces trois infbrma- $req =
'UPDÀTE tbl commande SET statut=1 WHEREid commande = ' $cde id;
t i o n ss e r o n t n é c e s s a i r e sà t o u t a p p e l d e I ' A P I .
S a n su t i l i s e r I ' A P I d e p a i e m e n t , e t s i v o u s u t i - ift !$result = nysql_gueryi$db_connect, $req: r
l i s e zj u s t e l a s o l u t i o n d e p a n i e r d é p o r t é v o u s
pouvezégalement utiliser le jeton d'identité i f i S d e b u g ) v a r d u m pt $ r e q ) , '
qui fait parti de la Notil'icettion Instantanëe
de Paiementou N.l.P. La notification instan-
tanéede paiement permet de récupérer les elseif istrcry ($Iines 0t, "INVALID") == 0t
informations relatives à la commande, le sta-
tut du paiement et éventuellement le code for i$i=l; $i.counÈ($lines) ;9i++t
erreurgénérépar PAYPAL. Ces informations
sontprécieusespour les développeurs, car el- listi$key,$valt = explode ("="' $lines i$il ;;
lesvont lui permettre d'interagir avec la ré- $keyarrayiurldecode ($keyt ; = urldecode ($val) ;

p o n s eé m i s ep a r l e s e r v e u r d e p a i e m e n t . M a i s if ($debug) print r ($keyarray) ;


ces informations peuvent également être
convoitéespar des personnes pas très scru- $firstname = $keyarrayi'first_name' I;
puleuses.C'est pourquoi le jeton d'identité $lastname = $keyarrayi'Last_name' i;
doit être joint à votre réponse au serveur de rcustomr
$email = $keyarrayt i;
paiement.Ce moyen reste le moyen le plus $amount = $keyarrayl'mc_gross' I ;
sur en dehors de I'API. Nous verrons plus $cde_id = $keyarrayi'i.nvoice' I;
tard comment fonctionne cette NIP et com- // --- date et lreure
ment I'utiliser. $texte :' ['..{aÈe('Y-m-H d :i:s').']'in';
$texte . = ,r$Iines\,rr\irr',;
Comprendre // --- enregistrement du texte dans le fichier
lefonctionnementde la N.l.P // ouverture du fichier
Lorsque
vousconfigurezPAYPALpour utili- $fp = 6o*tt(' ./Iogs/ipn log.txt' r'a' ) ;
serlaNotificationlnstantanéedePaiement,voLrs //ecriùure des logs
devezspécifierune url vers laquellela réponse fwrite ($fp, $texte " \n\n" ) ,'
du serveursera envoyée.Lorsque le serveur // ferne le fichier
envoiecette réponse,vous devez alors lui ré- fclose ($fp1 ;
pondreen envoyantà votre tour la réponsedu if ($debug) var_dump (Stexte) ,'
serveurque vous venez de recevoir avec une
variable
supplémentaire: cmdavecla valeur :
notify_validate. Paypalanalysealors votre

www.phpsolmag.org
Outils

N o t i J i r : t t t i o ni n s t a n t a n é e d e p a i e m e n t . V o u s Il ne vous reste plus qu'à exploiter les don-


trouverez l'url dans le Tâbleau 5. Lancez
l e c o m p t e B z r s i n e s .qs u e v o u s a v e z p r é a l a - d e v e z -d ' u n e p a r t a c t i v e r l a N I P , e t d ' a u t r e nées avec un script de votrc création ou vous
part spécifier une url dc retour qui va réccp- pouvez également utiliser I'un dcs nombreux
blement créé, ;ruis identificz vous sur ce
comptc de fàçon à vous rendre sur I'onglet tionner la N.l.P et la tratter. scripts sous licencc GPL disponibles dans ce

M o n c o m p t ed e v o t r e i n t e r f à c c . P u i s c h o i s i s - À ce stade votre interfàce est correctement domaine sur Internet : classes, scripts prèts

sez I'crnglet : Préférences.Puis dans le rnenu : paramétrée pour utiliser la Notilicution Instan- à I'emplor ...
de
PréJérentesdes uentes,choisissez PréJérenccs tunéede puiement.
l n s t a l l e ru n e s o l u t i o n
d e p a i e m e n tc o m p l è t e
sondboxrestEnvironmenr Afin d'illustrer ce que vous venez de lire, je
W
vous proposc d'abordcr un caspratique. Ainsi
vous pourrez vous farniliariser avec lcs diffé-
rentes étapcs nécessairespour intégrer fàcile-
Welcome to the Sandbox Test Environment
m e n t u n c s o l u t i o n d e p a i e m e n t P A Y P A I . .P o u r
Need an account? Sign up now to access
payPal'5 r é a l i s e rc e s c r i p t , v o u s d e v e z d é j à p o s s é d e ru n e
Sandbox Test Environment.
boutiquc avec un systèmc de panier (session'
r À c c e ! s ' ; Ê l u a b l ed ê v É l c p É r. e s c u r c ê t
r C r ê â t ê a c c r i u n t st o t ê t t ' i c u ' F à ' i t Ë l I n t ê r f ô c Ê b a s c d e d o n n é e s . . . ) . V o u s d e v c z -é g a l e m c n t
r À c c ê s 5e m a r l S e n tt c ' i c u . t Ê s t a c c c u n t t
posséder un comptc sur la plateftlrmc de test
r l ' l a n Ê g ei F I c ' e d e n t t a l sf c ' t c u , t e s t â c c c u n t t
SANDBOX.
SionUo Now

Récupérer les données du panier


T r c u b l e L c o o i n oI n ? Vous n'allez pas vtlir comtrent récupérer les
donnécs dc vtttrc panier car chaclue panier
a s e s s p e ' c i f i c a t i o n sp r o p r c s . N o u s a l l c l n s p l u -
tôt abordcr la question des données néccssat-
res à PAYIâI. pour effèctuer la transaction'
E n f à i t l c s d o n r - r é c sn é c e s s a i r e ss o n t l i é e s
à l a s c l l u t i c ' r nd e p a i e m e n t c l u e v o u s a v c z c h c l i -
sie. Par exemple vous pouvez- vous ct.rtltentcr
dc récupércr uniquctnent lc prix de l'article
s i v t - r u sc h o i s i s s e zl-a s o l u t i o n d u P a i c m e n t I m -
midiat, ou uniquemcnt le total du panicr si
: Cetteinterface vouspermet de testerl'ensembledes solutions PAYPAL
Figure 1. L'interfaceSANDBOX
v t ' r u ss o u h a i t e z u t i l i s c ' r u n c f à c t u r a t i o n g l o b a -
HÉlp Frcitlz LÊg c-ut le. Vcrus pouvez égalerncnt choisir une stllu-
t i o n p l u s a v a n c é cc n u t i l l s a n t c h a c l u cl i g n e d e
Son db o x Iest Environrnent
v o t r e p a n i e r â v t : cl a s o l u t i o n d u p a n i e r e x p o r -
té, vous pouvez môme choisir de laisscr I'AY-
PAL gérer votrc panier. Ttrutes ces solutions
néccssitent une impiémentation diffèrcnte.
y o u h a v e r u c c e s s f u l l , ic r c â t e d A t e t t â C c o u n t Y o u C â n ' , ' r e n e m a i l f c r t h i s a c c C u n t o n t h Ê
Têst Email tâb C e p e n d a n t i l e x i s t c 1 - r c l u rc h a c u n e d ' c n t r e s
elles, des variables communes, ce sont les va-
r i a b l e s o b l i g a t o i r e s . R c t r c t u v e z I- ' e n s e m b l e d e
Test Accounts
c e sd o n n é e s d a n s l e T a b l e a u l .
y c u r t e s t a c c c u n t r a r e l i s t e db e l c w Y c u m u - c th a u e a t e s t b u s i n e t t à c c o u n t t c r e p r ê t e n t â m ê r c h â n t â n d â t Ê t t g c n c n a l â c c É u n t
Ê n t É r9 a n d b o t T â t t
t c r é p r e s e n ta b u i e r T c r i m u l ô t e â n ô c t i c n c n t h e l i u a r i t É ( p Ë ' / p a l - c c m l t é l Ê c t â t ê t t â c c c u n t a n d c l i c k
5rte. Leain lulcre
Récupérer les i nformations
nécessaires au Paiement
l , e s d o n n é e s n é c c s s a i r e sa u p a i e m e n t s o n t e n
fàit les données relativcsau client, c'est à dire
Login Emlil lt"o_._ icou*rv i*.y lrnt_IF:'- _
Pertcnal F(àÔce l'Jnuerrflcd N Â les infbrmations de facturation et de llvraison
O
Ë l ' . ' i e r vD e t a i l s le cas échéant. Ces rnformations regroupent
Euciners Fr'nce
'"crrficd Enabled également les éventuels frais de port et de trai-
O
f l ' ' r r e nC e t a i l s
tement, la taxe sur la valeur ajoutée (TVA).
Comme pour le panier, les données que vous
@tp"r"C-l allez transmettre à PAYPAL sont liées à la so-
lution retenue. Par exemple si vous souhaitez
accepter les paiement uniquement des utilisa-
teurs possèdant dé1à un compte PAYPAL, Ies
informations à transmettre peuvent se limiter,
pour le client à son adresseemail. Une fois sur
le serveur de PAYPAL ce dernier s'identifiera
avec ses propres informations. Par contre si
vous souhaitez accepter tous les porteurs de
carte bleue, vous pouvez transmettre les infor-

Figure 2. L'interfacede visuolisation: Cetteinterface vous permet de visualiserles comptes de test créés mations relatives à votre client : Nom, adresse,

06/2007
In-
code postal, ville ... Vous pouvez ainsi pré- . xclici< : Pour un bouton Acheter main- . o r : an f i I v .x ':.O\ u a n t i t é de I'article x,
US remplir les formulaires de creation de compte tenant, Dons cru Abonncments, ' shipping - x : Cout de livraison pour I'arti-
-rx ou de facturation. Dans tout les cas, et comme . cart : Pour un bouton de panier d'achat, cle x,
CC pour le panicr, vous aurez à renseigner des va- . ext-enter : Pré-rempli le formulaire . rax x : La taxe sur la valeur ajoutée pour
'ts I ' a r t i c l ex .
riables obligatoires dont vous trouverez le dé- d ' i n s c r i p t i o n â u c o m p t e P a y P a l .D a n s c e
tail dans les tableaux des données relatives aux cas la variable qui détermine I'utilisation
clients (Tableau 2), et les données relatives au des données externes : redirect cmd est Retrouvez I'ensemble de des valeurs relatives
paramétrage (Tâbleau 3). requls. au panier au Tableau I et un exemple d'utilisa-
tion au Listing 3.
te
Transformer ces données Indiquez maintenant à PAYPAL que vous uti- À ce stade il ne vous manque que les infor-
S1 en variables exploitables par PAYPAL lisez votre panier, en renseignant la variable mations relatives au client. Dans cette exemple
C_ Pour qu'elles soient exploitées par PAYPAL, tou- upload avec la valeur r. Reportez vous au Lis- nous avons choisi de pré-remplir le formulaire
f-
tes ces données brutes doivent d'une part avoir ting I pour un exemple d'utilisation de la va- d'inscription. Pour autoriser le pré-remplissage
1r un nom spécifique et d'autre part une valeur for- riable cvo. vous devez spécifier la variable cmd avec la va-
te matée. Nous allons voir maintenant quelles sont P u i s s p é c i f i e z I ' a d r e s s eq u i v a ê t r e u t i l i s é e leur ext enter comme suit :
1, ces spécifications pour chacune des données pour envoyer la notification instantanée de
It paiement à I'aide de la variable notl-f y-ur1. (\ a Ir r ny unul i r ' l r " l e nI '
obligatoires. Bien sur et comme précédemmcnt t tL Jrr r! n e = r r h name-"Cmd"

it vous n aurez pas spécialement à utiliser tou- A t t e n t i o n c a r l e s c a r a c t è r e s r é s e r v é sd e c e t t e vafue:" ext enter")

tes ces données et ce en fonction de la solution url doivent obligatoirement être encodés en
que vous aurez choisie. Commençons donc par hexadécimal, vous pouvez pour cela utiliser mais aussidéclarer la variable redirect cmd
déterminer la solution la plus élaborée, qui con- la fonction PHP urtencode (l . Voyez le Lis- comme cl-apres :
'5
siste à envoyer chaque ligne du panier avec le to- I"ing7. Cette variable est facultative si vous
't
tal par ligne, puis le sous-total hors frais de port avez paramètré la N.l.P dans votre interface <i nnrf tvne:"hi ddeqI nSpg="redirect cmd"

t-
et TTC, puis le total du panier. Nous utiliserons de PAYPAL. Cette valeur est disponible au value=" xclick">

l-
également le pré-remplissage des formulaires et Tableau 3. Pour les données relatives au pa-
la notification instantanée de paiement. Si vous nier d'achat, vous allez effectuer une boucle Attention redirect _ cmd ne peut avoir
avez déjà paramètré votre interface SANDBOX afin de renseigner chaque ligne de votre pa- qu'une seule et unique valeur : xcl-ick. Ces
passezà la suite sinon c'est le moment de le faire. nier. Les variables à renseigner sont les sui- deux variables sont nécessairespour utili-
Commencez par déterminer la variable cuo qui vantes : ser le pré-remplissage des formulaires. Une
doit informer PAYPAL du choix de la solution fois que vous avez spécifié ces deux varia-
que vous avez retenu. Cette variable peut pren- . amount x : P r i x d e I ' a r t i c l ex , bles, renseignez les variables du client :
dre trois valeurs : . rtem n a m e x : N o m d e I ' a r t i c l ex , adressel, adresse2, zip, city, country, firstname,

Tabfeau 1. Tableoudes variablesrelativesau panier

amount x x
Prixde I'article Oui

handling-x Fraisde manutentionarticlex Non


't27
item name x x
Nomde I'article Oui

quantity-x Quantitéde I'articlex Non Lesvaleursnulles,videsou négatives


ne
sont pasautorisées
onO x P r e m i e rn o m d e c h a m p f a c u l t a t i fp o u r I ' a r t i c l ex Non 64
onl x Second nom de champ facultatif pour I'articlex Non 64
oso_x Premierensemble de valeursfacultativespour I'articlex (nécessiteon0-x) Non 200
osl_x Second ensemble de valeurs facultatives pour I'article x (nécessiteonl-x) Non 200
shipping-x C o û t d e l i v r a i s o nd e l a p r e m i è r e u n i t é d e I ' a r t i c l ex Non

shipping2_x Coût de livraison de chaque unité supplémentaire de l'article x Non

tax-x Montant de la TV.A pour l'article x Non

Tabf eau 2.Tableau des voriablespour pré-remplissagedu formuloire PAYPAL

address1 à I'adresse
desdeuxchampsdestinés
Premier Alphanumérique 100

address-2 en complément
Secondchampd'adresse Alphanumérique 100
city Ville Alphanumérique 40

country Déterminele paysd'expéditionet de livraison Alphabétique 2

email emaildu client


Adresse Alphanumérique 127

first name Prénomdu client Alphabétique 32


last name Nomdu client Alphabétique 32

zip Codepostal Numerique 32


lc paypal
la languede la pagede connexion
Détermine Alphabétique 2

I
www.phpsolmag.org tÎonsl rn
l u s t - n t t n r c , a m t r i l . I - ' c - r ' r s c r n b lccl c s v a r i a h k ' s tions clt' flrcttrrltticln, \'()us l)()rr\/ez rt.r-rst'i- e( ) r r ( ' c t ( ' n t c n t r c n s c i g n c , e( ' s i n i r t r n t a t i r t r - r sr - t r '
cle pré-rcmplissagc sont clisponiblcs rrtr Tu- g n t ' r l a v l rr i l r b l t ' a r l dr e .s : r (,v.' L rl'1e (lLlI ll\r('C s ' a f l ' i c h c r o n t p r r s .J o r - r t c s l e s c l r n n c t ' s l l t t t t ' s -
bleau 2, retrouvcz- égrrlcrncnt atr Listing 4 l i r v a l c r - r rI v a P c r m c t t r t ' r l ' r Ir l ' i tl t t ' r l t ' ' i r rl t ' r s l ri r i ' s s t l n t r t ' p r i s c s a u T a b l t - a r r- { . \ / o t r s t r o r r -
Lln excmlllc d'utilisation clc'cc.svariablcs. m r l t i ( ) n s s a n s p o s s i b il i t t l . 1 , 'l t ' ' n r ( \ ( l i if ( ' r . . \ t - \ ' ( ' r c z a t r L i s t i r - r g5 r r n c r c m p l e c l ' r . r t i l i s a t i o r - t
Afin c l ' e v i t er l a m o c l i f i c a t i o n c l c s i n f i r r m a - t e n t i o r - rc a r s i t r n r ' h u l r - r 1l 't ,( l \ ('\\il i t t' lt't'st tlc ct'ttc vrrriablc'.
lrltt

Tableau 3.Tableaudesvariablesrelativesou paramètrage

address override L a d r e s s ei n d i q u éd a n s l e sv a r i a b l e sd e p r é - r e m p l i s s a gper e n d l e p a s s u r l e sv a - Non


r i a b l e ss t o c k é e s L. e c l i e n t v o i t I ' a d r e s s em a i s n e p e u t l a m o d i f i e r
currency_code M o n n a i e d u p a i e m e n t ,d é t e r m i n e l a d e v i s ep o u r l e s v a r i a b l e sa m o u n r ,
s h i p p i n g , s h i p p i n g 2 € t r a x . L a v a l e u rp a r d é f a u te s t l e d o l l a r dU S
( E U Rp o u r e u r o s )

custom V a r i a b l ee c h o n ' a p p a r a i s s a npt a s ,p e u t ê t r e u t i l i s ép o u r s t o c k e ru n e v a l e u r d o n t Non


o n t a u r a i tb e s o i nd a n s l ' l P N
handling F r a i sd e d o s s i e rp a r c o m m a n d e i n d é p e n d a n t d u n o m b r e d ' a r t i c l e . Non
Invotce V a r i a b l ee c h o p o u v a n t ê t r e u t i l i s ép o u r i d e n t i f i e ru n n u m é r o d e f a c t u r e . Non 127
redirect cmd conjointement utilisé à cmd="_ext-enter"pour pré-remplir un formulaire pAypAL N o n La seul valeur acceptéeest _xclick

Tableau 4. Tableaudes varioblesutiles

addressoverride L a d r e s s ei n d i q u é d a n s l e sv a r i a b l e sd e p r é - r e m p l i s s a g ep r e n d l e p a s s u r l e sv a r i a b l e ss t o c - Non
k é e s .L e c l i e n t v o i t I ' a d r e s s em a i s n e p e u t l a m o d i f i e r
currency_code M o n n a i e d u p a i e m e n t ,d é t e r m i n e l a d e v i s ep o u r l e s v a r i a b l e sa m o u n t , s h i p p i n g ,s h i p -
ping2 et tax. Lavaleurpar défaut est le dollard US
( E U Rp o u r e u r o s )

custom V a r i a b l ee c h o n ' a p p a r a i s s a npt a s ,p e u t ê t r e u t i l i s ép o u r s t o c k e ru n e v a l e u r d o n t o n t a u r a i t Non


b e s o i nd a n s l ' l P N
handling F r a i sd e d o s s i e rp a r c o m m a n d e i n d é p e n d a n td u n o m b r e d ' a r t i c l e . Non
Invotce V a r i a b l ee c h o p o u v a n t ê t r e u t i l i s ép o u r i d e n t i f i e ru n n u m é r o d e f a c t u r e . Non 127
redirectcmd C o n j o i n t e m e n tu t i l i s éà c m d - ' - e x t - e n t e r " p o u r p r é - r e m p l i ru n f o r m u l a i r eP A y p A L Non L a s e u l v a l e u ra c c e p -
tée est xclick
shipping F r a i sd e l i v r a i s o np a r a r t i c l e s i v o u s a v e za c t i v é l e s f r a i sd e l i v r a i s o n .S i v o u s u t i l i s e zs h i p - Non
p i n g e t q u e s h i p p i n g 2 n ' e s tp a s d é f i n i ,c e m o n t a n t f o r f a i t a i r ee s t f a c t u r é q u e l l e q u e s o i t l a
q u a n t i t é d ' a r t i c l e sa c h e t é s .
shipping2 F r a i sd e l i v r a i s o nd e c h a q u e a r t i c l es u p p l é m e n t a i r e S . i c e t t e v a r i a b l ee s t a b s e n t ee t s i p r é - Non
f é r e n c e sc o n c e r n a n tl a l i v r a i s o ne s t d é f i n i , l e c l i e n t e s t f a c t u r é d u m o n t a n t o u p o u r c e n t a -
ge défini dans votre profil.
tax V a r i a b l ep e r m e t t a n t d e r e m p l a c e rl a t a x e b a s é es u r l a t r a n s a c t i o n .D é f i n i s s e z - l sau r u n Non
m o n t a n t f o r f a i t a i r ep o u r l ' a p p l i q u e rà l a t r a n s a c t i o nq u e l q u e s o i t l e l i e u d e r é s i d e n c ed e
I ' a c h e t e u rC
. e t t e v a l e u r p r e n d l e p a s s u r t o u s l e s p a r a m è t r e sd e t a x e d é f i n i sd a n s v o t r e p r o -
fi1V . a l e u rp a r d é f a u t : l e s p a r a m è t r e sd e t a x e d é f i n i sd a n s v o t r e p r o f i l .
tax cart Taxeapplicableà I'ensembledu panier,prenant le pas sur toute valeur tax_x définie par ar- Non
ticle.

Tabfeau 5. Liensincontournables

https ://deveIo pe r.paypa l.com C e n t r a l ed e s d é v e l o p p e u r s


http://www.solutionspaypal.frlRessourcesTechniquesPayPal/ic_std-variable-reference.html Tableauxde référencedes variablesstandard.
http://www.paypal.com/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside#methodone M e t h o d e p o u r e x p o r t e r s o n p a n i e rv e r s P A Y P A L
http://www.solutionspaypal.frlRessourcesTechniquesPayPal/ic_ipn-pdt-variable-reference.htmlRéférencedes variablesInstantanePayment
Notifica-
tion (l.P.Nou N.l.P)et PaymentDataTransfert(p.D.T)
https://www.paypal.comlfr/cgi-bin/webscr?cmd= p/xcl/rec/ipn-code-outside E c h a n t i l l o nd e c o d e p o u r g é r e r l a n o t i f i c a t i o ni n s t a n -
t a n é e d e p a i e m e n t( l . P . N )
http://paypa ltech.com/content/index.ph p Outil de génération de script N.t.Pet P.D.T
https://www.paypal.com/cgi-bin/webscr?cmd=xpt/cps/general/SolutionGra
phics-outside C e n t r a l ed e s l o g o s P A Y P A Lp o u r r é c u p é r e rl e s p i c t o -
g r a m m e s q u i r a s s u r e r o nvt o s u t i l i s a t e u r s .
http://www.solutionspaypal.frlRessourcesTechniquesPayPal/ic_api-reference.html RéférencesAPI et web service.
h t t p : / / w w w . s o l u t i o n s p a y p a l . f r l R e s srocue s T e c h n i q u e s P a y P a l / i c _ d o c u m e n t a t i o n . h t m l Documentations
http://www.paypa lblog.info/ F o r u m e t r e s s o u r c e sp o u r d é v e l o p p e u r s .

i_
zo phpsolutions 06/2007
Outils

Listing 11.lJn exemple de classe PAYPAL

. $post_string = " ;
php
foreach , $ P O S Ta s $ f i e l - d = $ v a l u e ' '
--- La versTon origtna)e de cette clld's-ee a ére e:.i:: re
t'/
$this- ipn data "Sfield" = $val-ue;
--- par Nllcalt Carr-rc-k . Eiie e'"f cijspoillb-le sur -ie si te
/ /
--- con: $post string .= Sfietd.'=' .urlencodel$vaIue
i i kt.tp : / /www..njcahcarrjck'

class classe payPal :

/ ,i --- a r-oul de la ienranoe de lotlilc;llor:


var $last error;
$post-st r in9 . =" cmd=-not i f y-va1 rdate " ;
var $ iPn-leg,'
--- '"-el-s -le -"jle ,ea-t?ai
//' .iu-!'re tl]1e ccrlexicl
var $ipn_log_file;
Sfp = fsockoPen $urL-parsed host , "80",$err-num,
var $ipn response;

var data = array|; $err str,10,;


$ipn
--- r - . a s o - e c o r i , ' e x - l o , ' l. ' e n r e q i - " f . r e n e n t d e I ' e - r ; e u . l
var $fiel-ds = arraYiii
-- - enaj-1 cie votre compte sur Fa-r''pai rf' !$fp, :
/i
$this- last error = "Isockopen erreur no. $errnum:
var $emaif compte;

function classe payPali)


' $errstr";

--- initialisatio,r des vari,:bLes $this- J - o g _ i p n - r e s u L t sI f a l s e : ;


//

de Producticrl
return false;
i/ url du serveur
='https : / /www' paypa-l' ccnt'/
/ i Sthts->paypai-ur)
, // --- ccnnexio,r étab-ire
cqi-bin/webscr' ;

de test else
ii uri du serveur
'httPs --- enyoi oe-s oolnées à Pa1,pa-l
paypal-url = : / /www. sandbox ' paypal ' com/ .i,,,
$this-:
$txt = "POST $ur1 parsed path HTTP/I'1 r n"
fr/cqt-brn/ webscr';

= . "Host: $url- parsed host r n"


$thi.s- Iast error ";
j ipn-loq-file = 'ipn-loq. . "Content-type: application/x-www-form-urlencoded\
$this- txtr ;

= r\n "
$this- iPn-Iog true;
. "Content-length: ".strleni$post-stringr." r n"
ipn_resPonse = ";
Sthis-
pa r 1e . "Connection: close'r n r,n"
i / adresse du conpte bu-slnes'" à rentplacer
r',r'n r'n";
. $post string
compte
= 'adresse-email0 fputs lSfp, $txtr ;
$this- emait compte
while, ! feof $fp :
comPte-PaYPaI . com' ;
Sthis- 'l-pn-response .= fgets l$fp' i024: ;
//vafeurs par défaut (cf doc FaypaJ)
'cmd' '-cart'
$this- add field i , I ;
'1') fclose $fP, ,'
Sthis- add field i'uPload', ;
'currency-code' 'EUR'
$this- 'add field i , ' ;
'IS0-8859-1 ' r --- t-ransactron est acceptée
$this- 'add field i 'charset' , '' /i la

i f o r o a . i , ' r \ / FR T F T E n ' , S t h i s _ i nn recnônse


$this- add field I'business', $this-:'email-comptet '' t L E r ç Y f r Y L r r r J

$this- 'log_iPn_resufts Itrue i ;


$this-'add field t'rm' , 2) ;

override', I) ; return true,'


$this-:'add fieldl'address

// --- -la transactjon est inval-ide


function add field($fierd' $va1ue)
I = else :
$this-; fields "$field" $val-ue;
$this-'fast error = 'IPN Transaction non validée'

--- envoj cles infornations à PaypaJ Sth j.s- 1og-ipn-results ifalser ,'
i/
return false;
function submit_paypal_Post() r
'n";
echo ".html-

echo " head,";


function log_ipn_results ($successr l
echo " titler " $GLOBALSr'tr-paypal-02'

head; 'n"; if i !$this-'iPn 1og) return,'


" title
tIt.datei'Y-m-dH:i:s').'] - ';
echo jbody onLoad= "document.form.submit O ;\"- $texte =
"

echo
' form method="post" name="form" action="' if i$successl $texte .= "0K!:,n";
'.$this-)'fast-error
"''r ' "'n";
else $texte .= 'Erreur:
Sthis-'paypal-url.

foreach r$thls-,fields as $name =' $valuel , $texte .= "Variabl-es IPN de Paypal:'n";


, ,j-nput type="hidden" name="' gname foreach ($this-'ipn data as $key='$value) 1
echo

val-ue="t $val-ue,
r'rr r; $texte .= "Skey=$va]ue, ";

$texte . = " \ n I P N R e s p o n s e f r o m P a y p a l -S e r v e r : ' n


echo ":, form

r html; I n"; " . $this-:, ipn_response;


echo ".:, body
'a'
$fp = lon"tl i$this-:'ipn-log-file, );

validate ipn ( ) , fwrite r$fp, $texte . "\n'n"i ;


function
--- fclosei$fp); // close file
// déconPose 1'url PaYPa)
$url_parsed = parse-ur1 {$this-rpaypal-url; ;

// --- génère fa chaine à envoyer à Paypal

06/2007
221 olutÎons
I
I

I
I
i
I

I
I
I

un avantage indéniable par rapport aux solu-


Votreclient tions plus lourdes des établissements bancaires
par exemple. L'interface de gestion du compte
PAYPAL est ergonomique et propose une ges-
vous paye tion aisée des paramètres de configuration. Le
tout est très largement documenté et en fran-
çais de surcroît. Sans compter que vous n'aurez
aucun mal à trouver des ressources traitant du
sujet sur Internet. Tout cela en fait une solution
qui séduit de plus en plus professionnels et par-
Site web
ticuliers; Le principe est il faut le dire séduisant
w w car vous ne payez une commlsslon que sl vous

w tre vendez, contrairement aux solutions bancaires


ou vous devez la plupart du temps payer un
abonnement en plus des commissions. Aussi

5. Mise à jours 4. Paypalretourne utiliser PAYPAL est un peu plus cher car il vous
de votre base VERIFIEDou INVALID en coutera entre 1,9% et2,90/osur chaque tran-
de donnees saction en fonction du chiffre d'affaire généré.
Pour plus d'informations sur les commissions
référez vous à la page d'information de PAY-
PAL à ce sujet : hnpsy'/www.paypal.con/rg,
b in/w ebscr?cmd : -w p-stan d ard-pr i c in g-outsi d e.
Figure 3. Fonctionnement de lo NIP: Ceschéma montre comment fonctionne lo Notification lnstantanée
Nous pouvons également regretter le manque
depaiement
de clarté de I'interface d'accueil du serveur de
Choix de la méthode votre jeton d'identification et la variable cuo. paiement, surtout pour les utilisateurs qui sou-
de transport des données Voyez comme exemple à ce sujet le Listing 8. haitent payer par CB.
Le serveur sécuriséPAYPAL n'accepteque les Envoyer la chaîne de caractère ainsi obtenu
requêtesde type POST c'està dire desdonnées au serveur sécurisé PAYPAL. Un exemple de classe PHP
issuesd'un formulaire et qui n'apparaissentpas Attention car vous atrez à changer I'url con- pour gérer les échangesavecPAYPAL
dans I'url. Pour envoyerune requête de type tenue dans la fonction f sockopen O lors du Avec ces réferences et ces exemples, vous pos-
POSTvous pouvezutiliser un formulaire com- passâgeen production de votre application. Le sédez toutes les compétences nécessaires pour
me dans les listings précédents,ce qui marche listing 9 illustre ces propos. intégrer facilement une solution de paiement
trèsbien, mais lorsquevous affichez la source À ce stade PAYPAL va authentifier le jeton PAYPAL à votre site. Vous pouvez décider
d'un tel formulaire, vous pouvezconstaterque d'identité et va vous retourner une chaîne de de coder I'ensemble de l'application, ou vous
lesdonnéessont visibles;celaestgênantcar par- caractères qui va vous informer d'une part du pouvez utiliser I'une des nombreuses classes
mi cesdonnéesil y a votre adresseemail qui cor- statut du paiement et d'autres part sur le code Open Sources disponibles sur Internet. En
respondà votre compte chez PAYPAL.Réferez d'erreur éventuellement généré. exemple et pour conclure voici une classe PHP
vousau Listing 6 pour déclarercettevariable. qui permet de gérer les échanges avec le serveur
Une fois la variablegmon_compte interprétée, Exploiterlesdonnéespour sécurisé PAYPAL. Cette classe vous permettra
votre identifiant de compte seravisible. C'est mettre à jour un statut de paiement également de réceptionner et de traiter la noti-
pourquoiil estsaged'envoyerla requêtede type LorsquePAYPALreçoitvotreréponseet après fication instantanée de paiement. Vous trouve-
POSTdirectement au serveur sansafficher le avoir analysé votre jeton d'identité; il vous re- rez I'itégralité de cette classeau Listing I 1.
formulaire.Réferezvous au Listing 7 pour un tourne une chaîne de caractères qui contient les
exemple.Il suffit de poster le formulaire au mots clefs : TNVALTDen cas d'échec du paiement (onclusion
chargementde la page: et vERrFrEo si le paiement a été accepté. Il ne Facile, rapide et efficace sont des adjectifs qui
vous reste plus qu'à mettre à jour le statut de vo résume assez bien les solutions de paiement
(body onload="document. form. submit () ; "> tre commande pour indiquer que le paiement à proposées par PAYPAL. Facile parce que certai-
été accepté. Retrouvez ci-après un exemple de nes de leurs solutions peuvent êtres utilisées par
Ceci représente une solution, vous pouvez code qui exploite la réponse de PAYPAL pour des débutants avec quelques notions en langage
bien entendu en utiliser une autre, I'idée étant mettre à jour la base de données. PAYPAL vous HTML. Rapide parce que vous pouvez intégrer
de ne pas afficher les informations qui vont permet également de récupérer des informa- une solution complète et évoluée en quelques
être envoyées à PAYPAL. Vous trouverez au tions liées à la transaction qui vient d'être effec- minutes et efficace car avec son niveau d'exi-
Listing 7 un exemple pour poster un formu- tuée : les nom et prénom du client, le montant gence concernant la sécurité, PAYPAL obtient
laire sans I'afficher. de la transaction et surtout I'identifiant unique les taux les plus bas en matière de fraude, et as-
de la commande. Afin d'exploiter les données sure une disponibilité de plus de 99o/o.
de la réponsede PAYPAT
Récupération de retour, vous pouvez vous réferé au Listing
Une fois que vous avez envoyé les données 10 qui est un exemple qui utilise les chaînes de
à PAYPALet après le processusde paiement, Du v E R r F r E D .
c a r a c t è r e sT N V A L T o BRISSAUD
STEPHANE
PAYPALvous envoie la Notification lnstanta- Auteur de plusieurs ouvrages traitant de I'utilisa-
néede Paiement,Cette réponse est envoyéede Lesavantageset les tion du PHP,dont l'utilisation des solutions et com-
manièreasynchronesur la pageque vous avez inconvénientsde PAYPAh posants Open Sources,ce directeur technique de 36
spécifiélors de la configuration de I'l.P.N dans PAYPAL propose une solution globale à ex- ons est également impliqué dons de nombreux pro-
I'interfacede PAYPAL,vous devezalors lui re- ploiter selonvos besoins,la solution est rapide jets et anime des formations sur l'implantation de
tourner cette réponsesansoublier de rajouter et facile à mettre en ceuvre,ce qui constitue solutions libres.

www.phpsolmag.org

Вам также может понравиться