Snelle E-commerce-ontwikkeling met Dreamweaver UltraDev en PayPal


Door Joel Martinez en Ray West (www.basic-ultradev.com)

Dit artikel gaat in op de integratie van UltraDev met PayPal met behulp van een set gratis serverfuncties om drie veel voorkomende online verkoopscenario's op te lossen. De serverfuncties, genaamd de PayPal Extension Suite, zijn beschikbaar van Mike Ahern van Shore Computers (http://www.shorecomp.com/ultradev/paypal/default.asp). De suite is gratis, maar we willen u wel aanmoedigen een donatie over te maken via PayPal als u gebruikmaakt van zijn werk.

Het PayPal-winkelwagentje is ook zonder deze serverfuncties eenvoudig te gebruiken. Er is alleen wat kennis van HTML voor nodig. Als u tekst kunt knippen en plakken, dan is het winkelwagentje gemakkelijk gebruiken zonder deze extensie. De suite is echter zeer goed te integreren met UltraDev en biedt u een overzichtelijke interface. In de volgende drie voorbeelden wordt uitgelegd hoe u het PayPal-systeem kunt gebruiken voor drie veel voorkomende soorten transacties:
  • De verkoop van één object in een veilingtransactie
  • Het eenvoudige winkelwagentje voor meerdere objecten per PayPal-transactie
  • Het winkelwagentje met database waarmee u een voorraadsysteem kunt opzetten dat u kunt beheren en van waaruit u de content dynamisch naar uw pagina's kunt zenden

Een e-commerce-website maken met PayPal


Een e-commerce-website met PayPal is waarschijnlijk de eenvoudigst mogelijke oplossing. Dankzij de tijd die u bespaart aan ontwikkeling kan het een aantrekkelijke optie zijn voor projecten met een krap budget. Er zijn echter ook nadelen. Omdat alle bewerkingen plaatsvinden in een pop-upvenster is er weinig ruimte voor aanpassing, afgezien van het plaatsen van uw logo op het winkelwagentje. Aan de andere kant is een volledig aangepaste gebruikersinterface ook niet nodig voor de meeste websites, waardoor ze flink kunnen profiteren van dit systeem. Bovendien kan de bekende interface van PayPal zelfs het vertrouwen van de klanten winnen.

Deze uitbreidingssuite bevat acht serverfuncties die iets van elkaar verschillen, maar ook bepaalde elementen gemeen hebben.
  • E-mailadres voor PayPal - Voor elke serverfunctie moet u het e-mailadres invoeren dat u heeft gebruikt voor het maken van uw PayPal-rekening. Als u zaken wilt doen met uw rekening, is een zakelijke rekening absoluut aan te bevelen.
  • Statische/dynamische velden - Bijna elke serverfunctie gebruikt velden waarmee u items uit het venster voor data binding van UltraDev kunt kiezen of statische waarden kunt gebruiken. Houd er rekening mee dat een statische waarde tussen dubbele aanhalingstekens moet staan. (bijv. "5,00")
  • Geld - Alle velden met geldbedragen moeten worden genoteerd als "xx.xx". Als u een waarde uit het palet voor data binding toewijst aan deze velden, zorg er dan voor dat ze deze notatie hebben. U kunt de ingebouwde UltraDev-functies gebruiken om een notatieschema op de waarde toe te passen.

Figuur 1: Palet voor data binding waarbij notatie van geldbedragen wordt toegepast
  • URL-velden - Sommige serverfuncties vragen u om de URL voor een logo of een locatie waarnaar de gebruiker na afloop van de transactie wordt doorgestuurd. Al deze URL's moeten absoluut zijn, bijvoorbeeld http://www.uwdomein.com.
De serverfuncties

De suite bevat de hieronder beschreven serverfuncties voor interactie met PayPal.
  1. Eén aankoop
    Indien toegepast op een afbeelding of een stuk tekst, maakt deze functie een link die rechtstreeks naar het afhandelingsscherm van PayPal gaat. Op die manier kunt u links maken zoals "Koop mij nu! ". Dit is handig voor websites die slechts één product of service verkopen.
  2. Vanuit uw winkelwagentje
    Als u een ander winkelwagentjesoplossing gebruikt, zoals UltraCart II, kunt u toch de services van PayPal gebruiken om betalingen te ontvangen voor uw producten. De enige informatie die u moet opgeven (afgezien van uw PayPal-gebruikersnaam en enkele URL's) is een bestelnummer en het totale verkoopbedrag. Deze informatie wordt op eenvoudige wijze verzameld en doorgegeven aan de eenvoudige gebruikersinterface.
  3. Object toevoegen aan winkelwagentje
    Dit is mogelijk de nuttigste serverfunctie. Object toevoegen aan winkelwagentje kan heel eenvoudig worden geïntegreerd met een databaseweergave van objecten, zodat klanten kunnen rondkijken en objecten kunnen toevoegen aan het winkelwagentje. Wanneer er op de gegenereerde link wordt geklikt, verschijnt er een pop-upvenster met de inhoud van het wagentje in een aantrekkelijke weergave. Gebruikers kunnen vanuit dit scherm naar het afhandelingsscherm gaan, waar ze bij hun PayPal-rekening kunnen inloggen of alleen betaalinformatie kunnen opgeven.
  4. Winkelwagentje bekijken
    Deze functie wordt gebruikt in combinatie met de functie Object toevoegen aan winkelwagentje. Als de gebruiker klikt op een link die door deze functie wordt gegenereerd, verschijnt er een pop-upvenster met de inhoud van het winkelwagentje. De enige informatie die nodig is, is uw e-mail-id voor PayPal.
  5. Donaties
    De link die door deze serverfunctie wordt gemaakt, brengt de gebruiker naar een scherm waar geld vanuit een PayPal-rekening kan worden verzonden. Mensen die shareware verkopen en organisaties zonder winstoogmerk kunnen van deze aanpak profiteren vanwege de mogelijkheid om geld op uw website te accepteren zonder dat de betaling is verbonden aan een bepaalde aankoop.
  6. Abonnementen
    Websites die een abonnementstoegang bieden tot hun content, kunnen profiteren van deze unieke service van PayPal. Gebruikers die zich aanmelden voor een abonnementsservice, ontvangen een maandelijks terugkerende factuur van PayPal. Het geld gaat rechtstreeks naar uw PayPal-rekening en u krijgt een e-mailbericht dat u vertelt dat het abonnement van de gebruiker wordt voortgezet. Via de link die door deze serverfunctie wordt gegenereerd, wordt een pop-upvenster opgeroepen waarin de gebruiker wordt gevraagd om factuurinformatie.

Praktische toepassingen voor de PayPal-suite


Voor e-commerce-toepassingen zijn er twee scenario's die vaak van toepassing zijn. De enkele aankoop lijkt op het veilingmodel: een verkoper biedt slechts één object aan, en wanneer dat is verkocht, is het weg. Bij winkelwagentjes is er sprake van de aankoop van meerdere objecten en mogelijk meerdere exemplaren daarvan. Hieronder volgen drie voorbeelden: de aanbieding van één object via PayPal, het PayPal-winkelwagentje en een niet-PayPal-winkelwagentje dat met PayPal communiceert.

We hebben een demonstratiewebsite gemaakt die u kunt vinden op http://www.codecube.net/teksales/. De voorbeelden die in dit artikel worden beschreven zijn daar te vinden.


Figuur 2: teksales-demonstratiewebsite


"Ik wil er één" - verkoop van één object


Als u één object wilt verkopen, wordt de serverfunctie Eén aankoop gebruikt. eBay-gebruikers maken sinds lang gebruik van deze functie om betaling voor hun veilingen te ontvangen. Als op uw website meer dan één object wordt verkocht, kunt u beter andere functies gebruiken. Voor de eenmalige verkoop van een gebruikt object of een collector's item is dit echter een snelle en eenvoudig te gebruiken oplossing.

Stel: u heeft een van de coolste motoren: de Ducati Monster S4Fogarty. Op een dag bent u aan het rondrijden wanneer een auto u plotseling afsnijdt. Uw leven flitst voor uw ogen voorbij. Vanaf dat moment raakt u alleen bij de gedachte aan motorrijden al in paniek. U besluit de motor te verkopen op uw website. U maakt snel een ontwerp met UltraDev en plaatst dat op uw website.


Figuur 3: Ducati-verkoopwebsite zonder serverfunctie

U verwacht dat de mensen in de rij zullen staan om u geld te sturen voor de motor. Maar, helaas, de kopers blijven weg. Daar kunnen verschillende redenen voor zijn. Mogelijk is de prijs hoger dan veel mensen kunnen betalen.

De serverfunctie Eén aankoop gebruiken

Het gebruik van de serverfunctie Eén aankoop is vrij eenvoudig. Nadat u de pagina heeft ontworpen, hoeft u alleen een object op de pagina aan te wijzen als aankoopknop. U kiest bijvoorbeeld een Koop mij-afbeelding of een stukje tekst dat dezelfde boodschap weerspiegelt. Geef het object aan en pas de serverfunctie toe op de manier die u zou gebruiken voor elke andere serverfunctie. De functie is te vinden op het serverfunctie-palet onder PayPal > PayPal Single Purchase.



Figuur 4: pp_SinglePurchase

Vul alle velden in de interface in en u bent klaar. Wanneer een gebruiker op de link klikt die door de functie wordt gegenereerd, verschijnt er een venster met betaalinformatie en kan de gebruiker naar het afhandelingsproces. PayPal geeft u een bevestiging van de voltooide verkoop, en u kunt uw motor inpakken.


"Ik wil er twee" - Het eenvoudige winkelwagentje


Deels als gevolg van de populariteit van online veilingen hebben veel transacties op het internet betrekking op één object. Maar voor wie van zijn website een continu bedrijf wil maken, ontstaan er meer kwesties. Zij verkopen vaak uiteenlopende producten en hopen dat hun klanten meerdere herhaalde aankopen zullen doen uit hun voorraad.

We komen weer terug op u als motorverkoper. Tijdens de verkoop van uw Ducati heeft u gemerkt dat er een markt is voor motorspullen, dus u besluit een online bedrijf op te zetten dat zulke spullen verkoopt. Met de nieuwe betaaloplossing van PayPal kent uw bedrijf een droomstart. U maakt enorme winsten met de verkoop van motoren via uw website. U besluit uit te breiden en ook andere producten zoals helmen en brillen te verkopen. Het concept is eenvoudig genoeg, maar u kunt de huidige oplossing niet blijven gebruiken. Tijdens uw wekelijkse boodschappen beseft u opeens hoe handig het is dat u een pak melk, een doos eieren en een fles onkruidverdelger in hetzelfde winkelwagentje kunt doen. U moet ook een winkelwagentje hebben.

Eenvoudig gezegd komt het erop neer dat een bezoeker dankzij het winkelwagentje verschillende objecten tijdens dezelfde transactie kan kopen. Terwijl klanten door de website bladeren en uitkiezen welke objecten ze willen kopen, onthoudt het winkelwagentje hun keuze door middel van sessievariabelen, cookies en een database. Wanneer de klant wil afrekenen, hoeft hij de betaalinformatie maar één keer in te voeren. De betaling wordt dan voor alle objecten toegepast.

Het PayPal-winkelwagentje gebruiken

Het gebruik van de serverfunctie Winkelwagentje lijkt erg op de functie Eén aankoop. De functie wordt echter gebruikt in combinatie met een winkelwagentje, en daardoor zijn er enkele belangrijke verschillen. Ten eerste is er de optie waarmee u uw klanten een aantal kunt laten kiezen voor een bepaald object, bijvoorbeeld twee paar handschoenen of drie leren broeken. Ten tweede wordt het object waarop wordt geklikt eenvoudig toegevoegd aan het winkelwagentje en kan de klant verder winkelen, in plaats van dat hij direct om betaalinformatie wordt gevraagd.

Om de serverfunctie toe te passen op uw object, selecteert u een object of een stuk tekst op uw pagina, en kiest u de desbetreffende functie (PayPal-functie Toevoegen aan winkelwagentje) vanuit het serverfunctie-palet. Herhaal dit voor elk object op uw website.



Er wordt een link gemaakt naar een pop-upvenster met het winkelwagentje waarin alle gekozen objecten worden getoond. Als u twee keer op hetzelfde object klikt, neemt het aantal met één toe. Dit is de beste methode, omdat klanten in deze situatie zo weinig mogelijk willen doen om uw producten te kopen. Zelfs als u hen maar een paar muisklikken bespaart, zullen uw klanten meer tevreden zijn, en tevreden klanten kopen meer.

PayPal gebruiken met een winkelwagentje met database


De voorbeelden hierboven zijn goede leeroefeningen en misschien bevindt u zich in een vergelijkbare situatie waarin u slechts zeer eenvoudige PayPal-functionaliteit nodig heeft. De kracht van deze uitbreidingssuite komt echter pas goed tot zijn recht wanneer deze wordt gebruikt met een voorraadoplossing met database. Als u een database gebruikt om uw producten te beheren, kunnen de ontwikkelingswerkzaamheden meer tijd in beslag nemen. De voordelen worden later echter duidelijk dankzij eenvoudig onderhoud en beheer. Als u dit goed opzet, werkt uw website min of meer op de automatische piloot.

Tabelstructuur

Het meest tijdrovende gedeelte bij de opzet van dit soort sites is de database zelf. Het koppelen ervan aan het PayPal-winkelsysteem is kinderspel. In dit voorbeeld gebruiken we een klassieke gegevensstructuur van parent/child - master/detail. Dit is de databaselay-out die wordt gebruikt in 99% van alle databases op het net. Als u hulp nodig heeft met het databasegedeelte van dit project, zijn er vele bronnen op het internet die u daarmee kunnen helpen.

Voor elke rij in de parent-tabel kunnen er nul tot vele rijen in de child-tabel zijn. Voor een e-commerce-website betekent dat dat we een rubriekentabel gaan gebruiken als master (parent) en een producttabel als child. Een voorbeeld van de inhoud van deze tabellen:

Rubriek TV's
- Sony 20"
- RCA 19"
- Magnavox 32"

Rubriek Videorecorders
- Panasonic twee koppen
- Samsung vier koppen

We definiëren de tabel Rubrieken met de volgende velden:
  • catID - autonumber
  • catName - text
Zoals u ziet is er meestal maar weinig informatie nodig voor de mastertabel, die alleen maar dient om de vele rijen in de childtabel te organiseren. Voorbeelden van andere informatie die u kunt opnemen zijn:
  • een uitgebreide omschrijving
  • een afbeelding voor de rubriek
  • een activiteitsveld dat aangeeft of de rubriek momenteel actief is
Deze tabel kan worden gebruikt op een pagina met een lijst van alle objectrubrieken op uw website. De klant kan een rubriek selecteren om productgegevens in de rubriek te zien.

Vervolgens hebben we een producttabel (de childtabel) nodig. Deze tabel bevat informatie over alle afzonderlijke producten. Er is dus een veld nodig voor alle corresponderende objecten voor de serverfunctie Toevoegen aan winkelwagentje.
  • itemID - autonumber
  • catID - number
  • itemName - text
  • amount - currency
  • shipping - currency
  • handling - currency
Als er velden zijn die u niet gebruikt (bijvoorbeeld omdat u geen geld in rekening brengt voor verzending) kunt u nul invullen.

Om het beknopt te houden, gebruiken we hier, net als bij de rubriektabel, alleen de essentiële velden. U kunt meer velden opnemen, zoals:
  • Datum toegevoegd
  • Actief
  • Paginaweergaven

Figuur 6: tekDB_relationship
Een grafische weergave van de relatie tussen de twee tabellen

Zodra u de databasestructuur heeft opgezet, vult u de tabel in met testgegevens. Deze kunt u later vervangen door echte gegevens. Maak eerst enkele rubrieken aan.



Figuur 7: tekDB_catTableContents

Houd er rekening mee dat een rubriek niet meer is dan een logische houder voor de producten in de childtabel. Er wordt een relatie gevormd tussen de rubriektabel en een bepaald product, door de "catID" van de rubriek in de numerieke rubriekveld "catID" van de producttabel te plaatsen. Er kan een complexere tabelstructuur worden opgezet voor producten die in meer dan één rubriek passen, maar voor dit voorbeeld is de eenvoudigere methode voldoende.


Figuur 8: tekDB_ProductTableContents


De gegevens weergeven

Zodra de database gegevens bevat waarmee u kunt werken, moeten deze gegevens op een pagina worden gezet. Voor deze demonstratie zijn slechts twee pagina's nodig: een masterpagina met alle rubrieken waaruit de gebruiker kan kiezen, en een detailpagina met alle objecten voor de gekozen rubriek.

Maak eerst een HTML-tabel voor de gebruikersinterface. Een tabel van 2x2 is voldoende. De eerste rij is een eenvoudige kop met een beschrijving van de content die eronder staat. De tweede rij bevat de recordset-uitvoer. Maak een recordset die de rubrieknaam en id uit de tabel kiest.

Sleep de naam van de rubriek van de gegevensbronpalet naar de eerste kolom, tweede rij. In de tweede kolom komt een weergavelink.

Om deze weergavelink te maken, selecteert u eerst de tekst en gebruikt u de property inspector om naar de pagina te gaan waar de producten worden getoond. Klik op het mappictogram. U ziet een lijst met alle bestaande pagina's op uw website. Selecteer de productpagina en klik op de knop Parameters aan de onderkant van het dialoogvak. In het venster Parameters kunt u een URL-parameter genaamd catID maken (die als filter wordt gebruikt in de product-recordset) en een waarde uit de database toewijzen door het catID-veld te selecteren met het bliksempictogram. Wanneer de weergaveknop naast de rubriek wordt aangeklikt, wordt de corresponderende id doorgegeven aan de product-recordset in de URL-tekenreeks. Alleen de producten in die rubriek worden dan op de detailpagina getoond. Zodra dat gebeurd is, kunt u de serverfunctie opnieuw toepassen voor de tweede rij.

Nu de rubriekspagina werkt, gaan we de detailpagina maken. Iedereen die op deze pagina komt, is via de rubriekspagina gekomen en de catID wordt vermeld in de queryreeks. We beginnen dus met het maken van een recordset die elk veld in de tabel ophaalt, en filteren de catID op de waarde uit de queryreeks met request("catID").


Figuur 9: tekDB_categoryRS

De gebruikersinterface voor deze tabel kan precies dezelfde lay-out hebben afgezien van de extra kolom voor de prijs. Sleep de objectnaam naar de eerste kolom, de prijs naar de tweede en typ "Toevoegen aan winkelwagentje" in de derde. Selecteer de tekst "Toevoegen aan winkelwagentje" en kies de serverfunctie "Add to Cart" uit het serverfunctiepalet. Bij de meeste velden van de gebruikersinterface staat er een kleine bliksemflits naast het tekstvak. Daarmee kunt u de velden invullen met de databasegegevens via de recordset die u heeft gemaakt in het venster Data Sources. Kies een veld voor de database voor elk corresponderend object in de serverfunctie, Daarna kunt u een herhalingsgebied instellen voor de tweede rij. Wanneer producten tijdens de uitvoering op de pagina worden uitgevoerd, wordt aan elke knop Toevoegen aan winkelwagentje de juiste informatie verbonden. Elk object waarop u klikt voor de aankoop, bevat de informatie die u heeft ingevoerd. U kunt de objecten in de database nu onderhouden zonder dat het nodig is uw HTML-pagina's bij te werken.


Figuur 10: tekDB_Addtocart

Dat is ongeveer alles wat erover valt te weten. Klanten kunnen nu door uw catalogus bladeren, objecten kiezen die ze willen kopen, en afrekenen. Dankzij de snelle ontwikkeling van toepassingen is de PayPal-suite uitstekend geschikt voor e-commerce. Voor andere winkelwagensystemen is er veel ontwikkelingstijd nodig, zonder dat het probleem van het innen van betalingen echt wordt opgelost. Deze demonstratie is in ongeveer een uur gemaakt met de kracht van Dreamweaver UltraDev en de PayPal-uitbreidingssuite.

Dit artikel is een fragment uit het nieuwe boek UltraDev E-commerce Concepts: Next Steps van Ray West, Tom Muck en Joel Martinez. Meer informatie over UltraDev en e-commerce kunt u vinden bij Basic UltraDev op www.basic-ultradev.com. Hier vindt u ook informatie over onze boeken, uitleg en extensies waarmee u uw mogelijkheden voor webontwikkeling flink kunt uitbreiden.

DISCLAIMER: De volgende inhoud is afkomstig van de auteur van het desbetreffende artikel en niet van PayPal, Inc. of een van haar partners of dochterondernemingen. Het artikel kan fouten bevatten en PayPal onderschrijft noch ondersteunt de inhoud ervan. PayPal raadt u aan contact op te nemen met de auteurs van de artikelen indien u vragen heeft of informatie wenst over de technische ondersteuning, garanties en/of licenties. U vertrouwt op eigen risico op de inhoud van deze artikelen. PayPal is niet verantwoordelijk voor fouten, letsel of andere schade, inclusief incidentele, speciale, indirecte of gevolgschade als gevolg van het door u gestelde vertrouwen in deze inhoud. PayPal WIJST ALLE GARANTIES met betrekking tot deze inhoud en het gebruik ervan UITDRUKKELIJK AF.