Naast het dynamisch ophalen van klantgegevens, kortingscode en verzendkosten is het ook mogelijk om dynamisch productgegevens op te halen. Denkbijvoorbeeld aan voorraad-informatie.

Om deze feature te kunnen gebruiken heb je nodig:

  • Kennis van een server-side taal (cgi, php, java, python, etc)
  • Een locatie om het script op te hosten en waar ook de productgegevens in de backoffice beschikbaar zijn

Remote host
De waarde (naam) van de Remote host is ook de naam van het script dat wordt aangeroepen om de productgegevens op te halen. Het script wordt aangeroepen door middel van een POST met de volgende variabelen:

Post parameters externe klantgegevens
*userid>>klantnummer
*shopid>>accountnummer van de winkel
*User defined parameters>>parameters opgevoerd als querystring in de URL van de externe server
*productid_count>>het aantal producten waarvoor de gegevens worden opgevraagd
*productid0…n>>product identificatienummers van de producten waarvoor de gegevens opgehaald moeten worden
*orderquantity>>het aantal dat in de winkelwagen zit van een bepaald product, de word vervangen door het volgnummer van het product, gelijk aan de productid waarde

Omdat ook de userid wordt meegegeven kan op deze manier ook klantspecifieke productdata worden opgehaald zoals bijvoorbeeld prijsinformatie welke per klant varieert.
Wanneer gebruik wordt gemaakt van klantbeheer zal er altijd een userid aanwezig zijn, maar wanneer het klantbeheer niet wordt gebruikt zal er een userid moeten worden meegegeven bij het aanroepen van de winkel. Daar moet custom_userid variabele voor worden gebruikt. Deze variabele, die meegegeven wordt in de GET url verschaft een userid die gebruikt zal worden bij de aanroep van de winkel. De syntax is als volgt: [shop-url]?custom_userid=[de userid]. Tevens worden alle overige variabelen die met custom_ beginnen meegegeven in de aanroep van de Remote host.

Voor de beveiliging van de gegevensuitwisseling kan bijvoorbeeld gebruik gemaakt worden van een sessie variabele (custom_sessionid o.i.d.). Ook kan het IP nummer van waaruit de aanroep gedaan wordt, gecheckt worden.
De gegevens die worden teruggegeven, worden in elke pagina beschikbaar gesteld.

De lijst van product-identificatienummers waarvan de gegevens opgehaald moeten worden, worden doorgegeven met de parameters productid0=&productid1=….productid=. Het volgnummer van de parameter komt daarbij overeen met de volgorde op het scherm. De parameter productid0 komt overeen met het eerste product op het scherm en bijv. productid11 met het twaalfde product op het scherm. Het aantal producten waarvoor de gegevens opgevraagd wordt, wordt aangegeven door de parameter productid_count.

Het systeem verwacht als antwoord op het verzoek een XML document met daarin de gegevens van de producten (zie het onderstaande XML voorbeeld). Met behulp van de attribuutwaarde “catalog” voor het attribuut type van het element , wordt er aangegeven dat het om productlijst gegevens gaat. Daarnaast heeft elk element ook een index attribuut. De waarde van het index attribuut moet overeen komen met het volgnummer gebruikt in de aanroep. De gegevens van productid0 moeten dus teruggegeven worden in het element en de product gegevens van bijv. productid11 in het element . De volgorde van de elementen in het XML document zijn hierdoor niet van belang.

XML document
Het script dat wordt gemaakt moet een XML document teruggeven met het volgende formaat (voorbeeld van een deel van de return XML).

< ?xml version=“1.0”? >
< rows>
< row type=“catalog” index=“0” >
< col name=“stock”>6< /col>
< col name=“kleur”>wit< /col>
< col name=“naam”>test 1< /col>
< row>
< row type=“catalog” index=“1”>
< col name=“stock”>1< /col>
< col name=“kleur”>geel< /col>
< col name=“naam”>test 2< /col>
< row>
< row type=“catalog” index=“5”>
< col name=“kleur”>geel< /col>
< col name=“stock”>5< /col>
< col name=“naam”>test 5< /col>
< row>
< row type=“catalog” index=“3”>
< col name=“kleur”>oranje 3< /col>
< col name=“naam”>test 3< /col>
< col name=“stock”>3< /col>
< row>
< row type=“catalog” index=“6”>
< col name=“kleur”>paars< /col>
< col name=“naam”>test 6< /col>
< col name=“stock”>6< /col>
< /row>
< /rows>

De structuur van het document kan beschreven worden met de volgende DTD. Het gebruik van een DTD is echter niet noodzakelijk.
< !ELEMENT rows (#PCDATA | row)* >
< !ELEMENT row (#PCDATA | col | row)* >
< !ATTLIST row type CDATA #IMPLIED >
< !ATTLIST row index CDATA #IMPLIED >
< !ELEMENT col (#PCDATA) >
< !ATTLIST col name CDATA #IMPLIED >
De kolom < col name=”stock” >###< /col > is gereserveerd voor het doorgeven van voorraad-gegevens van een product. De voorraad-waarde wordt daarbij automatisch gekoppeld aan de voorraad-kolom als deze beschikbaar is. De andere kolommen worden automatisch gekoppeld aan de kolommen met dezelfde naam. Bij het ontbreken van een kolom in de externe gegevens (het XML document) wordt het gegeven uit de lokaal opgeslagen productlijst gebruikt. Zie ook deze link met info over annotaties.

Het eerste product in het XML document bepaalt welke kolommen overschreven kunnen worden. In het bovenstaande XML document worden hierdoor alleen de kolommen kleur, naam en stock overschreven als deze een waarde hebben. Andere kolommen in het XML document worden overgeslagen.

Custom lay-out
De uitbreiding myshop-value:customer-field- kan door de uitbreiding gebruikt worden om de informatie van de klant op te vragen. Veldnaam kent daarbij de volgende mogelijkheden: email, company, department, name, street , streetnr, zip, city, telhome, telwork, telmob, fax, remark,state, country, initials, customerid, gender, age, company2, street2, vatnumer, accountnumber, accountholder, accountholdercity. Zie de help m.b.t. eigen lay-out.

Reactie

Was dit nuttig?

Ja Nee
U heeft aangegeven dat u dit onderwerp niet nuttig vond ...
Zou u hieronder willen uitleggen waarom niet? Bij voorbaat dank!
Dank voor uw reactie.

Geef uw reactie op dit onderwerp.

Verstuur Reactie