Hoe werkt een OCI PunchOut koppeling?

Dit artikel gaat in op de technische werking van een OCI koppeling. Voor een algemene uitleg over OCI PunchOut koppelingen verwijzen wij u door naar het algemene artikel over PunchOut koppelingen.

Een OCI koppeling, ook wel OCI PunchOut of OCI PunchOut koppeling genoemd is een door SAP ontwikkelde standaard, en werkt met de standaard HTTP methodes. Voor het inloggen in (PunchOut naar) de webshop worden er gebruikersgegevens meegegeven door het inkooppakket. Deze gegevens kunnen meegegeven worden via de POST of GET methode. Het verschil tussen deze twee methodes is dat bij de POST methode de gebruikersgegevens op de achtergrond worden meegestuurd. Bij de GET methode worden de gebruikersgegevens in de URL meegegeven, waardoor deze dus makkelijker door een gebruiker uit te lezen zijn.

Als we een gebruiker in willen loggen in de webshop met het adres “www.example.org” dan kan dat bijvoorbeeld door de gebruiker naar het volgende adres te sturen:

https://example.org/oci?username=JohnDoe123&password=SuperSecret&
HOOK_URL=https://www.site.voorbeeld?hash=abc123

In dit voorbeeld worden er in de URL naast het adres van de webshop nog 3 andere parameters meegegeven:

username
Dit is de gebruikersnaam waarmee de gebruiker in kan loggen in de webshop. In dit voorbeeld is de gebruikersnaam "JohnDoe123".
password
Dit is het wachtwoord wat bij het gebruikersaccount hoort. In dit voorbeeld is het wachtwoord "SuperSecret".
HOOK_URL
Dit is het adres waar de winkelwagen naar terug moet worden gestuurd. In het voorbeeld is het adres XXX, maar in de praktijk zitten er ook in de HOOK URL parameters om de verschillende gebruikers vanuit het ERP te kunnen onderscheiden.

De parameters met de username en wachtwoord moeten door de webshop worden geverifieerd om te bepalen of de gebruiker geauthenticeerd is of niet. Indien alles correct is moet de gebruiker direct ingelogd worden in de webwinkel.

LET OP! De parameters worden vrijwel altijd url encoded meegestuurd. Dit is noodzakelijk omdat niet alle tekens zijn toegestaan in een URL. De webshop moet de ontvangen parameters altijd url decoden voordat deze gebruikt worden.

Voor het terugsturen van de winkelwagen naar het inkooppakket wordt wederom van een HTTP Post gebruik gemaakt. Er zijn verschillende methodes waarop dit geïmplementeerd kan worden, maar een simpel voorbeeld is bijvoorbeeld een HTML formulier met verborgen waardes. SAP heeft standaard namen voor de parameters van de PunchOut order, deze worden gekenmerkt door het voorvoegsel NEW_ITEM. Het is belangrijk om te zorgen dat de parameters die de webshop meestuurt overeenkomen met de waardes zoals het ERP deze verwacht. Indien er van een goed ERP pakket gebruik gemaakt wordt is er de mogelijkheid om verschillende velden te mappen om makkelijk op verschillende webshops aan te sluiten. Een voorbeeld van een HTML formulier om producten mee te sturen ziet er als volgt uit:


<form action="https://www.procurementsystem.voorbeeld?hash=123ABC" method="post">
    <input type="hidden" name="NEW_ITEM-DESCRIPTION[0]" value="A123">
    <input type="hidden" name="NEW_ITEM-QUANTITY[0]" value="1">
    <input type="hidden" name="NEW_ITEM-UNIT[0]" value="Stuks">
    <input type="hidden" name="NEW_ITEM-PRICE[0]" value="10.00">
    <input type="hidden" name="NEW_ITEM-CURRENCY[0]" value="EUR">
    <input type="hidden" name="NEW_ITEM-VAT[0]" value="21">
    <input type="hidden" name="NEW_ITEM-VENDORMAT[0]" value="12345">
    <input type="submit" value="Transfer shopping cart" id="submit1" name="submit1">
</form>

                        

Let op! De meeste inkooppakketten gaan ervan uit dat de gebruiker samen met de winkelwagen TEGELIJK aangeboden worden op de HOOK URL. Het is dus niet mogelijk om eerst de winkelmand terug te sturen, te wachten op een reactie vanuit het ERP, en daarna de gebruiker door te sturen.

Voor een gedetailleerde uitleg en een omschrijving van alle velden kunt u de officiële documentatie van SAP raadplegen. De documentatie voor OCI 4.0 is te vinden op de officiële website van sap.

Meer informatie nodig? Neem contact op via 085 - 06 03 922 of info@abeta.nl .