Kassière: u mocht hier niet winkelen

Stel je bent lekker aan het shoppen bij de Makro,  Hanos of een andere B2B winkel, waar je een bedrijfspas nodig hebt. Je gaat met je volgeladen kar, naar de kassa en laat je pas zien. De kassière zegt: sorry, meneer/mevrouw, uw pas is verlopen, u moet eerst een nieuwe aanvragen….

Dat is toch raar! Je pas gaf namelijk gewoon toegang tot de winkel, zonder een melding dat er iets aan de hand was. Pas als je klaar bent met winkelen, krijg je te horen dat je niet had mogen winkelen…. Hadden ze dat niet even bij het toegangspoortje kunnen melden?

Afijn, zo werken sommige API’s… Ja echt waar! Ik ben bezig om een Soap connectie met DPD te leggen…. Je krijgt een inlog en een dagelijkse authorisatie-token. Hartstikke mooi!

Dus script geschreven die bij het inloggen controleert of er een nieuwe token nodig is. Helaas…. dat werkt niet. Want DPD controleert de inlog pas bij het aanvragen van een specifieke service, bij de ‘kassa’ dus.

Ik kon het eigenlijk niet geloven, dus gezocht in hun veel te beknopte informatie en ook naar andere scripts gekeken. Andere scripts programmeren er inderdaad ook omheen…. While process not ok, get new token, redo complete process.

DPD vraagt je wel om niet steeds in te loggen. Ik neem aan om hun service te ontlasten, maar op deze manier belast je het systeem alsnog onnodig.

Overigens is dit niet mijn eerste frustratie tijdens het programmeren hiervan. Het begint al met de matige informatie, die niet meer dan een cheatsheet is. Maar een echte programmeur vindt zijn weg wel.

Het lukte me uiteindelijk om connectie en response te krijgen. Dus dat zag er goed uit. Vervolgens wilde ik een possible product aanvragen…. Oei, dat lijstje komt totaal niet overeen, met de specs. De possible products blijkt een lijstje van alle mogelijkheden te zijn en via de voorbeelden kun je achterhalen welke instellingen je dan nodig hebt. Hoezo duidelijke informatie…

Afijn, ook deze hobbel genomen en de parameters goed gezet om een eerste request te doen. Er volgt een vreemde foutmelding ‘Object reference not set to an instance of an object’. Via google en stackoverflow is deze melding wel te vinden, maar met die informatie kon ik weinig. Een object maken van de parameters hielp ook niet. Gebeld en gemaild met DPD. Zij wisten het ook niet!! Zucht!!

Wat scripts gezocht en gevonden. Via die scripts lukte de connectie wel! Dat is mooi want dan kunnen we vergelijken. Maar het aanpassen van de parameters hielp niet. Na een paar uur ontdekte ik eindelijk het probleem. Ik had een trailing slash achter de authentication-url geplakt. Het aanroepen van de header gaf ging goed en gaf de verwachtte respons, totdat we onze specifieke functie aanriepen…. alweer pas bij de kassa…
Waar de kassière je vertelt dat ze niet kan afrekenen, maar dat niemand weet waarom. Uiteindelijk kom je er zélf achter dat je een verkeerd pasje hebt, terwijl het toegangspoortje deze wel accepteerde en geen enkele medewerker het snapte.
Staaltje van ‘Computer says No’….

Als kers op de taart kun je hun Soap-objecten en exceptions, w.o. SoapFault, niet via daarvoor bedoelde methods uitvragen, maar moet je (m.b.v. isset of property_exists) uitzoeken welke eigenschappen er zijn om te kunnen bepalen welke error of status het resultaat heeft.

Ik ben benieuwd, welke beren ik nog meer op de DPD-route tegenkom. Gelukkig is hun pakketservice beter dan de virtuele variant 😉

 

Geplaatst op 18 juni 2018, in DivaeLife. Markeer de permalink als favoriet. Een reactie plaatsen.

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit /  Bijwerken )

Google photo

Je reageert onder je Google account. Log uit /  Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit /  Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit /  Bijwerken )

Verbinden met %s

Deze site gebruikt Akismet om spam te bestrijden. Ontdek hoe de data van je reactie verwerkt wordt.

%d bloggers liken dit: