Anbindung von Online Diensten - Anbindung an den Plattformdienst Payment
Vorwort & Zielrahmen
Dieses Dokument soll dabei helfen, Bezahlmöglichkeiten in Online-Angebote des öffentlichen Dienstes zu integrieren. Dazu wird das technische Vorgehen für die Anbindung von Online-Diensten an den Plattformdienst Payment beschrieben und Hinweise für Testmöglichkeiten gegeben. Zielgruppe sind von Dataport entwickelte bzw. betriebene Online Dienste.
Dieses Dokument ist ein Best-Practice-Leitfaden zur Anbindung und ergänzt die technische Dokumentation: Plattformdienst Payment Anbindung
Die hier beschriebene Umsetzung basiert auf den vom Produktmanagement entwickelten Standard-ePayment-Use-Cases.
wichtige Begrifflichkeiten
Mandant / Zahlungsmandant
Im OSI Kontext wird der Begriff Mandant typischerweise als HH, SH, ST HB oder GO verstanden. Im Kontext des Payments ist ein Mandant ein Account der nutzenden Einheit (Kommune, Behörde) in der ePayBL. Im Plattformdienst Payment wird deshalb auch zur Verdeutlichung oftmals von Zahlungsmandanten gesprochen.
Bewirtschafter
Ein Bewirtschafter ist in der ePayBL eine organisatorische Einheit unterhalb der Mandanten. Jeder Online Dienst bekommt einen eigenen Bewirtschafter zur logischen Trennung.
Grundlagen
Die Kommunikation mit dem Plattformdienst Payment läuft über eine REST API. Es muss ein entsprechender HTTPS-Request gesendet und die Response verarbeitet werden. Es müssen die Statusinformationen aus den Aufrufen der returnURLs (Success, Error, Cancel, ggf. asyncSuccess) verarbeitet werden.
beteiligte Systeme & Akteure
Schaubild 1 - Von Dataport betriebener Online Dienst mit Zahlungsabwicklung über die ePayBL bei Dataport - vereinfachte Darstellung
Schaubild 2 -Von Dataport betriebener Online Dienst mit Zahlungsabwicklung über eine externe Bezahlplattform (EfA-Roll-Out) - vereinfachte Darstellung
Aufgaben beteiligter Systeme in Bezug auf die Bezahlabwicklung
Online Dienst
- Ermittlung der Gebühren für den Zahlungsvorgang
- Ermittlung von Payment Parametern wie Mandanten, Bewirtschafter, Buchungsdaten
- Nimmt die Rückmeldung zum Status von PD Payment entgegen und steuert daraufhin Folgeaktionen (z.B Dokumentenerzeugung oder Kommunikation an Fachverfahren)
PD Payment (Plattformdienst Payment)
- Prüfung Berechtigungen (z.B. ob der Online Dienst für den Zahlungsmandanten berechtigt ist)
- Routing des Zahlungsvorgangs anhand von Mandant & Bewirtschafter
- Weitergabe der erhaltenen Buchungsdaten
- Verwaltung der Webservice-Zertifikate zur Kommunikation mit der ePayBL / externen Bezahlplattform
ePayBL
- Freischaltung/Administration von Zahlungsarten am jeweiligen Mandanten
- Bereitstellung einer ePayBL-Paypage für den Nutzer zur Auswahl der Zahlungsart
- Erzeugung von XFinanz Dateien (Soll Buchung)
- Erzeugung von camt.054 Dateien (Ist Buchung, Summenauflösung Kreditkarte) anhand Daten von Zahlungsverkehrsprovider
- bei EfA-Roll-Out muss diese Aufgaben nicht unbedingt eine ePayBL übernehmen. Es gibt deutschlandweit noch andere Bezahlplattformen, die ähnlich funktionieren
ZVP (Zahlungsverkehrsprovider)
- Abwicklung der Zahlung mit dem Nutzer, d.h. ZVP bietet eine Oberfläche zur Erfassung der Zahlungsdaten, zieht die Gelder ein und schüttet es auf das von der Verwaltungseinheit hinterlegte Konto aus
- Rückmeldung des Zahlungsstatus an die ePayBL
- Übermittlung der Daten zur Erzeugung der camt.054 (Summenauflösung Kreditkarte) an die ePayBL
- Die Verwaltungseinheit benötigt zur Inanspruchnahme der Dienstleistung einen Vertrag mit dem ZVP
Standard ePayment-Use-Case
Der Standard ePayment-Use-Case basiert auf folgenden Grundsätzen
- Das Kassenzeichen wird in der Bezahlplattform (ePayBL) generiert und nicht im PD Payment. Es werden keine Kassenzeichen/Kassenzeichenbestandteile vom Online Dienst übergeben.
- Es wird Mandanten- und Bewirtschafterparametrisierung genutzt.
- Die für die Verbuchung relevanten Parameter werden durch den Online Dienst an den PD Payment übergeben.
Dieser Leitfaden basiert auf der Annahme, dass dieser Standard ePayment-Use-Case umgesetzt wird. Gleichzeitig ist durch den Standard ePayment-Use-Case sichergestellt, dass die aktuellen Standard Anforderungen hinsichtlich Payment abgedeckt sind.
Ablaufdiagramme
Ablauf Pre-Payment
Pre-Payment ist in der Regel der Standardprozess. Zum dem Zeitpunkt, wo der Online Dienst das Payment aufruft, steht der zu zahlende Betrag fest und wird an den PD Payment übermittelt.
Vereinfachte Darstellung, nur Success-Betrachtung
Voraussetzungen/ Startpunkt: Antrag im OD erfasst
nur beispielhafter OD Folgeprozess (z.B. ohne Verbindung OD zu Fachverfahren)
Ablauf Pre-Payment mit asycSucessUrl
Pre-Payment mit asycSucessUrl ist eine Erweiterung des Pre-Payment, Durch die zusätzliche asycSucessUrl können Zahlungen ohne Nutzeranwesenheit (z.B. weil der Nutzer zu früh den Browser schließt) erkannt und an den Online Dienst gemeldert werden.
Ablauf Post-Payment
Der zweistufige Post-Payment Prozess ist dadurch gekennzeichnet, dass zum dem Zeitpunkt, wo der Online Dienst das Payment aufruft, der zu zahlende Betrag noch nicht fest steht. Der Betrag wird typischerweise durch/nach einer Sachbearbeitung im Fachverfahren ermittelt und von dort ans Payment kommuniziert. Vorteil vom Post-Payment Prozess (zwei- und einstufig) ist, dass Dokumente im ServiceConnector hinterlegt werden können und automatisch nach erfolgreicher Bezahlung dem Nutzer ins Postfach übermittelt werden.
Zweistufiger Prozess Die Strecke Nutzer → ePayBL (Bezahlung) sind technisch gesehen drei Strecken, die über Weiterleitungen sich für den Nutzer wie eine anfühlt: Nutzer → ServiceConnector → PD Payment → ePayBL
Die Strecke ePayBL → ServiceConnector (erfolgreiche Zahlung) sind technisch gesehen zwei Strecken, die über Weiterleitungen sich für den Nutzer wie eine anfühlt: ePayBL → PD Payment → ServiceConnector
Ein paar erläuternde Hinweise zum Prozess:
- Der erste Block „Zahlungsvorgang anlegen“ ist der Ablauf vom Antrag des Nutzers im OD bis zur Übergabe an das Fachverfahren.
- Dann würde beispielsweise das Scannen der Bauakten und das Einstellen ins System erfolgen. Diese Schritte habe ich nicht in die Grafik übernommen (Übersichtlichkeit, ggf. fachverfahren-spezifisch).
- Der zweite Block „Zahlungsvorgang aktualisieren“ ist der dann folgende Ablauf wenn der Sachbearbeiter fertig ist bis zu einer Auflieferung der Dokumente an den Nutzer. Hier ist nur der Erfolgsfall festgehalten. Wenn also keine bzw. keine erfolgreiche Zahlung geschieht, dann geht der Prozess dort nicht weiter.
- Eventuelle Rückmeldungen zum Zahlungsvorgang ins Fachverfahren sind nicht aufgenommen (Übersichtlichkeit, ggf. fachverfahren-spezifisch), könnten aber ggf. erfolgen.
Prozess mit direkter Zahlungsauslösung
Die Strecke Nutzer → ePayBL (Bezahlung) sind technisch gesehen drei Strecken, die über Weiterleitungen sich für den Nutzer wie eine anfühlt: Nutzer → ServiceConnector → PD Payment → ePayBL
Die Strecke ePayBL → ServiceConnector (erfolgreiche Zahlung) sind technisch gesehen zwei Strecken, die über Weiterleitungen sich für den Nutzer wie eine anfühlt: ePayBL → PD Payment → ServiceConnector
Anbindung an dem Plattformdienst Payment
Allgemeine Voraussetzungen
.NET: Es wird Framework Version 2.3 benötigt (UI-Designer und ODControls.Core Version 2.3.77 oder höher). Bei Framework-Version kleiner 2.3 bitte Kontakt zur Beratung mit dem Produktmanagement Payment aufnehmen
AFM: Infrastruktur erfüllt die allgemeinen Voraussetzungen
Vorgehen
Das Vorgehen wird nachfolgend Schritt für Schritt erläutert. Für Testzwecke stellt Dataport einen eigenen ePayBL-Mandanten in der Stage-Umgebung zur Verfügung. Dieser kann gerne genutzt werden.
Für eine reibungslose Integration wird die Integration in folgenden Schritten empfohlen:
In diesem und in verlinkten Dokumenten werden die Begriffe "Stage", "Stage-Umgebung", "Stage-System" und "Test-Umgebung" bedeutungsgleich genutzt. D.h. die Begriffe meinen dasselbe. Dies ist historisch entstanden, weil Dokumentationen teils für verschiedene Zielgruppen oder von verschiedenen Abteilungen erstellt wurden.
Dasselbe gilt für die Begriffe "Live", "Live-Umgebung", "Produktion" und "Produktionsumgebung", die untereinander austauschbar sind.
Allgemeine Informationen zur Schnittstelle
Für parametrisiertes Payment nach dem Standard ePayment-Use-Case notwendige Werte
Pflichtfelder aus fachlicher Sicht:
Parameter PD Payment REST API | Beschreibung | Name des Feldes in AFM | Name des Feldes in .NET |
---|---|---|---|
consumer | Online Dienst Kürzel, OD-IS Short Name | (wird durch das Framework gesetzt) | |
paymentIdentifier | Identifier des Zahlungsmandanten, im Standard ePayment-Use-Case ist dies immer die ePayBL-Mandantennummer | Mandant | |
bewirtschafter | ePayBL-Bewirtschafter, je Online Dienst gibt es typischerweise einen eigenen Bewirtschafter | Bewirtschafter | |
haushaltsstelle | Haushaltsstelle (oder Doppik: Produktkonto) für die Verbuchung, dieser Wert muss im ePayBL Bewirtschafter freigeben/konfiguriert sein | Haushaltsstelle | |
objektnummer | Objektnummer (oder Doppik: Sachkonto) für die Verbuchung, dieser Wert muss im ePayBL Bewirtschafter freigeben/konfiguriert sein | Objektnummer |
Länderspezifische Pflichtfelder aus fachlicher Sicht:
Für die Referenz-Online-Dienste des Landes Schleswig-Holstein sind kostenstelle und hkrmantencode im Abschnitt additionalBookingData als Key-Value Paare zu übergeben.
"additionalBookingData": {
"kostenstelle": "4711.001",
"hkrmandantencode": "08"
}
zudem empfohlen:
Parameter PD Payment REST API | Beschreibung | Name des Feldes in AFM | Name des Feldes in .NET |
---|---|---|---|
summary | Buchungstext der Payment Transaction (wird an HKR System/SAP/Kasse übergeben) | ||
description | Beschreibung des Vorgangs zur Verwendung auf der Paypage (wird dem Nutzer angezeigt) | ||
Nicht benötigte Parameter:
Parameter PD Payment REST API | Beschreibung | Name des Feldes in AFM | Name des Feldes in .NET |
---|---|---|---|
accountNo | AccountNo | ||
sapNo | Die sapNo wird Bestandteil des Kassenzeichen, sofern das Kassenzeichen im PD Payment generiert wird | (nicht vorhanden) | |
suffix | Die sapNo wird Bestandteil des Kassenzeichen, sofern das Kassenzeichen im PD Payment generiert wird | Suffix | |
(nicht implementiert) | Kassenzeichen | ||
(nicht implementiert) | Gemeindekennziffer |
Parametrisierung
anhand der Werte des Dataport Testaccounts. Mit Hilfe der Parametrisierung können, aus dem Online Dienst gesteuert, verschiedene Zahlungsmandanten und unterschiedliche Kontierungen angesprochen werden. So arbeiten Dienste, die in mehreren Kommunen genutzt werden oder EfA-Dienste
Mandantenummern und Bewirtschafternummer
Die Mandanten bekommen für den tatsächlichen Betrieb die jeweiligen Mandantenummern und Bewirtschafternummer der Behörden, Kreise & Kommunen. Zum allgemeinen Test haben wir folgenden Mandanten in Code-010, Code-002 und Stage Umgebung:
PD-Payment Parameter | weitere Bezeichnungen | Wert |
---|---|---|
paymentIdentifier | Mandant, Mandantennummer | DPEFA1 |
Bewirtschafter | Bewirtschafternummer | TST |
paymentIdentifier (Mandant) und Bewirtschafter sind case-sensitiv.
Kontierungsinformationen
Als Haushaltsstelle und Objektnummer (Produkt- und Sachkonto) sind mehrere Kombinationen zum Test eingerichtet. Verwendbar sind:
Kombination | Haushaltsstelle | Objektnummer |
---|---|---|
#1 | 1000 | 1000 |
#2 | 1000 | 2000 |
#3 | 2000 | (leer/null) |
Testdaten für Kreditkarte, Giropay und Lastschrift im Testaccount
Am Mandanten haben wir unseren Dataport Girocheckout Testaccount hinterlegt, so dass auch Zahlungen simuliert werden können.
Testdaten vom Girocheckout:
- Kreditkarte https://api.girocheckout.de/girocheckout:testdata#kreditkarte
- Giropay https://api.girocheckout.de/girocheckout:testdata#giropay
- Lastschrift: https://api.girocheckout.de/girocheckout:testdata#lastschrift
Weitere Zahlungsarten sind nicht konfiguriert. Es werden Zahlungen simuliert, d.h. es fließt kein echtes Geld. Bitte auf keinen Fall echte Bank- oder Kreditkartendaten in Testumgebungen eingeben.
Kassenzeichen
Das Kassenzeichen wird in der ePayBL generiert und startet mit einem Präfix „DPEFA“ und einer fortlaufenden Nummer. Es ist bei diesem Testmandanten 22 Zeichen lang.
Testmöglichkeiten in den Code-Umgebungen
allgemeine Testmöglichkeiten / allgemeine Dienst- und Zahlungsmandantenkonfiguration
In der Code-010 und Code-002 gibt es bei SH, ST, HH und GO allgemeine Testmöglichkeiten.
Online Dienst
Test Online Dienst | |
---|---|
consumer | DPTESTDIENST |
Bei .NET wird im Standard der consumer über Framework-Funktionalität auf den Short Name des Dienstes gesetzt. In diesem Fall bitte mit dem Produktmanagement Payment Kontakt aufnehmen zwecks Einrichtung des konkreten Dienstes anhand des Short Name.
verknüpfte Zahlungsmandanten
XBezahldienste Schnittstelle (in der Kommunikation zur ePayBL) | native ePayBL Schnittstelle (in der Kommunikation zur ePayBL) | |
---|---|---|
consumer | DPTESTDIENST | DPTESTDIENST |
paymentIdentifier | DPEFA1 | DPTEST1 |
bewirtschafter | TST | TST |
haushaltsstelle | 1000 | 1000 |
objektnummer | 2000 | 2000 |
Die XBezahldienste Schnittstelle ist Mindestanforderung für alle EfA Dienst und perspektivisch Standard für alle Dienste. Die native ePayBL Schnittstelle ist eine proprietäre Schnittstelle, die bei Bestandsdienst im Einsatz ist. Funktional sollte es keine Unterschiede geben. Im Zweifelsfall ist für Neuentwicklungen die XBezahldienste Schnittstelle zu wählen.
individueller Konfigurationen von Diensten und Zahlungsmandanten
InCode-010 und Code-002 werden normalerweise keine individuellen Dienste eingerichtet. Ebenso keine Zahlungsmandanten von Kommunen oder Behörden.
Testmöglichkeiten & Einrichtung des Online Dienstes in Stage
allgemeine Testmöglichkeiten / allgemeine Dienst- und Zahlungsmandantenkonfiguration
In der Stage Umgebung gibt es bei SH, ST, HH und GO ebenso allgemeine Testmöglichkeiten.
Online Dienst
Test Online Dienst | |
---|---|
consumer | DPTESTDIENST |
verknüpfte Zahlungsmandanten
XBezahldienste Schnittstelle (in der Kommunikation zur ePayBL) | native ePayBL Schnittstelle (in der Kommunikation zur ePayBL) | |
---|---|---|
consumer | DPTESTDIENST | DPTESTDIENST |
paymentIdentifier | DPEFA1 | DPTEST1 |
bewirtschafter | TST | TST |
haushaltsstelle | 1000 | 1000 |
objektnummer | 2000 | 2000 |
Die XBezahldienste Schnittstelle ist Mindestanforderung für alle EfA Dienst und perspektivisch Standard für alle Dienste. Die native ePayBL Schnittstelle ist eine proprietäre Schnittstelle, die bei Bestandsdienst im Einsatz ist. Funktional sollte es keine Unterschiede geben. Im Zweifelsfall ist für Neuentwicklungen die XBezahldienste Schnittstelle zu wählen.
individueller Konfigurationen von Diensten und Zahlungsmandanten
In Stage besteht zudem der Anspruch jeden Dienst individuell und möglichst produktionsnah einzurichten. Für die Freischaltung und Konfiguration eures Online Dienstes meldet euch bitte bei unserem Funktionspostfach "Dataport ePayment".
Im ersten Schritt wird für den Online Dienst immer die beiden o.g.
Die Einrichtung von einem PD Payment Zahlungsmandanten (und ggf. einem ePayBL-Mandanten und -Bewirtschafter) für eine Kommune/Behörde erfolgt durch die jeweilige nutzende Verwaltungseinheit über das OSI Service Desk: ePayment - OSI Service Desk
Trusted Sytems für den Testdienst in Code-002, Code-010 und Stage
Trusted System Identifier und Trusted System Key werden zur Authentifizierung des Online Dienstes im PD Payment benötigt. I.d.R werden die Werte bei .NET im Octopus hinterlegt und zur Build-Zeit angezogen/eingebunden
Trusted System Identifier
urn:dataport:osi:dptestdienst:{umgebung}:{osi-mandant}
umgebung (mögliche werte)
- code010
- code002
- stage
osi-mandant (mögliche Werte)
- sh
- st
- hh
- go
Am Beispiel Code-002 + SH:
urn:dataport:osi:dptestdienst:code002:sh
Trusted System Key
- code010, alle OSI-Mandanten=3CD97D5D06FC42F89808B11DAEE709D5
- code002, alle OSI-Mandanten=A495BB7E8FA34B1DAF832ED1C2A455FB
- stage, alle OSI-Mandanten=0359830080C84646B5A8966711CF0D45
Sicherheitshinweis
Produktive TrustestSystemKey dürfen niemals unverschlüsselt gespeichert oder übertragen werden!
Einrichtung des Online Dienstes in Prod
Die Freigabe zur Einrichtung von einem PD Payment Zahlungsmandanten (und ggf. einem ePayBL-Mandanten und -Bewirtschafter) erfolgt durch die nutzende Verwaltungseinheit über das Ticket im OSI Service Desk.
Die Einrichtung von einem PD Payment Online Dienst erfolgt - nach erfolgreichem Stage-Test - beim Payment-Team über das FuPo "Dataport ePayment".
Die Konfigurationen in Prod und Stage sind stets synchron zu halten.
typische Fragen und Fehlermeldungen
Fehlermeldung bzw. Frage | Beschreibung / typische Lösung bzw. Antwort |
---|---|
Trusted system urn:dataport:osi:serviceconnector:shs (tenant SH) not found. | Kein oder ein falsches Trusted System mitgesendet. Oder: Falsches Trusted System zum Online Dienst konfiguriert / nicht freigeschalter. |
Invalid API key for trusted system urn:dataport:osi:serviceconnector:sh (tenant SH). | Kein oder ein falsches Trusted System Key ("apiKey") mitgesendet. |
Consumer ADD2 for trusted system urn:dataport:osi:serviceconnector:sh (tenant SH) not found. | Kein entsprechender Online Dienst in PD Payment hinterlegt bzw. falscher Consumer gesendet |
Wo kann ich individuelle Buchungsparameter (kostenstelle, hkrmandantencode, kontierungscode o.ä.) übergeben? | Für solche spezifischen Buchungsparameter ist "additionalBookingData" vorgesehen. Für die beiden Parameter kostenstelle und hkrmandantencode würde es beispielsweise also so aussehen: "additionalBookingData": |
Muss ich den ARS oder die OrgID aus dem PD ZuFi Service (Jesaja) an dem Plattformdienst Payment übergeben? | nein |
Das Feld "transactionNo" ist nicht gefüllt / null. | Die Transaktionsnummer wird nach dem Durchführen des Payments gesetzt. D.h. beim Einstellen des Zahlungsvorgangs ist der Wert noch null. Bei der Statusabfrage nach Aufruf der Success-URL sollte mit einem sinnvollen Wert (Kassenzeichen) gefüllt sein. Es gab zudem einen Bug (Bug 251946), dass das Mapping nicht funktioniert. Lösung: es ist leider so, dass die ODs (Online-Dienste) die ODFramework.Core-Pakete updaten müssen. Das muss ein Entwickler im Visual Studio erledigen. Anschließend muss der OD neu deployed und getestet werden. |
Backlog
Themen, die noch näher beschrieben werden müssen
- Besonderheiten EfA Rollout
- Umgang mit den Status (success, error, cancel)
Feedback erwünscht
Im Falle von Fehler und auch zur allgemeinen Nutzung dieser Dokumentation freuen wir uns ausdrücklich über Feedback an das Dataport Produktmanagement Payment. Bitte nutzen Sie dazu unser Funktionspostfach "Dataport ePayment".