Le composant IP de 4D Business Kit Résumé 4D Notes techniques

Transcription

Le composant IP de 4D Business Kit Résumé 4D Notes techniques
Le composant IP de 4D Business Kit
Par
Sebastian FREY
Martine Mourier, Consultante 4D (developer network)
Note technique 4D-200204-11-FR
Version 1
Date 1 Avril 2002
Résumé
Voici un exemple d'utilisation du composant IP 4D Business Kit. La base exemple dialogue avec un serveur
4DBK, échange des données et éxecute en local des traitements pour le serveur.
4D Notes techniques
Copyright © 1985-2003 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.
L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs
utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière
engager 4D SA. La fourniture d u logiciel décrit dans ce document est régie par u n octroi de licence dont les termes sont précisés par
ailleurs dans la licence électronique figurant sur le support d u Logiciel et de la Documentation afférente. Le logiciel et sa documentation
ne peuvent être utilisés, copiés o u reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux
termes de cette licence.
Aucune partie de ce document ne peut être reproduite o u recopiée de quelque manière que ce soit, électronique o u mécanique, y compris
par photocopie, enregistrement, archivage o u tout autre procédé de stockage, de traitement et de récupération d'informations, pour
d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D
Le composant IP 4D Business Kit
4D Business Kit est une application d’e-commerce double-cliquable, "packagée" dont le code source n’est
pas accessible. On pourrait donc croire que 4D Business Kit est un produit fermé, rien n’est plus faux. Et
ceci grâce au composant IP 4D Business Kit.
Le Composant IP est une collection de méthodes 4D. Comme tout composant, il peut être installé avec 4D
Insider dans n’importe quelle application 4D 6.7 minimum.
Le Composant IP prend peu de place : il contient seulement une dizaine de méthodes. Il ne nécessite aucun
ajout de tables ou de formulaires dans votre base 4D. En revanche vous devez avoir installé 2 plug-ins : les
4D Internet Commands et un plug-in spécifique 4D Business Kit. Ce plug-in permet surtout une grande
efficacité dans le parsing de textes dans les BLObs.
Le Composant IP peut être très facilement retiré de votre base à tout moment grâce à 4D Insider.
Ce composant est très puissant. Ceci est lié à son haut degré d’intégration des marqueurs dans le langage 4D
Business Kit. Le Composant IP peut être utilisé pour EXECUTER presque tous les marqueurs 4D BK sur le
serveur BK. Cela signifie que tout ce qu’il est possible de faire avec 4D BK au Niveau des documents HTML
est possible avec le Composant IP. Si vous êtes familier avec le langage des marqueurs de 4D BK, vous
apprécierez le Composant IP et inversement.
Cette note technique est accompagnée d’une petite base de démonstration, appelée "The demo
application". Cette application "diaogue" avec une instance de 4D BK et échange des données avec elle. Pour
utiliser cette note technique, vous devez avoir téléchargé cette base exemple et avoir une version minimum 1.0
de 4D Business Kit.
Mise en place de 4D BK et de la base de démonstration
Tout d’abord, lancez la base de démonstration. Vous arrivez en mode Menus Créés. Allez dans le menu
"File" et choisissez "Préférences". Par défaut la base démo ira chercher un 4D BK lancé sur la même
machine (à l’adresse 127.0.0.1), sur le port 80, le port standard. Si vous souhaitez faire tourner 4D BK sur
une autre machine, changez les préférences. Notez que l’application attend un code de 4 caractères pour la
boutique 4D BK. Dans l’exemple, ce code est "DEMO". Vous pouvez bien sûr le changer, mais tout au long
de cette note, nous utiliserons ce code.
La première information à saisir est le code boutique. Tapez DEMO puis le libellé obligatoire. Onglet "Web"
saisissez votre serveur SMTP (par exemple mail.votrecompagnie.com).
Onglet "Web#2", augmentez la valeur de clôture automatique de session (par défaut : 10 minutes).
Quelques pages HTML sont à utiliser pour cet exemple : remplacez le dossier DEMO_Site créé avec votre
boutique par le dossier de la note technique. Si vous utilisez un 4D Business Kit français, mettez à jour les
pages françaises.
Utilisation du Composant IP
Le composant assure les trois fonctions principales suivantes :
Faire exécuter des instructions 4DBK par le serveur 4D Business Kit
Mettre à jour ou synchroniser les articles d’un serveur 4D Business Kit
Déléguer en local, l’exécution de certaines taches internes du serveur 4DBK
I Faire exécuter des instructions 4DBK par le serveur 4D Business Kit
Vous pouvez travailler soit avec une session existante de BK en utilisant son ID ou en créer une nouvelle. Il y
a deux commandes spécifiques pour cela :
$tSessionID :=4DBK_SessionNew("bktest.4d.com";80)
permet de créer un nouveau canal de communication
$tSessionID := 4DBK_SessionOpen($tSessionID ; "testbk.4d.com";80)
Utilise un canal préalablement créé.
Le "cœur" du Composant IP est la commande 4DBK_Execute. Cette méthode est utilisée pour faire exécuter
du code 4DBK au serveur 4D Business Kit et récupérer un résultat. Quelquefois, il n’y a pas de résultat ;
d’autres fois vous demanderez à 4D Bussiness Kit de renvoyer une "page" de données, et cette page peut
être de taille importante.
L’utilisation de la méthode 4DBK_Execute est très simple :
C _ B L O B ($xBlob)
APP_BKExecute diffère de 4DBK_Execute car elle possède un troisième paramètre optionnel. Ce
paramètre est un pointeur soit sur une variable texte ou blob ou sur un champ. Cette variable contiendra le
résultat de la commande 4DBK_Execute, s’il y en a un. APP_BKExecute retourne un Entier long dans $0
au lieu du blob retourné par la méthode classique.
Un autre exemple démontrant l’intérêt des sous-méthodes : chaque chaîne de commande exécutée avec
4DBK_Execute doit avoir comme premières commandes "4DBKStoreSet/xxxx" où xxxx est le code de 4
lettres de la boutique. APP_BKExecute vérifie que cette chaîne existe dans chaque commande et sinon la
rajoute.
Souvent lorsque vous voulez exécuter une chaîne de commande sur le serveur Business Kit vous ne souhaitez
pas récupérer un résultat mais voulez juste savoir si la commande s’est correctement déroulée ou non. Par
exemple si vous essayez d’ajouter un élément dans un caddie, vous aurez le code suivant :
$tCommand := "" $tCommand := $tCommand + "4DBKStoreSet/ "+<>APP_t_StoreCode+ ";"
$tCommand := $tCommand + "4DBKQuantitySet/ +"+String($iQuantity)+ ";"
$tCommand := $tCommand + "4DBKBasketSet/"+$ItemCode
Vous ne récupérez aucune donnée : vous voulez simplement savoir si l’article a bien été rajouté.
En utilisant 4DBK_Execute voici ce que vous devez faire :
C _ B L O B($xBlob)
$xBlob :=4DBK_Execute ($tSessionID;$tCommand)
C _ T E X T E($tResult)
$tResult:=BLOB vers texte ($xBlob ; Texte sans longueur)
S i ($tResult = "[Err@") `une erreur est survenue
S i n o n `tout est OK
Fin de si
Si vous souhaitez vraiment savoir si votre article a bien été rajouté, voici une autre façon avec la sousméthode APP_BKExecute :
$fOK :=(APP_BKExecute ($tSession ; $tCommand) =0)
$tFrom := <>APP_t_EmailAdress `définie dans les Préférences
$tTo := [Customer]Email
$tSubject := "4DBK Tech Note"
$tPageName := "Mail_example.htm"
$iResult := APP_BkMailSend ($tSessionID;$tFrom;$tTo;$tSubject;$tPageName)
APP_BkMailSend est elle-même une autre sous-méthode pour APP_BKExecute qui construit la chaîne de
commandes à envoyer par e-mail. Dans notre exemple, la page qui est envoyée est la page
"Mail_example.htm". Cette page devrait être dans votre boutique démo, car elle est inclue dans le dossier
DEMO_Site.
II Mettre à jour ou synchroniser les articles d’un serveur 4D Business Kit
Ajouter un Client dans 4D Business Kit
L’application Démo contient quatre tables : Customer, Product, Order, et Order_idem. Si vous avez créé une
boutique, la première des choses à faire est d’exporter vos clients vers 4D Business Kit.
Base Démo, choisissez "Customers" dans le menu "File". Dans le formulaire Liste de cette table choisissez
le bouton "New" pour ajouter un enregistrement. Saisissez les informations concernant votre client et cliquez
sur "Update BK". Un point d’arrêt a été placé par défaut, vous devriez donc voir apparaître la fenêtre du
mode Trace. Passez en pas en pas.
Vous verrez que la méthode nommée APP_BKCustomerUpdate est appelée. Passez dans cette méthode.
Deux autres méthodes sont appelées APP_BKSessionID et APP_BKExecute, décrites ci-dessous.
Comme APP_BKExecute , APP_BKSessionID est une sous-méthode, cette fois pour 4DBK_SessionNew
et 4DBK_SessionOpen mentionnées plus haut. Cette sous-méthode vous évite d’avoir à saisir à chaque fois
l’adresse IP et le numéro de port de Business Kit. Par défaut, cette méthode utilise l’adresse IP et le port
indiqués dans le dialogue des Préférences. APP_BKSessionID retournera aussi toujours l’ID de la session
courante active et créera une nouvelle session si celle-ci n’existe pas.
La première chose que fait APP_BKCustomerUpdate est de vérifier si le client existe dans Business Kit.
retournera une ou plusieurs informations pour ce marqueur 4DBKCustomerExists. L’une d’entre elles est
"CUS_UNK", Customer Unknown. Cette valeur est vérifiée avec les lignes de codes ci-dessous :
S i (APP_t_BkResult= "CUS_UNK")
$tCommand :=$tCommand+ "4DBKRecordNew/CUS ;"
Fin de si
Si le client est inconnu, les commandes qui mettront à jour les valeurs des différents champs du client seront
précédées par "4DBKRecordNew/CUS".
Comme vous pourrez le constater si vous lisez cette méthode, la mise à jour des valeurs dans les champs se
fait par l’appel de la commande 4DBKFieldSet avec le nom du champs à renseigner, par exemple :
$tCommand := "4DBKFieldSet/CusLastName="+[Customer]Name_Last
Ajouter un Produit dans 4D Business Kit
Pour ajouter un élément dans votre boutique, choisissez "Products" dans votre base DEMO. Une liste vide
se présente à vous. Cliquez sur "New" pour saisir un nouveau produit. Saisissez quelques informations,
rajoutez une image, et lorsque vous êtes prêts, cliquez sur le bouton "Update BK".
Par défaut, un point d’arrêt a été placé dans la procédure, donc vous arrivez dans le Mode Trace. Ce bouton
appelle une procédure APP_BKProductsUpdate. Cette méthode de haut niveau, appelle les méthodes
4DBK_ItemUpdateBuild et 4DBK_ItemUpdateSend. Ces deux méthodes mettent à jour les informations
d’un produit pour sa vente.
Ces méthodes envoient les informations sur le produit dans un Blob, en utilisant la méthode
4DBK_ItemUpdateBuild. Une fois que toutes les données sont stockées dans le Blob, on peut les envoyer
à 4D Business Kit avec la commande 4DBK_ItemUpdateSend. Il est intéressant de noter que la commande
4DBK_ItemUpdateSend ne nécessite pas d’indiquer l’ID de la session 4D BK ? seulement les quatre
caractères du code de la boutique, l’adresse IP de Business Kit, le numéro de port, et l’ID de l’élément que
vous souhaitez mettre à jour. En construisant le Blob comme une chaîne de commandes, vous pouvez aussi
envoyer des données binaires à 4D BK, principalement les images.
Ajouter un Produit dans le Caddy
Également dans le formulaire Entrée du Produit, vous avez un bouton appelé "Add to Cart". Cliquez dessus
Le formulaire Entrée Produit contient également un bouton "checkout". Il validera la commande et videra le
caddie de son contenu. La première chose à faire est de vérifier si le caddie contient des éléments :
$tCommand := "4DBKSelectionSet/B ;4DBKSelectionSize"
$iResult := APP_BKExecute ($tSessionID;$tCommand;->APP_t_BkResult)
Si un élément est présent, une seule méthode s’exécute via APP_BKExecute : 4DBKOrderValidate
Le cookie Business Kit
(cette partie concerne les solutions qui font adresser les pages dynamiques par le composant 4D BK)
Il peut y avoir de nombreuses raisons pour lesquelles vous souhaitez déployer 4D Business Kit avec une
application 4D; par exemple pour rajouter des fonctionnalités non-disponibles dans 4D BK. Pour cela vous
avez besoin que votre application 4D accède à la même session de données stockées dans 4D Business Kit.
4D Business Kit génère un cookie http pour chaque navigateur qui se connecte à une page générée par 4D
BK. Ce cookie est joint à chaque requête du navigateur vers 4D BK. Ceci permet à 4D BK de reconnaître
chaque internaute avec lequel il dialogue.
Pour que vos applications 4D et 4D BK travaillent en tandem, les deux doivent être adressés dans le même
domaine. Le mécanisme du cookie http permet de travailler de façon à ce qu’un cookie soit envoyé avec
chaque requête http à n’importe quel hôte (ordinateur) dans un domaine particulier. Cela signifie qu’une fois
que le cookie est mis en place, il sera envoyé à votre application 4D chaque fois que le navigateur fait une
requête. Votre application peut alors accéder à la session existante 4D BK.
Par défaut, un cookie est mis en place pour l’hôte à chaque requête http. Par exemple, si vous demandez un
document de "bktest.4D.com", le cookie sera mis en place pour ce serveur, et sera envoyé à l’hôte "bktest"
dans le domaine "4d.com". Il est possible de mettre en place un cookie pour un domaine entier, et si la
programmation en est faite, le cookie sera envoyé automatiquement avec chaque requête à n’importe quel
hôte du domaine.
Pour permettre ce comportement dans 4DBK, vous devez changer des paramètres dans la mise en place de la
boutique. Allez dans le menu "Fichier", et choisissez "Boutiques…". Double-cliquez sur la Boutique
DEMO. Cliquez sur l’onglet "Web (2)"
Sur ce dialogue, vous verrez un champ "Restriction de domaine pour les sessions". Ici vous devez indiquer le
domaine pour lequel vous mettez en place le cookie. Si votre domaine est "4d.com", vous devez saisir
".4d.com" (attention, il faut impérativement le point au début).
Ceci permet d’indiquer clairement à 4D BK que le cookie sera envoyé à n’importe quel hôte du domaine
"4d.com".
Il est important de noter que vos requêtes doivent être faites en utilisant le nom du domaine et non l’adresse
IP de l’ordinateur. Il est interdit de mettre en place un cookie pour un domaine en dehors des requêtes du
serveur web, qui peut être Business Kit, 4D, WebSTAR, Apache, etc. Si vous accédez à votre serveur 4D
BK grâce à l’adresse IP, quoique vous indiquiez dans la zone "Restriction de domaine…", cela n’aura aucun
effet. Même si votre ordinateur appartient au domaine spécifié, ce domaine doit être dans la requête http, une
adresse IP ne sera pas suffisante.
"hosts". Vous pouvez manuellement ajouter des hôtes et des domaines (n’importe quel hôte, n’importe quel
domaine) et une adresse IP correspondante à ce fichier. Ceci fonctionne parfaitement pour tester votre
application.
Exemple de fichier "hosts" sur un pc :
Pour garantir que le système du cookie fonctionne parfaitement, vous devez aller sur le dialogue "Web" des
paramétrages de la boutique et préciser que votre boutique répondra à l’adresse aux noms d’hôte et de
domaine indiqués. 4D Business Kit créera le lien pour vous si vous avez tout orthographié correctement.
Commencer une session
Pour vérifier comment votre application 4D et 4D Business Kit peuvent interagir, lancez votre navigateur et
connectez-vous à votre serveur 4D Business Kit
Si vous avez indiqué un hôte et un domaine personnel pour votre boutique, vous pouvez y accéder grâce à
l’URL. Par exemple si l’URL indiqué pour votre boutique est "bktest.4d.fr", vous tapez simplement cette
adresse.
La page d’accueil montrera tous les éléments de votre boutique DEMO. Si vous n’avez pas créé d’élément
dans votre boutique (soit directement, soit par l’intermédiaire de votre application 4D) vous ne pourrez rien
afficher. Dans ce cas, commencez par créer quelques enregistrements.
Si vous visualisez un article, cliquez sur celui-ci : il sera automatiquement ajouté au caddie qui est visualisé
sur la même page. Puis cliquez sur le lien "Sign In".Vous devrez saisir votre code d’utilisateur ([Customer]
ID) et votre mot de passe. Ces informations auront du être préalablement envoyées à la boutique. Le nom de
l’utilisateur apparaîtra alors sur l’Home Page.
Si vous recevez le bon message avec le cookie, votre page contient un bouton "Submit". Cliquez dessus.
Vous obtenez un message vous indiquant que votre commande est validée. Dans le cas contraire, vous
recevrez un message d’erreur, probablement du à une erreur d’identification.
Lorsque vous cliquez sur le bouton "Submit", la méthode APP_BKOrderComplete est appelée par la base
démo. Vous souhaiterez peut-être mettre un point d’arrêt dans cette méthode et l’appeler à nouveau. Notez
que chaque fois que vous l’appelez, le caddie est vidé car 4D BK vide les caddies chaque fois que la
commande est validée.
APP_BKOrderComplete commence par chercher le cookie 4D BK. Si elle le trouve, elle vérifie que le
cookie est authentifié ? ce qui est le cas si un utilisateur a saisi correctement son numéro et son mot de passe.
Ceci est déterminé par la méthode APP_BKCustomerLoggedIn. Voici la méthode qui conclut une simple
requête à 4DBK :
$tCommand := "4DBKField/CustomerLogged"
Si la session est authentifiée, la base demo cherchera le numéro d’utilisateur :
$tCommand := "4DBKField/CusCode"
Une fois l’utilisateur identifié, un appel est fait à APP_BKGetPage. Cette méthode demandera à 4D BK
d’envoyer une page spécifique et retournera les informations dans la base démo. La page en question est
appelée "Order_complete.htm" et contient de nombreux marqueurs 4D BK qui compléteront la commande et
renverront les informations à la base DEMO. Voici le contenu du fichier "Order_complete.htm":
<html>
<!--#4DBKStoreSet/DEMO-->
<!--#4DBKSelectionSet/B-->
<item_count><!--#4DBKSelectionSize--></item_count>
<item_list>
<!--#4DBKRecordSet/1-->
<!--#4DBKLoop/VL01,1,4DBKSelectionSize-->
<!--#4DBKIf(4DBKRecordExists)-->
<item>
<shipping><!--#4DBKField/PrShippingEXV--></shipping>
<order_date><!--#4DBKToday,mm-dd-yyyy--></order_date>
<subtotal><!--#4DBKField/PrItemsEXV--></subtotal>
<total><!--#4DBKField/PrOrderINV--></total>
<!--#4DBKOrderValidate-->
<order_code><!--#4DBKOrderCode--></order_code>
</html>
Ce fichier contient donc certains tags (marqueurs) 4D BK. Ces tags créeront une page contenant tous les
éléments du caddy de l’utilisateur. Tous les éléments sont inclus avec leurs propres marqueurs, sur le
principe d’XML. Ces marqueurs sont analysés par la méthode APP_BKOrderComplete, utilisant la
méthode GEN_StringTagValue. Il y a de nombreuses façons de délimiter champs et valeurs dans une page
de réponse. Cette méthode est seulement une possibilité parmi d’autres.
La commande et les données de cette méthode sont analysées d’après la réponse que la base démo reçoit. Les
enregistrements sont créés et sauvegardés en local dans la base, vous permettant ainsi d’y appliquer le
traitement souhaité, comme créer des bons de livraisons, faire des statistiques, etc.
Chargement d’une carte de crédit
Pour que 4D BK charge une carte de crédit, vous devez disposer d’un compte avec un organisme de paiement
comme Verisign, Authorize.net ou PayPal. Vous devez saisir les informations sur cet organisme au niveau de
la boutique dans la page "Services":
Dans notre exemple, le [Login] et le [Password] ont été saisis pour Authorize.net. Par défaut, la base DEMO
est mise en place pour utiliser Authorise.net comme organisme de paiement. Pour utiliser un autre organisme
(comme Verisign), allez dans le dialogue "Préférences" (menu "Fichier"), vous y trouverez un champ
appelé "BK Payment Config" dont la valeur est "AuthorizeNet_ADC.txt". Changez cette valeur pour la
configuration de paiement par carte que vous souhaitez utiliser. Vous trouverez ces différents fichiers texte
dans le répertoire suivant :
%BKInstall%/Services/Payments/CreditCard/ (ou 4DBK:Services:Payments:CreditCard sur Mac)
où %BKInstall% est le dossier 4D Business Kit principal.
Notez que vous pouvez créer votre propre fichier de services de paiement très facilement.
Vous ne pourrez continuer les manipulations dans cette section de la présente note technique que si vous
possédez un compte avec un organisme de paiement. Si vous n’en avez pas, il est toutefois possible
d’obtenir un compte de test avec l’organisme.
Une fois que vos services de paiement sont configurés, vous pouvez continuer. Retournez dans l’application
DEMO. Dans le menu "File", choisissez "Orders". Votre commande s’affiche dans la liste. Double-cliquez
sur cet enregistrement pour obtenir le formulaire de saisie.
Vous noterez une zone sur le formulaire appelé "Credit Card Interface". Ici vous pouvez saisir un numéro de
carte et un mois et année d’expiration. Vous devez saisir un numéro et une date d’expiration valide
(4444333322221111 est un bon numéro pour le test).
Cliquez alors sur le bouton "Charge Credit Card". À nouveau la fenêtre du débuggeur apparaît. Un point
d’arrêt a été placé juste avant l’appel à la méthode APP_BkOrderCharge. Passez pas à pas sur la méthode
pour voir comment elle fonctionne. Pour sa majeure partie, elle sert à vérifier la validité des données et si tout
semble correct, elle fait un appel à 4DBKCreditCartProcess à travers APP_BKExecute.
III Déléguer en local l’exécution de certaines taches internes du serveur 4DBK
Le plus souvent quand vous utilisez le composant 4D IP, la communication entre votre base 4D et 4D
Business Kit est initiée par votre propre base. Mais 4D Business Kit permet de déléguer le calcul du prix
d’un article ou des frais des modes d’expédition en utilisant le composant 4D IP. Voici un exemple :
Pour déléguer ces calculs, allez dans l’onglet "appels ext." de la boutique.
Si vous souhaitez déléguer un calcul, 4D Business Kit appellera votre base chaque fois qu’il en aura besoin. Il
exécutera la méthode par un appel standard 4DACTION. Le 4DACTION appellera soit la méthode
4DBKPrice soit 4DBKShipping. Ces méthodes sont installées avec le composant IP. Contrairement à
d’autres méthodes, celles-ci sont publiques. C’est-à-dire que vous pourrez les modifier (et ce sera nécessaire)
pour mettre en place vos propres calculs. Cela signifie aussi que votre application doit avoir son serveur Web
activé.
Conclusion
4D Business Kit est un puissant logiciel de e-commerce. Déployez votre propre application 4D en parallèle,
vous permet de construire rapidement de puissantes applications web et client/serveur. Le composant IP 4D
BK vous procure un outil qui vous apporte une grande souplesse dans le traitement des informations de
votre boutique 4D BK.