La lecture en ligne est gratuite
Lire Télécharger
14
Outils
Accepter les paiements en ligne avec PAYPAL
Sachant que les ventes sur internet représentent pour l'année 2006 plus de douze milliards d'euros pour plus de cent millions de transactions. Il est aisé de penser que pour les commerçants cela représente une véritable aubaine. Pour les développeurs cela se traduit par une explosion des demandes d'intégration d'un moyen de paiement par carte bancaire.
Cet article explique : • L'environnement de travail SANDBOX. • Comment sécuriser son système de paiement et les échanges avec le serveur sécurisé. • Comment installer PAYPAL dans une interface existante. • Comment exploiter la réponse du serveur (NIP) pour mettre à jour le statut des commandes.
Niveau de difficulté
ous allez voir comment utiliser PAY-soluVtions de paiement PAYPAL au travers du PAL pour proposer un paiement en ligne. Pour cela nous aborderons les serveur sécurisé PAYPAL SANDBOX, finale-ment et après avoir abordé la question de la sécurité, nous verrons en détail comment in-tégrer une solution de paiement électronique à une interface existante.
Pourquoi utiliser une solution de paiement en ligne Il y a plusieurs très bonnes raisons d'utiliser un moyen de paiement électronique, la plus importante de ces raisons reste néanmoins de favoriser l'achat impulsif. Mais cela ne s'arrête pas là, cela constitue également un avantage pour le commerçant qui sait quasi-ment en temps réel si une commande a été payée ou non, ce qui lui permet, par exemple, de traiter les commandes payées en priorité, cela réduit également de façon considérable le temps passé au traitement des paiements, pas de bordereau de remise de chèques à réa-liser, pas de problème de solvabilité. Bien sûr il existe des cas de fraude mais ils restent mi-noritaires au vu du nombre de transactions.
Ce qu'il faut savoir : • Connaître les bases du PHP. • Posséder un site avec panier. • Posséder un compte sur la plate-forme SAND-BOX pour le développement. • Posséder un compte PAYPAL pour la mise en production.
Tout ces avantages font du paiement en ligne un moyen simple, rapide et efficace de factu-rer un bien ou un service en ligne. Il existe sur le marché d'innombrables solutions de paiement en ligne, la plupart éditées par les banques elles-mêmes. Cependant il existe quelques acteurs historiques dont le cœur de métier est la transaction électronique. C'est le cas de PAYPAL qui a commencé par pro-poser des transferts d'argent sans saisie des informations de carte bancaire par le biais de sites de e-commerce partenaires, puis à évoluer vers un paiement CB plus classique. Ceci fait PAYPAL était prêt à rentrer par la grande porte sur le marché des solutions de paiement en ligne avec des solutions homogè-nes et d'une simplicité exemplaire en terme d'utilisation.
Le Choix d'une solution PAYPAL PAYPAL propose plusieurs solutions pour ef-fectuer du transfert d'argent, ainsi, avant de choisir la méthode que vous allez utiliser pour effectuer vos transactions depuis votre site, vous devez déjà déterminer le mode de règle-
ment que vous allez mettre en place. Pour cela PAYPAL vous propose :
• Paiement par email, • Paiement sur site marchand, • Paiement sur site marchand Pro (États-Unis uniquement), • Passerelle Payflow, • Acceptez PayPal.
Vous trouverez à ce sujet et pour vous aider à choisir la solution qui vous convient un ta-bleau comparatif des différentes solutions que propose PAYPAL à l'adresse suivante :https:// www.paypal.com/cgi-bin/webscr?cmd=_profile-comparison. Une fois que vous avez choisie votre solution, vous pouvez penser aux outils qui vont vous permettre de réaliser votre intégration.
Quels outils sont mis à la disposition des développeurs PAYPAL a pris le soin de bien documenter ses solutions, aussi peu importe la solution de paie-ment choisie, vous trouverez facilement la docu-mentation qui s'y rapporte. Ceci dit, vous pouvez tout aussi bien vous reporter aux liens ci-après.
• Paiement par email :https://www.paypal.com/ cgi-bin/webscr?cmd=_email-payments-over-view-outside, • Paiement sur site marchand :https:// www.paypal.com /cgi-bin /webscr?cmd= _ wp-standard-overview-outside, • Passerelle Payflow :https://www.paypal.com/ cgi-bin/webscr?cmd=_payflow-gateway-over-view-outside,
Attention Pour utiliser la notification instantanée de paiement vous devez aussi activer le Renvoi automa-tique vers le site du commerçant. Pour cela il vous faut vous rendre dansPréférences de réception de paiementssur le site et spécifier une url de retour. Cette url doit obligatoirement être une url absolue. Pour finir activez également leTransfert des données de paiementet récupérez le jeton d'identité qui va sécuriser les transactions.
06/2007
• Accepter Paypal :https://www.paypal.com/ cgi-bin/webscr?cmd=_ additional-payment-overview-outside.
Pour mettre en œuvre l'une de ces solutions, vous avez besoin d'un seul outil qui va vous servir pour toutes les tester. Cet outil magique c'est le serveur sécurisé SANDBOX. Décou-vrons sans attendre ce formidable outil. Le ser-veur SANDBOX ne constitue pas pour autant la seule ressource que PAYPAL a mis à la dispo-sition des développeurs. Vous trouverez égale-ment à cette adresse :https://www.paypal.com/ IntegrationCenter/ic_pdnHome.html un forum, des exemples d'intégration, des discussions et pourrez rejoindre la communauté des déve-loppeurs PAYPAL.
Le serveur sécurisé PAYPAL SANDBOX PAYPAL propose pour les utilisateurs qui souhaitent utiliser leurs solutions de paie-ment, une interface très bien faite : SAND-BOX, disponible à l'adresse suivante :https: //developer.paypal.com/. Ce serveur sécurisé est une copie conforme du serveur d'exploi-tation à la différence que tout ce qui s’y passeest fictif : comptes particuliers, comptes mar-chands, transactions ... l'intégralité des infor-mations traitées sur ces serveurs ne seront pas exploitées. Cette interface vous permet-tra de tester vos applications avant le passage en production. L'avantage de SANDBOX c'est que vous allez pouvoir tester l'applica-tion sous toutes ses formes : côté utilisateur final, côté vendeur et toutes les solutions que propose PAYPAL. Choisir une solution de paiement. Le choix d'une solution parmi celles propo-sées par PAYPAL constitue la première étape à réaliser lorsque vous avez décidé d'intégrer PAYPAL à votre site marchand. Pour bien choisir la solution qui vous convient, vous devez tenir compte de plusieurs éléments. Aussi il vous faudra apporter une réponse à ces questions :
• Quel genre d'article allez vous vendre ? PAYPAL propose des solutions pour les abonnements et les dons. • Quel est le poids de votre catalogue ? PAY-PAL propose des boutonsACHAT IMME-DIATun seul article, un panier dé- pour porté pour ceux qui ne souhaitent pas ou ne peuvent pas avoir de panier sur leur si-te. Et l'export du panier vers PAYPAL pour les plus aguérris. • Souhaitez-vous utiliser une base de don-nées ? Paypal propose La Notification Ins-tantanée de Paiement pour tenir à jour sa base de données sur le statut de paiement des commandes. • Quel est votre niveau de compétence ? PAYPAL propose des solutions du type
www.phpsolmag.org
Copier/Coller, mais aussi une API de paie-ment très bien faite et documentée pour les développeurs expérimentés.
Voici qui constitue les principales questions que vous devez vous poser avant de choisir une solution.
Comment paramétrer SANDBOX ? Voilà donc le moment d'aborder le vif du sujet. Commencez par créer un compte développeur à l'adresse suivante :https://
PAYPAL
developer.paypal.com/ Une fois votre compte créé, vous accédez à un menu. Dans un pre-mier temps commencez par créer deux comp-tes de test, pour cela cliquez surTest Accountpuis surCreate Test Account, un formulaire semblable au formulaire de création de comp-te sur PAYPAL vous permet de créer un comp-te vendeur (seller) ou acheteur (buyer). Créez un compte qui va représenter le marchand (seller) et un compte qui va représenter l'uti-lisateur final (buyer). Une fois les deux comp-tes créés, vous allez paramétrer le compte
Listing 1.Renseignez la variable qui détermine que vous utilisez un panier externe
<?php $contenu.= '<input type="hidden"name="upload"value="1">'; ?>
Listing 2.Renseignez la variable qui détermine l'url qui va réceptionner la N.I.P. <?php $chaine_encode='cde_id='.$_SESSION['client']['cde_id']; $contenu.='<inputtype=\'hidden\'name=\'url_notify\'value=\'mon_site.com?'  .urlencode($chaine_encode).'\'>'; ?>
Listing 3.Effectuez une boucle pour renseigner les champs du panier <?php while(list($cle,$qt)=each($_SESSION['caddie'])){ $prix_total=round($qt*$prix_unitaire,2); $contenu.='<input type=\'hidden\'name=\'item_name_'.$i.'\'value=\''  .$cle .'\'>'.chr(10); $contenu.='<input type=\'hidden\'name=\'amount_'.$i.'\'value=\''  .$prix_total.'\'>'.chr(10); $contenu.='<input type=\'hidden\'name=\'quantity_'.$i.'\'value=\''  .$qt.'\'>' .chr(10); $i++; } ?>
Listing 4.Renseignez maintenant les données relatives au client <?php $contenu.='<input type=\'hidden\'name=\'address1\'value=\''.$_SESSION ['client']['adresse'].'\'>'; $contenu.='<input type=\'hidden\'name=\'address2\'value=\'\'>';  $contenu.='<input type=\'hidden\'name=\'zip\'value=\''.$_SESSION ['client']['cp'].'\'>';  $contenu.='<input type=\'hidden\'name=\'city\'value=\''.$_SESSION ['client']['ville'].f'\'>'; $contenu.='<input type=\'hidden\'name=\'country\'value=\'FR\'>'; $contenu.='<input type=\'hidden\'name=\'first_name\'value=\''.$_SESSION ['client']['prenom'].'\'>'; $contenu.='<input type=\'hidden\'name=\'last_name\'value=\''.$_SESSION ['client']['nom'].'\'>'; $contenu.='<input type=\'hidden\'name=\'email\'value=\''.$_SESSION ['client']['email'].'\'>'; ?>
Listing 5.Renseignez la variable address_override pour éviter une modification ultérieure des données
<?php $contenu.='<input type=\'hidden\'name=\'address_override\'value=\'1\'>'; ?>
15
16
Outils
vendeur (business) pour prendre en compte le choix de votre solution de paiement. Pour paramétrer le compte du vendeur, sélec-tionnez le compte business puis cliquez sur le boutonEnter Sandbox Test Sitepour ouvrir une nouvelle fenêtre dans laquelle vous allez pou-
voir vous connecter avec les identifiants de con-nexion enregistrés lors de la création du compte test. Une fois cette étape effectué rendez vous di-rectement dans l'ongletOutilsMarchands. C'est ici que vous allez paramétrer le compte vendeur en fonction de la solution retenue.
Listing 6.Le compte business correspond à l'adresse email que vous avez utilisé lors de la création de votre compte PAYPAL
<?php $contenu.='<input type=\'hidden\'name=\'business\'value=\''  .$mon_compte.'\'>'; ?>
Listing 7.Un exemple pour poster un formulaire sans l'afficher <?php echo"<html>\n"; echo"<head>"; echo"<title>Paiement Paypal</title></head>\n"; echo"<body onLoad=\"document.form.submit();\">\n"; echo'<form method="post"name="form"action="'.$paypal_url.'">'."\n"; foreach($fieldsas$name=>$value) { echo'<input type="hidden"name="'.$name.'"value="'.$value.'">'; } echo"</form>\n"; echo"</body></html>\n"; ?>
Listing 8.Récupérez la réponse de PAYPAL et concaténez avec votre jeton d'identité et cmd <?php // --- Ajout du CMD et du token $req='cmd=_notify-synch'; $tx_token=$_GET['tx']; $auth_token='OfX-CZQA4EMvV-em_A_HH9ZlmgCSoJJMj8o9euzuQniD2588FEJG71FwfaO'; $req.='&tx='.$tx_token.'&at='.$auth_token; ?>
Listing 9.Envoyez la chaîne de caractères ainsi obtenue et récupérez la réponse de PAYPAL <?php $header.="POST /cgi-bin/webscr HTTP/1.0\r\n"; $header.="Content-Type: application/x-www-form-urlencoded\r\n"; $header.="Content-Length: ".strlen($req)."\r\n\r\n"; $fp=fsockopen('www.sandbox.paypal.com',80,$errno,$errstr,30); if(!$fp){ echo$errno' : '.$errstr; }else{ fputs($fp,$header.$req); // read the body data $res=''; $headerdone=false; while(!feof($fp)){ $line=fgets($fp,1024); if(strcmp($line,"\r\n")==0){ // lecture des header $headerdone= true; }elseif($headerdone){ // après lecture des entêtes, lecture du contenu $res.=$line; } } } ?>
Sécuriser les données et les échanges serveur Lorsque vous manipulez des informations sensibles, il est de votre intérêt de veiller à les protéger correctement. Pourtant est-ce vraiment le cas ? Vous allez voir quelques as-tuces faciles à mettre en œuvre et qui pour-ront vous éviter bien des tracas. Nous verrons également comment sécuriser les échanges avec PAYPAL.
Quelques principes pour sécuriser les données sensibles PAYPAL en tant que pionnier dans le paie-ment électronique s'attache depuis de nom-breuses années à sécurisé son infrastructure (Cryptage des données, Techniques de détec-tion de la fraude et modèles de gestion des risques, Système de vérification d'adresse ...) En revanche il n'exerce aucun contrôle sur les architectures qui utilisent leurs solutions. En effet en matière de paiement, les problèmes de sécurité sont plus souvent dus à une mau-vaise protection des données personnelles qu'à une attaque sur le serveur de paiement. C'est pourquoi il est important de respecter quel-ques principes qui vont assurer un minimum de sécurité. Ces principes sont généraux, c'est à dire qu'ils peuvent très bien servir pour un autre système de paiement et en général lors-que vous manipulez des données sensibles. Vous verrez ensuite quelques astuces concer-nant PAYPAL dans la notification instantanée de paiement.
• Ne stockez jamais des informations sen-sibles dans un fichier directement inter-prétable depuis un navigateur. Par exem-ple les fichiers texte. Utilisez plutôt des variables dans un fichier PHP. Mais at-tention de ne pas nommer vos fichiers avec une extension en .INC (commu-nément employée pour identifier des fi-chiers inclus.) Préférez l'extension PHP en nommant vos fichiers inclus de la sor-te :mon_ fichier.inc.php. En effet les fi-chiers .inc sont apparentés à des fichiers texte et seront donc visibles depuis un navigateur, • Ne stockez jamais des informations sen-sibles à la racine de votre site web. Uti-liser plutôt un dossier externe au dos-sier web. Si vous n'avez pas accès à la ra-cine, dans le cas d'un hébergement mu-tualisé par exemple, utiliser un .htaccesspour interdire l'accès au dossier conte-nant les informations sensibles, ou à dé-faut placez un fichier vide et nommez le index.html, • Accordez les droits en lecture seule sur les fichiers qui contiennent des données sen-sibles depuis votre client FTP ou en ligne de commandechmod o-wx /home/www/ mon _ fichier.php,
06/2007
Listing 10.Exploitez les données que PAYPAL vous renvoie
if(!$result=mysql_query($db_connect,$req)){ if($debug)var_dump($req); } }elseif(strcmp($lines[0],"INVALID")==0){ for($i=1;$i<count($lines);$i++){ list($key,$val)=explode("=",$lines[$i]); $keyarray[urldecode($key)]=urldecode($val); if($debug)print_r($keyarray); } $firstname=$keyarray['first_name'];
17
<?php $debug=0; $lines=explode("\n",$res); $keyarray=array();
Qu'est ce que la Notification Instantanée de Paiement ? Outre le fait qu'il est nécessaire de protéger les données stockées sur un serveur distant, il est aussi nécessaire de veiller à ce que vo-tre identification soit sans équivoque auprès du serveur de paiement. La plupart des solu-tions de paiement en ligne propose une iden-tification par une clef issue d'un hachage en-tre un passphrase et un numéro de TPE par exemple et crypté selon le procédé SHA la plupart du temps. PAYPAL propose une solu-tion similaire en son certificat d'API, ou vous devez utiliser un nom d'utilisateur et un mot de passe différent de votre compte PAYPAL, couplé à une signature calculée à partir des informations précédentes. Ces trois informa-tions seront nécessaires à tout appel de l'API. Sans utiliser l'API de paiement, et si vous uti-lisez juste la solution de panier déporté vous pouvez également utiliser le jeton d'identité qui fait parti de laNotification Instantanée de Paiement ou N.I.P. La notification instan-tanée de paiement permet de récupérer les informations relatives à la commande, le sta-tut du paiement et éventuellement le code erreur généré par PAYPAL. Ces informations sont précieuses pour les développeurs, car el-les vont lui permettre d'interagir avec la ré-ponse émise par le serveur de paiement. Mais ces informations peuvent également être convoitées par des personnes pas très scru-puleuses. C'est pourquoi le jeton d'identité doit être joint à votre réponse au serveur de paiement. Ce moyen reste le moyen le plus sûr en dehors de l'API. Nous verrons plus tard comment fonctionne cette NIP et com-ment l'utiliser.
if(strcmp($lines[0],"VERIFIED")==0){ for($i=1;$i<count($lines);$i++){ list($key,$val)=explode("=",$lines[$i]); $keyarray[urldecode($key)]=urldecode($val); } $firstname=$keyarray['first_name']; $lastname=$keyarray['last_name']; $email=$keyarray['custom']; $amount=$keyarray['mc_gross']; $cde_id=$keyarray['invoice']; $req='UPDATEtbl_commandeSETstatut=1WHEREid_commande='.$cde_id;
• Si vous devez faire appel à un exécuta-ble pour générer un bouton de paiement, veillez aux droits sur ce fichier de façon à ne laisser que les droits au propriétaire du fichier depuis votre client FTP préféré ou en ligne de commande :chmod u+rwx, go-rwx /home/executable.sh.
Comprendre le fonctionnement de la N.I.P Lorsque vous configurez PAYPAL pour utili-ser laNotification Instantanée de Paiement, vous devez spécifier une url vers laquelle la réponse du serveur sera envoyée. Lorsque le serveur envoie cette réponse, vous devez alors lui ré-pondre en envoyant à votre tour la réponse du serveur que vous venez de recevoir avec une variable supplémentaire :cmdla valeur : avec notify_validate. Paypal analyse alors votre
réponse avec votre jeton d'identité. Si la chaî-ne codée correspond, PAYPAL retourne alors à votre serveur une confirmation qui contient les mots clefs :VERIFIEDouINVALID. À ce mo-ment vous devez répondre en envoyant une réponse200 OK pour fermer la transaction et éviter l'envoi de la prochaine notification. Tant que PAYPAL ne reçoit pas cette répon-se200, renverra de nouveau une notification pendant quatre jours.
Utiliser la Notification Instantanée de Paiement Pour utiliser la notification instantanée de paiement vous devez paramétrer votre interfa-ce PAYPAL pour qu'elle accepte la notification; Vous allez voir maintenant quel paramétrage est nécessaire pour inclure cette fonctionnalité au coeur de votre projet. Pour cela rendez vous sur l'interface de test de PAYPAL : SANDBOX dont vous
www.phpsolmag.org
$lastname=$keyarray['last_name']; $email=$keyarray['custom']; $amount=$keyarray['mc_gross']; $cde_id=$keyarray['invoice']; // --- date et heure $texte='['.date('Y-m-d H:i:s').']\n'; $texte.="$lines\n\n"; // --- enregistrement du texte dans le fichier // ouverture du fichier $fp=fopen('./logs/ipn_log.txt','a');//ecriture des logs fwrite($fp,$texte."\n\n");// ferme le fichier fclose($fp);if($debug)var_dump($texte); } ?>
Le respect de ces différents points simples à mettre en oeuvre garantit une sécurité mi-nimum. Vous pouvez bien entendu met-tre en place des sytèmes de contrôle supplé-mentaires.
PAYPAL
18
Outils
trouverez l'url dans le Tableau 5. Lancez le compteBusiness que vous avez préala-blement créé, puis identifiez vous sur ce compte de façon à vous rendre sur l'onglet Mon compte de votre interface. Puis choisis-sez l'onglet :Préférences. Puis dans le menu : Préférences des ventes, choisissezPréférences de
Notificationde paiement. Vous instantanée devez d'une part activer la NIP, et d'autre part spécifier une url de retour qui va récep-tionner la N.I.P et la traiter. À ce stade votre interface est correctement paramétrée pour utiliser laNotification Instan-tanée de paiement.
Figure 1.L'interface SANDBOX : Cette interface vous permet de tester l'ensemble des solutions PAYPAL
Figure 2.L'interface de visualisation : Cette interface vous permet de visualiser les comptes de test créés
Il ne vous reste plus qu'à exploiter les don-nées avec un script de votre création ou vous pouvez également utiliser l'un des nombreux scripts sous licence GPL disponibles dans ce domaine sur Internet : classes, scripts prèts à l'emploi ...
Installer une solution de paiement complète Afin d'illustrer ce que vous venez de lire, je vous propose d'aborder un cas pratique. Ainsi vous pourrez vous familiariser avec les diffé-rentes étapes nécessaires pour intégrer facile-ment une solution de paiement PAYPAL. Pour réaliser ce script, vous devez déjà posséder une boutique avec un système de panier (session, base de données ...). Vous devez également posséder un compte sur la plateforme de test SANDBOX.
Récupérer les données du panier Vous n'allez pas voir comment récupérer les données de votre panier car chaque panier a ses spécifications propres. Nous allons plu-tôt aborder la question des données nécessai-res à PAYPAL pour effectuer la transaction. En fait les données nécessaires sont liées à la solution de paiement que vous avez choi-sie. Par exemple vous pouvez vous contenter de récupérer uniquement le prix de l'article si vous choisissez la solution du Paiement Im-médiat, ou uniquement le total du panier si vous souhaitez utiliser une facturation globa-le. Vous pouvez également choisir une solu-tion plus avancée en utilisant chaque ligne de votre panier avec la solution du panier expor-té, vous pouvez même choisir de laisser PAY-PAL gérer votre panier. Toutes ces solutions nécessitent une implémentation différente. Cependant il existe pour chacune d'entres elles, des variables communes, ce sont les va-riables obligatoires. Retrouvez l'ensemble de ces données dans le Tableau 1.
Récupérer les informations nécessaires au paiement Les données nécessaires au paiement sont en fait les données relatives au client, c'est à dire les informations de facturation et de livraison le cas échéant. Ces informations regroupent également les éventuels frais de port et de trai-tement, la taxe sur la valeur ajoutée (TVA). Comme pour le panier, les données que vous 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éjà un compte PAYPAL, les informations à transmettre peuvent se limiter, pour le client à son adresse email. 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-mations relatives à votre client : Nom, adresse,
06/2007
Tableau 1.Tableau des variables relatives au panier Nom Description amount_x Prix de l'article x handling_x Frais de manutention article x item_name_x Nom de l'article x quantity_x Quantité de l'article x
PAYPAL
19
127 Les valeurs nulles, vides ou négatives ne sont pas autorisées 64 64 200 200
Obligatoire Oui Non Oui Non
Non Non Non Non Non Non Non
mais aussi déclarer la variableredirect _ cmdcomme ci-après :
amount _ x: Prix de l'article x, item _ name _ x: Nom de l'article x,
Nombre de caractères 100 100 40 2 127 32 32 32 2
Conditions Alphanumérique Alphanumérique Alphanumérique Alphabétique Alphanumérique Alphabétique Alphabétique Numerique Alphabétique
Premier nom de champ facultatif pour l'article x Second nom de champ facultatif pour l'article x Premier ensemble de valeurs facultatives pour l'article x (nécessite on0_x) Second ensemble de valeurs facultatives pour l'article x (nécessite on1_x) Coût de livraison de la première unité de l'article x Coût de livraison de chaque unité supplémentaire de l'article x Montant de la T.V.A pour l'article x
Indiquez maintenant à PAYPAL que vous uti-lisez votre panier, en renseignant la variable uploadavec la valeur1. Reportez vous au Lis-ting 1 pour un exemple d'utilisation de la va-riableCMD. Puis spécifiez l'adresse qui va être utilisée pour envoyer la notification instantanée de paiement à l'aide de la variablenotify_url. Attention car les caractères réservés de cette url doivent obligatoirement être encodés en hexadécimal, vous pouvez pour cela utiliser la fonction PHPurlencode(). Voyez le Lis-ting 2. Cette variable est facultative si vous avez paramètré la N.I.P dans votre interface de PAYPAL. Cette valeur est disponible au Tableau 3. Pour les données relatives au pa-nier d'achat, vous allez effectuer une boucle afin de renseigner chaque ligne de votre pa-nier. Les variables à renseigner sont les sui-vantes :
code postal, ville ... Vous pouvez ainsi pré-remplir les formulaires de creation de compte ou de facturation. Dans tout les cas, et comme pour le panier, vous aurez à renseigner des va-riables obligatoires dont vous trouverez le dé-tail dans les tableaux des données relatives aux clients (Tableau 2), et les données relatives au paramétrage (Tableau 3).
Attentionredirect _ cmd ne peut avoir qu'une seule et unique valeur :xclick. Ces deux variables sont nécessaires pour utili-ser le pré-remplissage des formulaires. Une fois que vous avez spécifié ces deux varia-bles, renseignez les variables du client : adresse1,adresse2,zip,city,country,firstname,
Tableau 2.Tableau des variables pour pré-remplissage du formulaire PAYPAL Nom Description address_1 Premier des deux champs destinés à l'adresse address_2 Second champ d'adresse en complément city Ville country Détermine le pays d'expédition et de livraison email Adresse email du client first_name Prénom du client last_name Nom du client zip Code postal lc Détermine la langue de la page de connexion paypal
Retrouvez l'ensemble de des valeurs relatives au panier au Tableau 1 et un exemple d'utilisa-tion au Listing 3. À ce stade il ne vous manque que les infor-mations relatives au client. Dans cette exemple nous avons choisi de pré-remplir le formulaire d'inscription. Pour autoriser le pré-remplissage vous devez spécifier la variablecmd avec la va-leur_ext_entercomme suit :
on0_x on1_x os0_x os1_x shipping_x shipping2_x tax_x
www.phpsolmag.org
Nombre de caractères
Quantity _ x: Quantité de l'article x, shipping _ x: Coût de livraison pour l'arti-cle x, tax _ x: La taxe sur la valeur ajoutée pour l'article x.
Transformer ces données en variables exploitables par PAYPAL Pour qu'elles soient exploitées par PAYPAL, tou-tes ces données brutes doivent d'une part avoir un nom spécifique et d'autre part une valeur for-matée. Nous allons voir maintenant quelles sont ces spécifications pour chacune des données obligatoires. Bien sûr et comme précédemment vous n'aurez pas spécialement à utiliser tou-tes ces données et ce en fonction de la solution que vous aurez choisie. Commençons donc par déterminer la solution la plus élaborée, qui con-siste à envoyer chaque ligne du panier avec le to-tal par ligne, puis le sous-total hors frais de port et TTC, puis le total du panier. Nous utiliserons également le pré-remplissage des formulaires et la notification instantanée de paiement. Si vous avez déjà paramètré votre interface SANDBOX passez à la suite sinon c'est le moment de le faire. Commencez par déterminer la variableCMDqui doit informer PAYPAL du choix de la solution que vous avez retenu. Cette variable peut pren-dre trois valeurs :
<input type="hidden" name="redirect_cmd"  value="_xclick">
<input type="hidden" name="cmd"  value="_ext_enter">
_ xclick : Pour un bouton Acheter main-tenant, Dons ou Abonnements, _ cart: Pour un bouton de panier d'achat, _ ext-enterPré-rempli le formulaire : d'inscription au compte PayPal. Dans ce cas la variable qui détermine l'utilisation des données externes : redirect_cmd est requis.