In deel 1 van dit artikel hebben we uitgelegd hoe Drupal bij uitstek geschikt is om te worden gekoppeld met third party applicaties en softwaresystemen. Bijvoorbeeld je backoffice, maar ook met externe content providers of authenticatie met een externe database.
Hieronder belichten we als voorbeeld 3 gevallen waarin we in onze eigen praktijk dergelijke API-to-API koppelingen hebben gerealiseerd.
1 Authenticatie via externe webservice
We implementeerden gebruikers-authenticatie via een externe webservice voor een internationale data provider.
Achtergrond
Onze opdrachtgever beheert hun gebruikers-database binnen hun intranet-omgeving. Dat is een server die slechts onder stricte voorwaarden benaderbaar is van buitenaf. De openbare (Drupal) website
Het probleem
Het in- en uitloggen en aanpassen van accountgegevens door gebruikers op de openbare (Drupal) website moet verlopen via de gebruikers-database op het intranet. Er is een vorm van externe authenticatie nodig op de Drupal site, die daarvoor moet kunnen communiceren met het intranet. De normale Drupal gebruikersdatabase wordt niet gebruikt.
Het intranet beschikt over een SOAP georienteerde webservice die communicatie met de gebruikersdatabase mogelijk maakt.
De oplossing
We schreven voor de Drupal website een interface die in staat is om te communiceren met de SOAP webservice op het intranet, in de vorm van een Drupal module en een aantal submodules.
Een van de submodules vormt de API module, een verzameling PHP classes die de feitelijke communicatie met de webservice voor z’n rekening neemt. De overige modules verzorgen de Drupal-eigen taken: inloggen, uitloggen, wachtwoord wijzigen, etc.
De koppeling tussen Drupal en de externe gebruikersdatabase doet niets af aan de gebruikerservaring: de gebruiker die inlogt op de website merkt aan niets dat hij feitelijk inlogt op een externe server.
2 Content uit een externe bron
We implementeerden een flexibele webservice client die content verzamelt uit 10+ verschillende bronnen.
Achtergrond
Onze opdrachtgever is de organisatie achter een vacaturewebsite voor freelancers. De vacaturewebsite gaat centraal de vacatures van een aantal externe dataleveranciers publiceren.
Het probleem
De content voor de vacaturewebsite zit niet in de lokale database maar moet 3x per dag geimporteerd worden uit verschillende externe bronnen, opgeslagen in de lokale database samen met de benodigde metadata.
De verschillende content- leveranciers leveren de content aan via verschillende platfoms. Er moet dus via verschillende protocollen kunnen worden gecommuniceerd met de externe bronnen en verschillende inkomende dataformaten moet kunnen worden verwerkt.
De oplossing
Er werd door ons een custom Drupal module geschreven die via 4 verschillende protocollen met de remote server kan communiceren, RSS, REST, SOAP en ruwe HTML.
Door middel van het toevoegen van een kleine custom plugin per data-leverancier wordt ervoor gezorgd dat de data van elke leverancier door Drupal correct wordt begrepen en kan worden verwerkt.
Met deze enkele module zijn tenslotte 13 externe systemen met Drupal gekoppeld.
3 Integratie van betaalsystemen
We integreerden een koppeling tussen Drupal en het AfterPay betaalsysteem.
Achtergrond
Een landelijk bekende bloemen & planten webshop (gebaseerd op Drupal Commerce) wil een nieuw betaalsysteem in hun site integreren: achteraf betalen door middel van AfterPay.
Het probleem
Terwijl voor de meeste bekende betaalsystemen zoals Ogone, Mollie etc) inmiddels wel een koppeling met Drupal bestaat in de vorm van een uitbreidingsmodule, bleek dit voor het AfterPay betaalsysteem nog niet het geval.
De oplossing
AfterPay bleek te beschikken over een openbare API en wij ontwikkelden aan de hand daarvan een module die het AfterPay betaalsysteem integreert met Drupal.
Hierdoor kunnen Drupal en Commerce naadloos de betalingen die bij AfterPay zijn gedaan verwerken in hun eigen systemen