Webshop development tools 2018-10-16T02:16:12+00:00

EXTRAvestiging webshop development tools

EXTRAvestiging webshops kunnen standalone opgezet worden waarna de webshop via een menu-optie in de website te benaderen is. Mooier is uiteraard als de EV webshop in de website geïntegreerd kan worden zoals u hier kunt zien. Naast de standaard integratie van de EV webshop in WordPress, kan een EV webshop ook in elke maatwerk website geïntegreerd worden als deze PHP en javascript ondersteunt (wat 99% van de websites ondersteunt). Door middel van enkele javascript en PHP-statements is deze integratie te realiseren zoals u hier kunt zien.

Op de webpage ‘https://www.extravestiging.nl/webshop-tools-snippets‘ vind u diverse code-voorbeelden.

Deze webpage laat de mogelijkheden zien en welke hulpmiddelen gebruikt kunnen worden om een EV webshop binnen een bestaande website te integreren.

Deeplinken

Deeplinken is een techniek waardoor via een URL direct naar een bepaalde page gesprongen wordt. Zo kun je denken aan bijvoorbeeld een facebook post ‘check deze lekker taart!‘ waarna direct naar deze taart gesprongen kan worden door er op te klikken. EV webshop integratie ondersteund deeplinken via de URL door de ‘page=’ parameter.

Achter de ‘page=’ parameter, kan de URL van de webshop pagina ingegeven worden wara je direct naar wilt springen. In onderstaande voorbeelden is de webshop te vinden via de URL https://www.extravestiging.nl/webshop en deze dient u te veranderen in de EV webshop URL van uw website.

Winkelwagentje
www.extravestiging.nl/webshop/?page=/CheckoutShoppingCart.aspx

Inloggen
www.extravestiging.nl/webshop/?page=/SignOn.aspx

Aanbiedingen
www.extravestiging.nl/webshop/?page=/aanbiedingen

Zoeken
www.extravestiging.nl/webshop/?page=/search.aspx&q=cake

Direct naar een product/ assortiment of page springen
Aangezien producten en assortimenten dynamisch zijn, zijn de productnamen dat ook. Door naar het product te navigeren op de webshop, kun je de directe link bepalen van dit product. De directe URL staat in de adresbalk:
https://www.extravestiging.nl/webshop/?page=/assortiment/extravestiging-banket/roombotercake

p.s. Als er in de URL ‘s|’ staat, kan dat genegeerd en weggelaten worden.

Direct producten plaatsen in winkelmandje

Het is mogelijk dat u vanuit uw website, Facebook of Twitter direct een product of aanbieding in de winkelmand wilt plaatsen. U kunt dat doen door een directe URL aan te roepen. De page ‘AddProduct.aspx’ wordt aangeroepen met een aantal parameters zoals:

http://webshop.extravestiging.nl/AddProduct.aspx?ProductId=1&Subcode=000&Amount=10

Dit betekend:

Plaats 10 keer het product 1 met subcode 000 in het winkelmandje en ga direct naar het winkelmandje om te betalen (standaard actie).

ProductCode = De productcode van het product in Bake-it (of ProductId)
Subcode = De subcode van het toe te voegen product. Als er geen subcode is ingegeven, wordt de standaard subcode van het product genomen (of SubcodeId)
Amount = Aantal producten dat u in de winkelmand wilt plaatsen

In plaats van de ProductCode en Subcode kunnen ook de ProductId en SubcodeId gebruikt worden. Dit zijn de interne id’s van de producten binnen EV die verder niet zichtbaar zijn binnen de EV webshop maar wel via GetInfo.aspx (zie onder) teruggegeven worden.

Daarnaast zijn er nog een aantal speciale parameters:

ActionCode = De actie die gedaan moet worden nadat het product in het winkelmandje is  geplaatst
ActionCodeURL = De URL / website waarnaar gesprongen moet nadat het product in de winkelmand is geplaatst
AddType = “New” of “Add”. Als “New” wordt gespecificeerd wordt er altijd een nieuw product aangemaakt. Als “Add” (wat de standaard method is) dan wordt getracht het product bij een al bestand product in het winkelmandje toe te voegen.

De actiecode bevat de actie die gedaan moet worden nadat het product in de winkelmandje is geplaatst en kan de volgende waarde bevatten:

ActionCode=ShoppingCart  –> Na toevoegen, ga naar het winkelmandje (standaard actie als er geen ActionCode als parameter is meegegeven)
ActionCode=Home  –> Na toevoegen, ga naar de startpagina van de webshop
ActionCode=Offers –> Na toevoegen, ga naar de aanbiedingen pagina van de webshop
ActionCode=URL –> Spring naar een andere website –> ActionCodeURL

De ActionCodeURL bevat de website waarnaar gesprongen wordt nadat het product is toegevoegd.

Voorbeeld:

http://webshop.extravestiging.nl/AddProduct.aspx?ProductId=1&Subcode=000&Amount=3&ActionCode=url&ActionCodeURL=https://www.extravestiging.nl&AddType=New

Als er een verkeerde parameter is meegegeven aan de AddProduct.aspx pagina, wordt er een XML fout-pagina getoond met de statuscode en beschrijving van de fout:

Status = 0 –> OK
Status = 1 –> Er is geen productcode meegegeven in de parameters
Status = 2 –> Er is geen subcode meegegeven in de parameters / geen standaard subcode
Status = 11 –> Product niet gevonden in de database
Status = 12 –> Subcode niet gevonden in de database
Status = 20 –> Product/Subcode combinatie niet gevonden in de database
Status = 89 –> ActionCode is niet geldig
Status = 99 –> Algemene / onbekende fout

Sessies

Als de webshop / website gemixed via AJAX en URL calls benaderd wordt, kan het zijn dat er verschillende sessie ID’s gebruikt worden door de browser waardoor bijvoorbeeld toegevoegde producten niet zichtbaar zijn in de winkelwagen. Om dit te voorkomen, kan de SessionId van de browser gezet worden. Zie SetSessionId : Het zetten van een custom sessie ID.

Informatie van EXTRAvestiging opvragen

Het is mogelijk dat u vanuit uw website informatie opvraagd van de EV webshop. U kunt daarbij denken aan reclames in een bepaalde periode, assortimenten etc. Hierdoor kunt u deze informatie binnen een website gebruiken om bijvoorbeeld dynamisch een menu op te bouwen op basis van de beschikbare assortimenten voor een bepaalde datum.

Hier vindt u een PHP voorbeeld waar de assortimenten van een EV webshop worden opgehaald, dynamisch een knop gemaakt worden met de afbeelding en link naar het assortiment in de webshop: http://evphptest.extravestiging.nl/

Als er een probleem is, wordt een foutcode in XML getoond:

  • OK = 0
  • NoAssortimentCode = 1
  • NoProductCode = 2
  • NoSubCode = 3
  • DateFormatInvalid = 4
  • AmountInvalid = 5
  • NoActionCode = 6
  • ProductNotFound = 7
  • SubcodeNotFound = 8
  • ProductSubcodeNotFound = 9
  • AssortimentNotFound = 10
  • ProductCodeNotUnique = 11
  • SubCodeNotUnique = 12
  • ProductSubCodeNotUnique = 13
  • AssortimentCodeNotUnique = 14
  • MaxItemsInvalid = 15
  • ProductIdListInvalid = 16
  • ProductCodeListInvalid = 17
  • ProductIdInProductIdListNotFound = 18
  • ProductCodeInProductCodeListNotFound = 19
  • LocationNotFound = 20
  • LocationCodeNotUnique = 21
  • NoLocationCode = 22
  • SessionIdNotSet = 23
  • SessionIdSet = 24
  • Unknown = 99

Sessies

Als de EV webshop / website gemixed via AJAX en URL calls benaderd wordt, kan het zijn dat er verschillende sessie ID’s gebruikt worden door de browser waardoor bijvoorbeeld toegevoegde producten niet zichtbaar zijn in de opgeroepen winkelwagen. Om dit te voorkomen, kan de SessionId van de browser gezet worden door de volgende URL aan te roepen voordat het product toegevoegd wordt:

http://webshop.extravestiging.nl/GetInfo.aspx?Action=SetSessionId&SessionId=test123

Deze sessie ID is een string die maximaal 24 karakters lang is (of wordt 24 lang gemaakt wordt) en kan bijvoorbeeld de huidige SessionId van de website zijn. Daarna kunnen de opvraag-functies met GetInfo.aspx aangeroepen worden. De teruggegeven XML bevat het root-attribuut SessionId waardoor in de code gecontroleerd kan worden of de gegevens van de juiste sessie getoond worden.

LET OP: Een SessieId mag enkel uit kleine letters a – z en cijfers 0 – 5 bestaan en mag niet langer zijn dan 24 tekens!

Hieronder een voorbeeld van URLS die na elkaar aangeroepen kunnen worden en 2 aparte winkelmandjes bediend:

https://webshop.extravestiging.nl/GetInfo.aspx?Action=SetSessionId&SessionId=test123 (Optioneel: Om de browser SessionId te zetten)
https://webshop.extravestiging.nl/AddProduct.aspx?ProductCode=1&Subcode=000&Amount=10&SessionId=test123
https://webshop.extravestiging.nl/GetInfo.aspx?Action=SetSessionId&SessionId=test124 (Optioneel: Om de browser SessionId te zetten)
https://webshop.extravestiging.nl/AddProduct.aspx?ProductCode=2&Subcode=000&Amount=10&SessionId=test124
https://webshop.extravestiging.nl/GetInfo.aspx?Action=GetShoppingcartContents&SessionId=test123
https://webshop.extravestiging.nl/GetInfo.aspx?Action=GetShoppingcartContents&SessionId=test124

Voorbeeld voor het opvragen van de huidige SessionId van de browser:

Als de GetShoppingcartContents aangeroepen wordt, zie je als root-attribuut de SessionId staan die gebruikt kan worden voor verdere aanroepen van de webshop:
https://webshop.extravestiging.nl/GetInfo.aspx?Action=GetShoppingcartContents

SessieId’s en webserver calls

Elke webbrowser houdt zelf zijn eigen sessie bij middels een zogenoemde sessioncookie. Wanneer een call naar de webshop wordt gemaakt vanuit een server-omgeving, kan het zijn dat de sessie vanwege CORS (Cross Origin Resource Sharing) niet goed ingesteld kan worden. Door middel van de parameter ‘SessionOrigin’ kan expliciet toestemming gegeven worden aan een website om toch de gegevens van de juiste sessie op te vragen.

https://webshop.extravestiging.nl/GetInfo.aspx?Action=GetShoppingcartContents&SessionId=test123&SessionOrigin=http://test.extravestiging.nl

Met deze call wordt expliciet toestemming gegeven aan de website ‘http://test.extravestiging.nl’ om de sessioncookie ‘test123’ in te stellen en vervolgens de juiste data van de webshop ‘webshop.extravestiging.nl’ op te vragen. Een voorbeeld vindt u op ‘http://phpai.extravestiging.nl

LET OP: http:// en https:// dienen expliciet meegegeven te worden!

Parameters:

Parameter Omschrijving
SessionID De SessionId van de browser zodat de juiste content opgehaald wordt.
SessionOrigin Enkel voor server-calls: De website die de call naar de webshop uitvoert zodat de juiste sessie ingesteld can worden vanwege CORS. U dient http:// of https:// expliciet mee te geven

Hoofdassortimenten

Met onderstaande link kunnen de hoofd-assortimenten opgeroepen worden. Deze worden in de vorm van een XML bestand teruggegeven.
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetMainAssortiments

Als een EV webshop gebruik maakt van de franchise module, dient een locatiecode meegegeven te worden omdat het assortiment per locatie anders kan zijn. Zodra een locatiecode is meegegeven, is deze geldig voor de gehele sessie, echter, bij Action=GetMainAssortiments is het meegeven van de locatiecode verplicht zodra een EV webshop gebruik maakt van de Franchise module!

Parameters:

Parameter Omschrijving
Date Er wordt gecontroleerd of het seizoen van het assortiment geldig is voor deze datum. (Optioneel –> Vandaag)
LocationId / LocationCode Zodra de EV webshop gebruik maakt van de franchise module, is het meegeven van de LocationId of LocationCode verplicht omdat assortimenten per locatie anders kunnen zijn.

Subassortimenten

Een hoofdassortiment kan subassortimenten bevatten. Bijvoorbeeld hoofdassortiment ‘Brood’ bevat subassortimenten ‘Klein brood’ en ‘Groot brood’ die beiden vervolgens de producten bevatten. Met een parameter wordt aangegeven van welk assortiment de subassortimenten opgehaald moeten worden.

Live voorbeeld

http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetSubAssortiments&AssortimentId=3&Date=20180404

Parameters:

Parameter Omschrijving
AssortimentId / AssortimentCode Zowel de assortiment code of assortiment id kan meegegeven worden als parameter (Verplicht)
Date Er wordt gecontroleerd of het seizoen van het assortiment geldig is voor deze datum. (Optioneel –> Vandaag)

Assortiment Items

Een assortiment bevat andere assortimenten of assortiment items. Deze assortiment items zijn de ‘Productknoppen’ binnen een assortiment zoals te zien op https://webshop.extravestiging.nl/assortiment/extravestiging-brood. Met de ActionCode ‘GetAssortimentItems’ kunnen de items van een assortiment opgehaald worden. Hierbij wordt rekening gehouden of de producten in het seizoen zitten en ook voor een eventueel gekozen datum besteld mogen worden. Ook worden de producten op dezelfde volgorde in de XML weergegeven als ze op de EV webshop getoond worden.

Zodra de ‘FastOrderSubcodeId’ bij een AssortimentItem gevuld is houdt dit in dat er van dit product/assortimentitem 1 subcode gedefinieerd is maar ook dat er geen extra teksten/opties voor dit product nodig zijn en dus direct met AddProduct.aspx in de iwinkelwagen gelegd kan worden.

Live voorbeelden

Laat alle hoofd assortimenten zien zodat we de ID kunnen bepalen van het assortiment waarvan we de items willen zien.
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetMainAssortiments

We kiezen het assortiment ‘Brood’ met Id=3.

Haal alle AssortimentItems op van AssortimentId=3
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetAssortimentItems&AssortimentId=3

Haal de eerste 4 AssortimentItems op van AssortimentId=3
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetAssortimentItems&AssortimentId=3&MaxItems=4

Haal 2 willekeurige AssortimentItems op van AssortimentId=3 (Tip: Druk een paar keer op F5, je ziet telkens andere producten)
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetAssortimentItems&AssortimentId=3&MaxItems=2R

Haal AssortimentItems op van AssortimentId=3 waar de ProductId binnen (1|2|11)
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetAssortimentItems&AssortimentId=3&ProductIdList=1|2|11

Haal 2 willekeurige AssortimentItems op van AssortimentId=3 waar de ProductId binnen (1|2|11) en geldig voor 4 Juni 2018. (Tip: Druk een paar keer op F5, je ziet telkens 2 wisselende producten geselecteerd uit deze 3 producten)
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetAssortimentItems&AssortimentId=3&ProductIdList=1|2|11&MaxItems=2R&Date=20180604

Parameters:

Parameter Omschrijving
AssortimentId / AssortimentCode Zowel de assortiment code of assortiment id kan meegegeven worden als parameter (Verplicht)
Date=YYYYMMDD Er wordt gecontroleerd of het seizoen van het assortiment geldig is voor deze datum. (Optioneel –> Vandaag)
MaxItems=### of ###R Haal maximaal ‘###’ items op. Wanneer de R achter het aantal wordt gezet, worden willekeurige items gekozen.
ProductIdList=ID1|ID2|ID3 Haal enkel de assortiment items op waarvan de Product Id aanwezig is binnen ‘ID1|ID2|ID3’
ProductCodeList=Code1|Code2|Code3 Haal enkel de assortiment items op waarvan de Product Code aanwezig is binnen ‘ID1|ID2|ID3’

Aanbiedingen

Binnen de backoffice van de EV webshop kunnen aanbiedingen ingegeven zijn zoals te zien op https://webshop.bakkerijschalke.nl/aanbiedingen . Met de ActionCode ‘GetDiscountProducts’ kunnen de aanbiedingen van de EV webshop opgehaald worden. Hierbij wordt rekening gehouden of de producten in het seizoen zitten.

Live voorbeelden

Laat alle aanbiedingen zien:
http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetDiscountProducts
http://evSchalkeb2c.extravestiging.nl/GetInfo.aspx?Action=GetDiscountProducts

Als een EV webshop gebruik maakt van de franchise module, dient een locatiecode meegegeven te worden omdat de aanbiedingen per locatie anders kunnen zijn. Zodra een locatiecode is meegegeven, is deze geldig voor de gehele sessie, echter, bij Action=GetDiscountProducts is het meegeven van de locatiecode verplicht zodra een EV webshop gebruik maakt van de Franchise module!

De XML data die teruggegeven wordt komt overeen met de aanbiedingsknoppen binnen de EV Webshop. Bake-it is opgebiouwd uit producten met hun bijbehorende subcodes. Een aanbieding kan voor een specifieke product/subcode combinatie ingesteld zijn (Scenario 1) of voor elke subcode van een product ingesteld zijn (Scenario 2). Scenario 2 is enkel van toepassing in Bake-it, Orbak heeft altijd product/subcode aanbiedingen (scenario 1)

Scenario 1

Als een reclame voor een Product/Subcode combinatie ingesteld is, dan zijn in de XML zowel de ProductId als de SubcodeID gevuld en bevat de ‘DisplayPrice’ de daadwerkelijke reclameprijs voor de periode ‘DiscountStartDate’ t/m ‘DiscountEndDate’.

Scenario 2

Het product is in de aanbieding voor elke product/subcode combinatie. Zo kun je in Bake-it aangeven dat een bruinbrood 1.5 Euro kost ipv 2 Euro en aangezien dit geld voor elke subcode kost een half-bruinbrood 0,75 Euro ipv 1 Euro. In de XML is de ProductId dan wel gevuld maar de SubcodeId is dan leeg. De DisplayPrice is de prijs die op de reclame knop (vanaf) staat in de EV webshop. Om de prijs van de reclame te zien, dienen een paar extra stappen genomen te worden:

  1. Vraag de discounts op met Action=GetDiscountProducts, daar zie je de reclame start en einddatum en de webshop knop-prijs staan
  2. Als zowel de ProductId als SubcodeId gevuld zijn, is de DisplayPrice ook de echte reclameprijs voor deze product/subcode combinatie voor de gegeven periode, zie scenario 1
  3. Als de SubcodeID leeg is, is het dus een algemene reclame en geldt deze reclame voor elke geldige subcode van dat product.
  4. Je kunt met Action=GetProductInfo alle geldige subcodes (en reclameprijzen) van het product opvragen voor een bepaalde datum (vandaar dat de parameter Date meegegeven kan worden)
  5. Alternatief is om via Action=GetProductSubcode direct per ProductId/Code – SubcodeId/Code via GetProductSubcode de prijs opvragen

Voorbeeld:

1 http://evSchalkeb2c.extravestiging.nl/GetInfo.aspx?Action=GetDiscountProducts
http://evSchalkeb2c.extravestiging.nl/GetInfo.aspx?Action=GetProductInfo&ProductId=27
5 http://evSchalkeb2c.extravestiging.nl/GetInfo.aspx?Action=GetProductSubcodeInfo&ProductId=27&SubcodeId=0&Date=20180702

Parameters:

Parameter Omschrijving
MaxItems=### of ###R Haal maximaal ‘###’ items op. Wanneer de R achter het aantal wordt gezet, worden willekeurige items gekozen.
LocationId / LocationCode Zodra de EV webshop gebruik maakt van de franchise module, is het meegeven van de LocationId of LocationCode verplicht omdat assortimenten per locatie anders kunnen zijn.

Product informatie

Per product is veel informatie beschikbaar zoals te zien op https://webshop.extravestiging.nl/assortiment/extravestiging-brood/witbrood-rond. Met de ActionCode ‘GetProductInfo’ kan deze informatie opgevraagd worden. Ook worden alle mogelijke subcodes getoond met de daarbij behorende prijzen.

Zodra een datum meegegeven wordt, worden de prijzen van dit product van die datum bepaald. Standaard wordt ‘vandaag’ als datum genomen. Als het product toevallig op deze (zelf gegeven) datum in de aanbieding is, dan wordt de aanbiedingsprijs getoond.

De URL is de relatieve URL waarmee het product getoond en besteld kan worden en wordt enkel gevuld als dit product binnen een assortiment van Bake-it/Orbak aanwezig is. Ergo: Als de URL leeg is, dit product toevoegen aan een assortiment in Bake-it zodat dit product de website getoond kan worden, gevonden kan worden en ook besteld kan worden.

Er wordt geen voedingswaarde informatie terug gegeven. Als nodig, kan dat eventueel ontwikkelt worden.

Live voorbeeld

http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetProductInfo&ProductId=1

Parameters:

Parameter Omschrijving
ProductId / ProductCode Zowel de product code of product id kan meegegeven worden als parameter (Verplicht)
Date=YYYYMMDD Er wordt gecontroleerd of het seizoen van het assortiment geldig is voor deze datum. (Optioneel –> Vandaag)

Product Subcode informatie

Een EV webshop product is een combinatie van een product en een subcode. De subcode bepaald de uitvoering en prijs van het product. Met de ActionCode ‘GetProductSubcodeInfo’ kan de product/subcode informatie opgevraagd worden. Dit is een ‘subset’ van de veel uitgebreidere productinformatie.

Live voorbeeld

http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetProductSubcodeInfo&ProductCode=10&SubcodeId=31

Parameters:

Parameter Omschrijving
ProductId / ProductCode Zowel de product code of product id kan meegegeven worden als parameter (Verplicht)
SubcodeId / Subcode Zowel de subcode of subcode id kan meegegeven worden als parameter (Verplicht)
Date=YYYYMMDD Er wordt gecontroleerd of het seizoen van het assortiment geldig is voor deze datum. (Optioneel –> Vandaag)

Winkelwagentje

Zodra een product in de EV webshop besteld wordt, wordt het product aan het winkelwagentje toegevoegd. Met de ActionCode ‘GetShoppingcartContents’ kan het winkelmandje opgevraagd worden.

Live voorbeeld

http://webshop.extravestiging.nl/GetInfo.aspx?Action=GetShoppingcartContents

Parameters

Parameter Omschrijving
SessionId De SessionId kan meegegeven worden zodat de contents van de juiste sessie worden weergegeven. Controleer of het root-attribuut hetzelfde is als de SessionId die meegegeven is, deze kan in sommige gevallen na-ijlen waardoor een tweede call voor de contents van de sessie nodig kan zijn. Dit is te voorkomen door eerst de SetSessionId actie uit te voeren en daarna het winkelwagentje op te roepen.