Integration
Grundlagen
FAQ
eps
giropay
iDEAL
Kreditkarte
Lastschrift
Bluecode
Maestro
Payment Page
PayPal
Tools
Fehlernummern
Ergebniscode
Testdaten
Grundlagen
FAQ
eps
giropay
iDEAL
Kreditkarte
Lastschrift
Bluecode
Maestro
Payment Page
PayPal
Tools
Fehlernummern
Ergebniscode
Testdaten
Für die Anmeldung auf https://sandbox.paydirekt.de/checkout/#/checkout, um eine Testtransaktion zu autorisieren:
Benutzer Einschränkung | Benutzername | Passwort |
---|---|---|
Standard Käufer | TESTGiroSolution_SDE-Kaeufer | SDE-Kaeufer2$ |
Alter - Käufer unter 18 Jahren | TESTGiroSolution_unterAchtzehn | unterAchtzehn2$ |
Käufer bei paydirekt gesperrt | KaeuferGesperrt | KaeuferGesperrt2$ |
Käufer bei der Käuferbank gesperrt | TESTGiroSolution_SperreKB | SperreKB2$ |
Man beachte folgende Testfälle:
2FA = Second Factor (Authentifizierung über zweiten Kanal)
Nicht alle der oben aufgeführten 2FA-Verfahren sind mit jedem Test-Account nutzbar und können zu Abbrüchen der Zahlung führen. Grundsätzlich gilt, dass sich aus diesen Test-Beträgen keine sinnvollen Testfälle für Händler ableiten lassen (da diese Prozesse rein auf paydirekt Seite ablaufen).
Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitungslink (redirect) an den Händler übermittelt. Der übermittelte Link führt zum Bezahlformular. Der Kunde muss an diese URL weitergeleitet werden. Dies kann durch einen HTTP-Redirect-Header, eine HTML-Seite mit entsprechendem Meta-Tag oder Javascript erfolgen.
Bereitzustellen von: GiroCheckout
Aufzurufen von: Händler
Eine Reservierung ist zu verwenden, wenn die Erfüllung eines Auftrages zu einem späteren Zeitpunkt erfolgt, zum Zeitpunkt der Bestellung aber der Bestellwert für die vom Kunden vorgelegte Karte genehmigt werden soll (bei Kreditkarten-Transaktionen) bzw. die angegebene Bankverbindung geprüft werden soll (z.B. bei Paydirekt). Nach Ablauf dieses Zeitraumes wird die Reservierung entweder gebucht oder storniert.
Verkauf ist zu verwenden, wenn der Geschäftsvorgang abgeschlossen ist, also z. B. ein Warenkorb angeboten, bestellt und an den Kunden ausgeliefert wurde. Das Zahlungsmittel des Kunden wird in Höhe des Betrags belastet.
URL: https://payment.girosolution.de/girocheckout/api/v2/transaction/start
Name | Pflicht | Type | Beschreibung | |
---|---|---|---|---|
AUTH | SALE | |||
merchantId | Ja | Ja | Integer | Händler-ID eines Paydirekt-Projekts |
projectId | Ja | Ja | Integer | Projekt-ID eines Paydirekt-Projekts |
merchantTxId | Ja | Ja | String(255) | eindeutige Transaktions-ID des Händlers. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # / |
amount | Ja | Ja | Integer | Zwischen 1 und 5000000 (also min. 1 Cent, max. 50000 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
currency | Ja | Ja | String(3) | Währung der Transaktion, gemäß ISO 4217. EUR = Euro |
purpose | Ja | Ja | String(37) | Verwendungszweck der Transaktion. Diese Information erscheint auf der Abrechnung. |
type | Ja | Optional | String(4) | Transaktionsart (siehe Transaktionsarten) SALE = Verkauf wird sofort gebucht (default) AUTH = Reservierung des Betrags |
securedAuth | Optional | (nicht sinnvoll) | Integer | Erlaubt das Anlegen einer gesicherten Vorbestellung. Diese Einstellung macht nur Sinn, wenn type=AUTH ist und wird ansonsten ignoriert. 1 = gesicherte Vorbestellung anlegen, 0 = Normale Vorbestellung/Reservierung (default). Zu einer gesicherten Vorbestellung oder Bestellung mit Teilzahlungen können direkt im Anschluss oder später ein oder mehrere Buchungen angestoßen werden (Teilzahungen oder vollständig). Für eine gesicherte Vorbestellung wird eine Zahlungsgarantie für den gewählten Zeitraum (s. securedAuthUntil, maximal 15 Kalendertage) an den Händler ausgesprochen. Captures (Buchungen/Teilzahlungen) werden innerhalb des Garantiezeitraums immer ausgeführt. |
securedAuthUntil | Optional | (nicht sinnvoll) | String(10) | Endedatum für die gesicherte Vorbestellung, d.h. das Datum bis wann diese maximal gilt. Zulässig ist hier ein Datum, das maximal 15 Kalendertage in der Zukunft liegt. Format: JJJJ-MM-TT. Diese Einstellung macht nur Sinn, wenn type=AUTH ist und securedAuth=1. |
shoppingCartType | Optional | Optional | String(19) | Typ des Warenkorbs. Folgende Werte sind zulässig: PHYSICAL = Alle Waren im Warenkorb sind physischer Natur (dies ist der Default-Wert, wenn der Parameter nicht angegeben wird), DIGITAL = Alle Waren im Warenkorb sind digitaler Natur (benötigen also keinen Versand), MIXED = Der Warenkorb enthält sowohl physische als auch digitale Waren, ANONYMOUS_DONATION = Es handelt sich um eine anonyme Spende (keine Adressdaten notwendig), AUTHORITIES_PAYMENT = Es handelt sich um eine Behördenzahlung (keine Adressdaten notwendig) |
customerId | Optional | Optional | String(20) | Kundennummer, max. Länge: 20 |
shippingAmount | Optional | Optional | Integer | Versandkosten, zwischen 0 und 5000000 (also min. 0,00 EUR, max. 50000,00 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
shippingAddresseFirstName | (s. Beschr.) | (s. Beschr.) | String(100) | Vorname des Addressaten, Pflicht bei Warenkorbtypen PHYSICAL, DIGITAL und MIXED, optional bei ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen: Alle Buchstaben (UTF-8, auch ausländisch), 0-9, die Zeichen .-!#$%&'*+/=?^_’`´{|}~"(),:;<>@[] , außerdem Leerzeichen und Zeilenumbruch. |
shippingAddresseLastName | (s. Beschr.) | (s. Beschr.) | String(100) | Nachname des Addressaten, Pflicht bei Warenkorbtypen PHYSICAL, DIGITAL und MIXED, optional bei ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen s. shippingAddresseLastName. |
shippingCompany | Optional | Optional | String(100) | Firmenname. Zulässige Zeichen s. shippingAddresseLastName. |
shippingAdditionalAddressInformation | Optional | Optional | String(100) | Addresszusatz. Zulässige Zeichen s. shippingAddresseLastName. |
shippingStreet | Optional | Optional | String(100) | Straße des Addressaten. Zulässige Zeichen s. shippingAddresseLastName. |
shippingStreetNumber | Optional | Optional | String(10) | Hausnummer des Addressaten. Zulässige Zeichen s. shippingAddresseLastName. |
shippingZipCode | (s. Beschr.) | (s. Beschr.) | String(10) | PLZ des Addressaten. Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen s. shippingAddresseLastName. |
shippingCity | (s. Beschr.) | (s. Beschr.) | String(100) | Ort des Addressaten. Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen s. shippingAddresseLastName. |
shippingCountry | (s. Beschr.) | (s. Beschr.) | String(2) | Ländercode (ISO 3166-1). Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. |
shippingEmail | (s. Beschr.) | (s. Beschr.) | String(255) | Email-Adresse des Käufers. Dies ist Pflicht bei digitalen Warenkörben (DIGITAL), bei allen anderen optional. |
merchantReconciliationReferenceNumber | Optional | String(30) | Zusatzinformation für die Zahlungszuordnung, die im Verwendungszweck angezeigt wird (nur bei type=SALE) | |
orderAmount | Optional | Optional | Integer | Betrag der Bestellung (ohne Versandkosten), zwischen 1 und 5000000 (also min. 1 Cent, max. 50000 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
orderId | Ja | Ja | String(20) | Bestellnummer, zulässige Zeichen: A-Z a-z 0-9 + ? / - : ( ) . , ' (KEINE Blanks) |
cart | Optional | Optional | JSON String | alle Elemente des Warenkorbs im folgenden Format: cart |
invoiceId | Optional | Optional | String(20) | Rechnungsnummer, maximale Länge: 20 |
customerMail | Optional | Optional | String(255) | E-Mail des Kunden |
minimumAge | Optional | Optional | Integer | Mindestalter, das der Käufer erreicht haben muss |
urlRedirect | Ja | Ja | String(2048) | URL, an die der Kunde nach der Zahlung weitergeleitet werden soll. |
urlNotify | Ja | Ja | String(2048) | URL, an die der Zahlungsausgang gemeldet werden soll. |
kassenzeichen | Optional | Optional | String(255) | Optionales Feld für die Übergabe eines Kassenzeichens. Dieses wird dann im GiroCockpit in den Transaktionsdetails angezeigt (und bald auch exportiert) und es kann dort auch danach gesucht werden. Zulässige Zeichen sind alle UTF-8-Zeichen. |
hash | Ja | Ja | String(32) | HMAC MD5 Hash über alle Werte des Aufrufs. Siehe hash generieren |
curl -d "merchantId=1234567" \ -d "projectId=1234" \ -d "merchantTxId=1234567890" \ -d "amount=10000" \ -d "currency=EUR" \ -d "purpose=Beispieltransaktion" \ -d "type=SALE" \ -d "shoppingCartType=PHYSICAL" \ -d "customerId=1234567" \ -d "shippingAmount=500" \ -d "shippingAddresseFirstName=Otto" \ -d "shippingAddresseLastName=Mustermann" \ -d "shippingZipCode=12345" \ -d "shippingCity=Frankfurt" \ -d "shippingCountry=DE" \ -d "merchantReconciliationReferenceNumber=1234567890" \ -d "orderAmount=9500" \ -d "orderId=123456789" \ -d 'cart=[{"name":"Bobbycar","ean":"800001303","quantity":1,"grossAmount":9500}]' \ -d "invoiceId=9876543" \ -d "urlRedirect=http://www.my-domain.de/girocheckout/redirect" \ -d "urlNotify=http://www.my-domain.de/girocheckout/notify" \ -d "hash=d74e7cb6e5bd4eeacc63ff3d5ab53af2" \ https://payment.girosolution.de/girocheckout/api/v2/transaction/start
JSON Array mit item Objekten
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
name | Ja | String(100) | Artikelname |
ean | Optional | String(100) | Die Internationale Artikel Nummer (EAN bzw. GTIN) |
quantity | Ja | Integer | Menge des Artikels (Ganzzahl) |
grossAmount | Optional | Integer | Brutto- und Einzelbetrag des Artikels (also Preis pro Stück, bei mehreren), bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
[ { "name" : "Bobbycar", "ean" : "800001303", "quantity" : 3, "grossAmount" : 2599 }, { "name" : "Helm", "quantity" : 1, "grossAmount" : 1853 } ]
Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, wurde die Transaktion erfolgreich initialisiert. Sie bekommen als Antwort eine Transaktionsnummer und die redirectURL zur Paydirekt-Bezahlungsseite zurück.
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
rc | Ja | Integer | Fehlernummer |
msg | Ja | String(255) | zusätzliche Informationen im Fehlerfall |
reference | Optional | String(36) | eindeutige GiroCheckout Transaktions-ID |
redirect | Optional | String(2048) | Redirect URL zur Weiterleitung des Kunden an Paydirekt |
HEADER Parameter | |||
hash | Ja | String(32) | HMAC MD5 Hash über alle Werte der Rückmeldung. Siehe hash der Rückantwort |
hash : ad1e0df28e2797a39c05ca08be654ef2
{"reference":"dd724940-5e86-4072-8442-2c2ba2aebc79","redirect":"https://sandbox.paydirekt.de/checkout/#/checkout/016edd33-6181-4392-9dff-5ee80dfb119a","rc":"0","msg":""}
hash : f55ce87e132ebb7eb20004c6b186ce09
{"reference":null,"redirect":null,"rc":5030,"msg":"Betrag ungültig"}
Der Ausgang einer Zahlung wird an die im urlNotify Parameter angegebene URL übermittelt. Diese Rückmeldung dient dazu, dem Händler den Ausgang der Transaktion mitzuteilen. Durch diese Information kann der Transaktionsstatus beim Händler geändert werden.
Der Zahlungsausgang einer Transaktion steht im Feld gcResultPayment.
URL: notifyUrl aus der Transaktionsinitialisierung
Bereitzustellen von: Händler
Aufzurufen von: GiroCheckout
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
gcReference | Ja | String(36) | GiroCheckout Transaktions-ID |
gcMerchantTxId | Ja | String(255) | Händler Transaktions-ID |
gcBackendTxId | Ja | String(36) | Zahlungsabwickler Transaktions-ID |
gcAmount | Ja | Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
gcCurrency | Ja | String(3) | Währung |
gcResultPayment | Ja | Integer | Ergebniscodes der Zahlung |
gcHash | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
Als Antwort auf den GET-Request wird einer der folgenden HTTP Statuscodes erwartet.
HTTP Statuscode | Beschreibung |
---|---|
200 (OK) | Die Benachrichtigung wurde korrekt verarbeitet. |
400 (Bad Request) | Der Händler hat die Benachrichtigung nicht verarbeitet, möchte aber auch nicht erneut benachrichtigt werden. |
Alle anderen | Die Benachrichtigung wird max. 10 Mal alle 30 Minuten wiederholt, bis der Händler den HTTP Statuscode 200 oder 400 zurückgibt. |
Nach Beendigung der Zahlung kann der Kunde über einen Link zurück zum Händler kommen. Eine Weiterleitung erfolgt erst, wenn der Käufer den „Abbrechen“ oder „Zurück zum Shop“ Button drückt. Diese Rückleitung erfolgt nicht automatisch.
URL: redirectUrl aus der Transaktionsinitialisierung
Bereitzustellen von: Händler
Aufzurufen von: GiroCheckout
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
gcReference | Ja | String(36) | GiroCheckout Transaktions-ID |
gcMerchantTxId | Ja | String(255) | Händler Transaktions-ID |
gcBackendTxId | Ja | String(36) | Zahlungsabwickler Transaktions-ID |
gcAmount | Ja | Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
gcCurrency | Ja | String(3) | Währung |
gcResultPayment | Ja | Integer | Ergebnis der Zahlung |
gcHash | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
Diese Transaktionen verweisen (referenzieren) auf eine zuvor erfolgte Transaktion. Die Transaktion basiert auf einer Server-zu-Server-Kommunikation und erfordert keine Kundenaktion (Eingabe von Daten).
Bereitzustellen von: GiroCheckout
Aufzurufen von: Händler
Beim Buchen (capture) wird das Kundenkonto mit einem Betrag belastet, die Gutschrift erfolgt auf das Händlerkonto. Dieses Modell setzt voraus, dass der zugrundeliegende Geschäftsvorfall abgeschlossen ist, z.B. wurde ein Warenkorb angeboten, bestellt und an den Kunden ausgeliefert.
Eine Erstattung ist zu verwenden, wenn dem Kunden eine vorangegangene Zahlung komplett oder teilweise erstattet werden soll.
URL CAPTURE: https://payment.girosolution.de/girocheckout/api/v2/transaction/capture
URL REFUND: https://payment.girosolution.de/girocheckout/api/v2/transaction/refund
Name | Pflicht | Type | Beschreibung | |
---|---|---|---|---|
CAPTURE | REFUND | |||
merchantId | Ja | Ja | Integer | Händler-ID eines Paydirekt-Projekts |
projectId | Ja | Ja | Integer | Projekt-ID eines Paydirekt-Projekts |
merchantTxId | Ja | Ja | String(255) | Eindeutige Transaktions-ID des Händlers. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # / |
amount | Ja | Ja | Integer | Betrag oder Teilbetrag, zwischen 1 und 5000000 (also min. 1 Cent, max. 50000 EUR), bei Refund zwischen 1 und 10000000 (max. 100000 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
currency | Ja | Ja | String(3) | Währung der Transaktion, gemäß ISO 4217. EUR = Euro |
purpose | Ja | Ja | String(37) | Verwendungszweck der Transaktion. Diese Information erscheint auf der Abrechnung. |
reference | Ja | Ja | String(36) | GiroCheckout Transaktions-ID der zugrundeliegenden AUTH-Transaktion. |
merchantReconciliationReferenceNumber | Optional | Optional | String(30) | Zusatzinformation für die Zahlungszuordnung, die im Verwendungszweck angezeigt wird. |
final | Optional | Boolean | NUR CAPTURE. Letzter CAPTURE auf eine Reservierung. Danach kann auf die referenzierte Reservierung kein weiterer CAPTURE mehr erstellt werden. | |
kassenzeichen | Optional | String(255) | NUR CAPTURE. Optionales Feld für die Übergabe eines Kassenzeichens. Dieses wird dann im GiroCockpit in den Transaktionsdetails angezeigt (und bald auch exportiert) und es kann dort auch danach gesucht werden. | |
hash | Ja | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
curl -d "merchantId=1234567" \ -d "projectId=1234" \ -d "merchantTxId=1234567890" \ -d "amount=10000" \ -d "currency=EUR" \ -d "purpose=Beispiel-Capture" \ -d "reference=dd724940-5e86-4072-8442-2c2ba2aebc79" \ -d "final=true" \ -d "hash=e4e57b71b094d7fa197374f4fbdd4ca9" \ https://payment.girosolution.de/girocheckout/api/v2/transaction/capture
Die Antwort besteht aus einem JSON Objekt. Das Feld resultPayment liefert einen Fehlercode zurück. Wird resultPayment = 4000 zurückgeliefert, wurde die Transaktion erfolgreich durchgeführt. Sie bekommen als Antwort eine Transaktionsnummer zurück.
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
rc | Ja | Integer | Antwortcode |
msg | Ja | String(255) | zusätzliche Informationen im Fehlerfall |
reference | Ja | String(36) | GiroCheckout Transaktions-ID |
merchantTxId | Ja | String(255) | Händler Transaktions-ID |
backendTxId | Ja | String(36) | Zahlungsabwickler Transaktions-ID |
amount | Ja | Integer | Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent |
currency | Ja | String(3) | Währung |
resultPayment | Ja | Integer | Ergebnis der Zahlung |
hash | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
hash : 36dc1f4622d0c1260fe5da76fe83fbd3
{"reference":"ehd82947-5e86-4072-8442-2c2ba2ae74a","referenceParent":null,"merchantTxId":"123456","backendTxId":"5720d913a1338","amount":"100","currency":"EUR","resultPayment":4000,"rc":0,"msg":""}
hash : c7dcb2d7d5e6719c6a51d81705bfc3af
{"reference":null,"rc":5030,"msg":"Betrag ungültig"}
Stornieren ist zu verwenden, wenn eine akzeptierte Transaktion nicht ausgeführt werden soll.
URL VOID: https://payment.girosolution.de/girocheckout/api/v2/transaction/void
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
merchantId | Ja | Integer | Händler-ID eines Paydirekt-Projekts |
projectId | Ja | Integer | Projekt-ID eines Paydirekt-Projekts |
merchantTxId | Ja | String(255) | eindeutige Transaktions-ID des Händlers. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # / |
reference | Ja | String(36) | GiroCheckout Transaktions-ID, für die eine Stornierung durchgeführt werden soll |
hash | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
curl -d "merchantId=1234567" \ -d "projectId=1234" \ -d "merchantTxId=1234567890" \ -d "reference=fb70602d-c137-4413-8432-7dcc69a9d891" \ -d "hash=edb7459114db25c2991d1783d4ab5388" \ https://payment.girosolution.de/girocheckout/api/v2/transaction/void
Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, wurde die Transaktion erfolgreich initialisiert. Sie bekommen als Antwort eine Transaktionsnummer und weitere Informationen zurück.
Name | Pflicht | Type | Beschreibung |
---|---|---|---|
rc | Ja | Integer | Fehlernummer |
msg | Ja | String(255) | zusätzliche Informationen im Fehlerfall |
reference | Ja | String(36) | GiroCheckout Transaktions-ID |
referenceParent | Ja | String(36) | GiroCheckout Transaktions-ID der zugrundeliegenden Ursprungstransaktion |
merchantTxId | Ja | String(255) | Händler Transaktions-ID |
backendTxId | Ja | String(36) | Zahlungsabwickler Transaktions-ID |
amount | Ja | Integer | Stornierter Betrag, bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
currency | Ja | String(3) | Währung |
resultPayment | Ja | Integer | Ergebnis der Transaktion |
hash | Ja | String(32) | HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren |
{"reference":"ef27303f-87b3-465e-9c39-fabfb749d253","referenceParent":"5a101478-df14-4a79-86af-f743784c2c24","merchantTxId":"58e39be91fce8","backendTxId":"1226723_01","amount":"100","currency":"EUR","resultPayment":"4000","rc":0,"msg":""}
{"reference":null,"referenceParent":null,"merchantTxId":null,"backendTxId":null,"amount":null,"currency":null,"resultPayment":null,"rc":5200,"msg":"Transaktion nicht akzeptiert"}