Betaling in verzoek
Auteur: Joeri Diederen Haagsma | Joeri Bekker Status: Definitief
Het doel van de interactie
Het registeren van een online betaling die plaatsvindt in de aanvraagfase van de klantreis.
Use cases
Betaling is verplicht voor het indienen van een aanvraag
Verzoek wordt opgeslagen na validatie van de betaalprovider
Betaling is optioneel voor het indienen van een aanvraag
Buiten scope, vereist ZAC dat een update op een object kan verwerken
Het architectuuroverzicht
Component
Functie
Optioneel: Authenticatiecomponent
De eindgebruiker valideren
Inputcomponent, zoals Open Formulieren
Het verzoek registreren
Internetkassa, zoals Ingenico
Online betalingen verwerken
Objecten- en Objecttypen API
Het publiceren, valideren en opslaan van verzoekenHet opstellen van een notificatie voor de Notificaties API
Zaaktypecatalogus API
Voor het ophalen van documenttypen
Documenten API
Het opslaan van bijlagen
Notificaties API
Voor het routeren van notificaties naar afnemers
Zaakafhandelcomponent
Het ontvangen van een notificatie, het ophalen en of kopiëren van formulierdata, het starten van een proces en het aanmaken van een zaak
Optioneel: Financieel systeem
Het boekhoudkundig verwerken van de betaling
Het interactiepatroon
Autorisaties
Naar betaalprovider
Bij het integreren met een internetkassa wordt er gebruik gemaakt van een PSPID (Payment Service Provider Identifier). Hiervoor moet de beheerder een handler aanmaken in de beheerinterface van het aanvraagcomponent. De configuratie omvat onder andere het instellen van de SHA-512 hash-algoritme en het definiëren van de feedback-URL in de internetkassa-backoffice.
Naar objecten API
De registrator wordt vooraf met een API-sleutel geautoriseerd om objecten van dat objecttype aan te maken.
De gegevensstructuur
Het aanvraagcomponent slaat betaalgegevens op in het Verzoekobject. Deze betaalgegevens moeten in de internetkassa worden geselecteerd, zodat ze teruggkoppeld worden aan de callback url van het aanvraagcomponent.
Gegevensstructuur
Het verzoekobject bestaat uit verschillende gegevensgroepen. Deze gegevens worden gevalideerd door een JSON-schema.
Een voorbeeldschema van een verzoek richting het zaaksysteem eSuite vind je hier:
De verschillende gegevensgroepen zijn;
Generieke verzoekgegevens
De structuur van deze gegevens is altijd hetzelfde. Denk aan gegevensgroepen zoals de Bron van een verzoek, de Locatie, Betrokkenen, Betaling, of gegevens die een afhandelcomponent nodig heeft om een proces te starten. etc.
Deze gegevens zijn idealiter standaard aanwezig, want ze garanderen dat verplichte velden aanwezig zijn. Als dat niet zo is, kan de eSuite wellicht geen zaak starten op basis van een formulier.
Specifieke verzoekgegevens
Dit zijn gegevens die nodig zijn voor het behandelen een specifiek Verzoek. Deze gegevens zijn afhankelijk van het gekozen product en vormen het contract tussen aanvraag- en behandeling. Afstemming tussen de registrator en verwerker is noodzakelijk als deze structuur van deze gegeven wijzigt. Deze gegevens verschillen per verzoektype, mogelijk per gemeente.
Dit gedeelte bevat gegevens die noodzakelijk zijn voor geautomatiseerde verwerking.
Overige gegevens
Dit zijn verzoekgegevens die niet gestructureerd hoeven te worden, en als label:value pair in het Verzoekobject worden opgeslagen. Denk aan vraag-antwoordcombinaties om tot een Specifiek Verzoekgegeven te komen. Voorbeeld: inkomsten per categorie vragen (overig), om tot een totaalbedrag te komen (specifiek).
Deze gegevens worden in het object geplaatst als additionalproperties
Best practices
Financiële verwerking van de transactie
De transactie moet boekhoudkundig op de juiste plek in de organisatie verwerkt worden. De complexiteit hiervan hangt van van de grootte van de organisatie.
ZAC relateert betaling met grootboek
In Rotterdam zorgt het zaakafhandelcomponent met een aanvullend bericht richting een journaalpostadapter voor de relatie tussen de betaling en de organisatorische afdeling die hoort bij de zaak die eruit volgt.
Meerdere rekeningnummers
In Den Haag is er een rekeningnummer per directie, waardoor routering bij voorbaat richting de juiste administratie plaatsvindt. Geaccepteerd wordt dat individuele betalingen niet herleidbaar zijn naar zaken. Wel wordt een uniek formulierID meegegeven aan de betaalprovider, waardoor de betaling achteraf te linken is aan de klant.
Vergezicht
Het aanvraagcomponent kan in de PDC zoeken naar het product om leges op te halen. Idealiter volgt ook een primaire afdeling, waardoor de relatie met de afdeling in het aanvraagcomponent al te maken is. Gewenst is om een specifiek kenmerk mee te geven aan de betaalprovider, zodat dit ook verwerkt kan worden in de transactiekenmerken die ook de klant leest op zijn of haar rekening.
Last updated