Benutzer-Werkzeuge

Webseiten-Werkzeuge


Übersetzungen dieser Seite:
girocheckout:creditcard_3ds2:start

Kreditkarte 3D Secure 2.0

Dies ist die künftige Version der Kreditkarten-API, die die neuen Felder für 3D Secure 2.0 enthält. Diese API steht noch nicht auf dem Server zur Verfügung! Diese Dokumentation ist lediglich eine Vorab-Info der bald verfügbaren API.

Betroffen sind vor allem die Felder, deren Namen mit "tds2" beginnen, s. Transaktionsinitialisierung weiter unten.

Die Parameter bzgl. 3-D Secure 2.0 können sich aufgrund von Änderungen der EMVCo 3-D Secure-Spezifikation ändern.

Testdaten

Formularfeld Eingabewert
Visa 4111111111111111
Kartenprüfnummer (CVC2/CVV) beliebige 3-stellige Zahl (wird nicht geprüft)
Gültigkeitsdatum beliebiges, in der Zukunft liegendes, Datum

Transaktionsausgang

ResultCode Antwortcode Hinweis
4000 erfolgreiche Transaktion Nach Eingabe der oben genannten Daten und Berücksichtigung folgender Informationen erfolgt eine erfolgreiche Transaktion:
Ganzzahliger Betrag zwischen 1,00 und 99,00
4502 abgebrochene Transaktion Eine abgebrochene Transaktion wird nach drücken des Buttons Abbrechen ausgelöst.

3D Secure 2.0

Fall Kartennummer
Ohne Autorisierung durch den Kunden 4012001037167778
Mit Autorisierung durch den Kunden 4012001037664444
Mit 3DS Method 4005559876540
Mit 3DS Method und Autorisierung durch den Kunden 4012001036853337

Karteninhaber: beliebig
Kartenprüfnummer (CVC2/CVV): beliebige 3-stellige Zahl (wird nicht geprüft)
Gültigkeitsdatum: beliebiges, in der Zukunft liegendes, Datum

Transaktionstypen

Detaillierte Informationen zu den Transaktionstypen.

Reservierung (AUTH)

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.

  • initiale Transaktion

PlantUML Graph

Verkauf (SALE)

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.

  • initiale Transaktion

PlantUML Graph

Initialisierung einer Kreditkartenzahlung

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

Workflow

PlantUML Graph

  1. Käufer wählt Zahlart Kreditkarte aus
  2. Shop initiiert Kreditkartentransaktion (Initialisierung)
  3. GiroCheckout initialisiert Transaktion bei Kreditkartenabwickler
  4. Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout
  5. Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet)
  6. Shop sendet Redirect URL an Kundenbrowser
  7. Kundenbrowser leitet zum Kreditkartenabwickler weiter
  8. Kreditkartenabwickler zeigt Zahlformular an
  9. Kunde autorisiert Transaktion
  10. Kreditkartenabwickler führt Transaktion durch
  11. Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout
  12. GiroCheckout benachrichtigt Shop über Transaktionsausgang (Benachrichtigung)
  13. Shop verarbeitet Transaktionsausgang
  14. Shop sendet HTTP Statuscode an GiroCheckout
  15. GiroCheckout sendet Rücksprung zum Händler an Kreditkartenabwickler
  16. Kunde klickt "Zurück zum Shop" (Rücksprung)

API-Funktionen

Überblick

Wie im Workflow zu sehen ist, gibt es unterschiedliche API-Aufrufe während einer Kreditkartentransaktion. Ferner kann während des Bezahlvorganges noch eine zusätzliche 3D-Secure-Überprüfung stattfinden, die allerdings von Händler und PSP völlig unabhängig ist und nur vom kreditkartenverarbeitenden Institut gesteuert wird.

  1. Transaktion initialisieren
  2. 3D-Secure-Check (optional)
  3. Benachrichtigung des Zahlungsergebnisses an den Händler
  4. Zurückleitung des Käufers auf die Händlerseiten (ausgelöst durch Käufer)

Reservierung/Sale

POST Parameter

URL https://payment.girosolution.de/girocheckout/api/v2/transaction/start

Name Pflicht Type Beschreibung
merchantId Ja Integer Händler-ID eines Kreditkarten Projekts
projectId Ja Integer Projekt-ID eines Kreditkarten Projekts
merchantTxId Ja String(255) eindeutige Transaktions-ID des Händlers
amount Ja Integer Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
currency Ja String(3) Währung der Transaktion, gemäß ISO 4217.
EUR = Euro
purpose Ja String(27) Verwendungszweck der Kreditkartentransaktion. Diese Information erscheint auf der Kreditkartenabrechnung.
type Optional String(4) Transaktionsart (siehe Transaktionsarten)
SALE = Verkauf wird sofort gebucht (default)
AUTH = Reservierung des Betrags
locale Optional String(4) Sprache des Kreditkartenformulars
de = deutsch (default)
en = englisch
es = spanisch
fr = französisch
it = italienisch
ja = japanisch
pt = portugiesisch
nl = niederländisch
cs = tschechisch
sv = schwedisch
da = dänisch
pl = polnisch
spde = deutsch Spende
spen = englisch Spende
mobile Optional Integer Bezahlseite für mobile Browser optimiert
0 = nein (default)
1 = ja
pkn Optional String(50) Das Feld dient dazu eine erneute Transaktion, ohne erneute Eingabe der Kreditkartendaten, zu starten.
create = neue Pseudo-Kartennummer für die verwendete Kreditkarte generieren
[Pseudo-Kartennummer] = Kartennumer der zu verwendenden Kreditkarte (siehe Pseudokartennummer)
recurring Optional Boolean wiederkehrende Zahlung
0 = nein (default)
1 = ja, weitere Informationen
urlRedirect Ja String URL, an die der Kunde nach der Zahlung geschickt werden soll.
urlNotify Ja String URL, an die der Zahlungsausgang gemeldet werden soll.
tds2Address Optional String Für 3D Secure 2.0: Hauptadresszeile (i.d.R. Straße+Hausnummer) der Rechnungsadresse des Karteninhabers, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50. Wenn angegeben, müssen auch die restlichen tds2-Felder angegeben werden, außer tds2Optional.
tds2Postcode Optional String Für 3D Secure 2.0: Postleitzahl der Rechnungsadresse des Karteninhabers, Format A-Z, a-z, 0-9, Blank, [-], max. 11. Wenn angegeben, müssen auch die restlichen tds2-Felder angegeben werden, außer tds2Optional.
tds2City Optional String Für 3D Secure 2.0: Ort der Rechnungsadresse des Karteninhabers, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50. Wenn angegeben, müssen auch die restlichen tds2-Felder angegeben werden, außer tds2Optional.
tds2Country Optional String Für 3D Secure 2.0: Land der Rechnungsadresse des Karteninhabers, Format A-Z, max. 2. Zweibuchstabiges Länderkürzel nach dem aktuell gültigen Standard ISO 3166. Wenn angegeben, müssen auch die restlichen tds2-Felder angegeben werden, außer tds2Optional.
tds2Email Optional String Für 3D Secure 2.0: E-Mail-Adresse des Karteninhabers, Format A-Z, a-z, 0-9, [_.+-@], max. 254. Wenn angegeben, müssen auch die restlichen tds2-Felder angegeben werden, außer tds2Optional.
tds2Optional Optional String Für 3D Secure 2.0: JSON-String, der weitere optionale Felder enthält. Eine genaue Auflistung der Felder ist unter dieser Tabelle unter 3D Secure 2.0 Optionale Felder (tds2Optional) zu finden
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren

3D Secure 2.0 Optionale Felder (tds2Optional)

Hierbei handelt es sich um ein JSON-formatiertes Objekt, das hierarchisch aufgebaut ist (2 Ebenen) und die folgenden Unterobjekte enthält:

  • billingAddress (Rechnungsadresse)
  • shippingddress (Lieferadresse)
  • homePhoneNumber (Telefon zuhause)
  • mobilePhoneNumber (Telefon mobil)
  • workPhoneNumber (Telefon Arbeit)
  • cardholderAccountInfo (Konteninformationen Karteninhaber)
  • tdsMerchantRiskIndicators (Risikoindikatoren des Händlers)
  • tdsRequestorAuthenticationInformation (Authentifizierungsinformationen des Anfragenden)
  • tdsTransactionAttributes (Transaktionsattribute)
  • tdsBrowserData (Browserdaten)
  • tdsCommunicationData (Kommunikationsdaten)

Insgesamt gibt es folgende Feldern (alle optional, Felder in Unterobjekten sind mit [Unterobjektname].[Feld] dargestellt):

Name Datentyp Beschreibung
addressesMatch Boolean Lieferadresse entspricht Rechnungsadresse, ja="true", nein="false", kein Unterobjekt sondern Feld direkt im Hauptobjekt.
billingAddress
billingAddress.line2 String Zeile 2 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
billingAddress.line3 String Zeile 3 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
billingAddress.state String Bundesland der Rechnungsadresse o.ä. Format A-Z, max. 3, Kürzel gemäß ISO 3166-2
shippingAddress
shippingAddress.line1 String Zeile 1 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
shippingAddress.line2 String Zeile 2 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
shippingAddress.line3 String Zeile 3 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
shippingAddress.postcode String Postleitzahl der Lieferadresse, Format A-Z, a-z, 0-9, Blank, [-], max. 11
shippingAddress.city String Ort der Lieferadresse, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50
shippingAddress.state String Bundesland der Lieferadresse o.ä. Format A-Z, max. 3, Kürzel gemäß ISO 3166-2
shippingAddress.country String Land der Lieferadresse, Format A-Z, max. 2. Zweibuchstabiges Länderkürzel nach dem aktuell gültigen Standard ISO 3166.
homePhoneNumber
homePhoneNumber.country Integer Ländervorwahl der Heim-Telefonnummer, Format 0-9, max. 3. z.B. 49 für Deutschland.
homePhoneNumber.regional String Rest der der Heim-Telefonnummer, Format 0-9, max. 15, ohne führende Nullen, z.B. 73482984938.
mobilePhoneNumber
mobilePhoneNumber.country Integer Ländervorwahl der Mobil-Telefonnummer, Format 0-9, max. 3. z.B. 49 für Deutschland.
mobilePhoneNumber.regional String Rest der der Mobil-Telefonnummer, Format 0-9, max. 15, ohne führende Nullen, z.B. 73482984938.
workPhoneNumber
workPhoneNumber.country Integer Ländervorwahl der Arbeits-Telefonnummer, Format 0-9, max. 3. z.B. 49 für Deutschland.
workPhoneNumber.regional String Rest der der Arbeits-Telefonnummer, Format 0-9, max. 15, ohne führende Nullen, z.B. 73482984938.
cardholderAccountInfo
cardholderAccountInfo.accountAgeIndicator String Alter des Kundenkontos. Mögliche Werte: "never" - Kunde hat kein Kundenkonto, kauft z.B. als Gast ein, "now" - Kunde hat während des aktuellen Einkaufs ein Konto angelegt, "less30" - Konto ist weniger als 30 Tage alt, "more30less60" - Konto ist mindestens 30 aber weniger als 60 Tage alt, "more60" - Kundenkonto ist mindestens 60 Tage alt.
cardholderAccountInfo.passwordChangeIndicator String Gibt an, wann das Passwort des Kundenkontos zuletzt geändert oder zurückgesetzt wurde. Mögliche Werte: "never" - Kunde hat nie sein Passwort geändert, "now" - Kunde hat während des aktuellen Einkaufs sein Passwort geändert, "less30" - Passwort wurde vor weniger als 30 Tagen geändert, "more30less60" - Passwort wurde vor mindestens 30 aber weniger als 60 Tagen geändert, "more60" - Passwort wurde seit mindestens 60 Tagen nicht geändert.
cardholderAccountInfo.paymentAccountAgeIndicator String Gibt an, wann das Zahlungskonto des Kunden angelegt wurde. Mögliche Werte: "never" - Kunde hat kein Zahlungskonto, kauft z.B. als Gast ein, "now" - Kunde hat das Zahlungskonto während des aktuellen Einkaufs angelegt, "less30" - Zahlungskonto wurde vor weniger als 30 Tagen angelegt, "more30less60" - Zahlungskonto wurde vor mindestens 30 aber weniger als 60 Tagen angelegt, "more60" - Zahlungskonto wurde vor mindestens 60 Tagen angelegt.
cardholderAccountInfo.accountChange String Gibt an, wann das Kundenkonto im Shop zuletzt geändert wurde, z.B. Adressänderung oder neue Zahlungsdaten. Mögliche Werte: "now" - Kunde hat während des aktuellen Einkaufs sein Konto geändert, "less30" - Konto wurde vor weniger als 30 Tagen geändert, "more30less60" - Konto wurde vor mindestens 30 aber weniger als 60 Tagen geändert, "more60" - Kundenkonto wurde seit mindestens 60 Tagen nicht geändert.
cardholderAccountInfo.shippingAddressAgeIndicator String Gibt an, wann der Kunde die aktuelle Lieferadresse zum ersten Mal benutzt hat. Mögliche Werte: "now" - Kunde benutzt die Lieferadresse zum ersten Mal, "less30" - Lieferadresse wurde vor weniger als 30 Tagen zum ersten Mal benutzt, "more30less60" - Lieferadresse wurde vor mindestens 30 aber weniger als 60 Tagen zuerst benutzt, "more60" - Lieferadresse wurde vor mindestens 60 Tagen zuerst benutzt.
cardholderAccountInfo.shippingNameIndicator String Gibt an, ob der Name des Karteninhabers und der Name der Lieferadresse identisch sind. Mögliche Werte: "identical" - Namen sind identisch, "different" - Namen sind unterschiedlich.
cardholderAccountInfo.suspiciousAccountActivity Boolean Gibt an, ob für diesen Kunden verdächtige Aktivitäten beobachtet wurden. Mögliche Werte: "false" - nein, "true" - ja.
cardholderAccountInfo.provisioningDayCount Integer Anzahl der "Karte hinzufügen" Versuche in den letzten 24 Stunden. Format 0-9, max. 3.
tdsMerchantRiskIndicators
tdsMerchantRiskIndicators.deliveryTimeframe String Zeitraum, in dem die Ware an den Kunden geliefert wird. Mögliche Werte: "electronic" - sofortige elektronische Lieferung, "moreThanOneDay" - mehr als ein Tag, "overnight" - über Nacht, "sameDay" - am selben Tag.
tdsMerchantRiskIndicators.deliveryEmailAddress String Liefer-E-Mail-Adresse des Kunden im Fall einer elektronischen Lieferung. Format A-Z, a-z, 0-9, [_.+-@], max. 254.
tdsMerchantRiskIndicators.giftCardAmount Integer Betrag der Geschenkkarte in größter Währungseinheit, z.B. 123 bei 123,45 EUR. Format 0-9, max. 10.
tdsMerchantRiskIndicators.giftCardCount Integer Anzahl der gekauften Geschenkkarten. Format 0-9, max. 2.
tdsMerchantRiskIndicators.giftCardCurrency Integer Währungscode der Geschenkkarte gemäß ISO 4217. Format A-Z, max. 3.
tdsMerchantRiskIndicators.preOrderDate Date Im Fall einer Vorbestellung: Datum, an dem die Ware voraussichtlich verfügbar ist. Format JJJJ-MM-TT.
tdsMerchantRiskIndicators.preOrderPurchaseIndicator String Mögliche Werte: "available" - die Ware ist bereits verfügbar, "future" - die Ware ist erst in der Zukunft verfügbar.
tdsMerchantRiskIndicators.reorderItemsIndicator String Gibt an, ob der Kunde Artikel bereits zuvor bestellt hat. Mögliche Werte: "first" - erste Bestellung, "reordered" - erneute Bestellung.
tdsMerchantRiskIndicators.shippingIndicator String Gibt an, wohin die Ware geliefert wird. Mögliche Werte: "digital" - digitale Lieferung, "billingAddress" - an die Rechnungsadresse, "differentAddress" - an eine andere Adresse, "verifiedAddress" - an eine geprüfte Adresse, "store" - in ein Geschäft, "other" - sonstiges.
tdsRequestorAuthenticationInformation
tdsRequestorAuthenticationInformation.authenticationData String Authentifizierungsdaten des Kunden. Format A-Z, a-z, 0-9 [!"#$%$'()*+,./:;⇔?@[\]^`{|}~-], max. 2048
tdsRequestorAuthenticationInformation.authenticationTimestamp DateTime Datum und Uhrzeit, wann sich der Kunde im Shop authentifiziert hat. Format JJJJ-MM-TTTHH:mm:ss
tdsRequestorAuthenticationInformation.authenticationMethod String Gibt an, wie sich der Kunde in Ihrem Shop authentifiziert hat. Mögliche Werte: "none" - gar nicht, z.B. Kunde kauft als Gast ein, "ownCredentials" - Kunde ist mit seinen Daten, z.B. Login-Name und Passwort angemeldet, "federatedId" - föderierte Identität, "issuerCredentials", "thirdParty", "fido", "fidoSigned", "srcAssurance".
tdsTransactionAttributes
tdsTransactionAttributes.purchaseInstalmentData Integer Maximal erlaubte Anzahl von Autorisierungen bei Ratenzahlungen. Format 0-9, max. 3, Wert muss > 1 sein.
tdsTransactionAttributes.recurringExpiry Date Datum, nach dem keine weiteren Autorisierungen mehr stattfinden sollen. Format JJJJ-MM-TT.
tdsTransactionAttributes.recurringFrequency Integer Minimale Anzahl von Tagen zwischen zwei Autorisierungen. Format 0-9, max. 4.
tdsTransactionAttributes.type String Art der 3-D Secure 2.0 Zahlung. Mögliche Werte: "purchase" - Einkauf, "checkAcceptance", "accountFunding", "quasiCash", "prepaidActivation".
tdsBrowserData
tdsBrowserData.browserAcceptHeader String "Accept" HTTP-Header des Browsers des Kunden. Format A-Z, a-z, 0-9, [/;=-], max. 80.
tdsBrowserData.browserColorDepth Integer Farbtiefe des Browsers des Kunden in Bit. Gültige Werte: 1, 4, 8, 15, 16, 24, 32, 48.
tdsBrowserData.browserIP String IP-Adresse (IPv4 oder IPv6) des Browsers des Kunden. Format A-Z, a-z, 0-9, [.:], max. 39.
tdsBrowserData.browserJavaEnabled Boolean Gibt an, ob im Browser des Kunden Java aktiv ist (true) oder nicht (false).
tdsBrowserData.browserJavaScriptEnabled Boolean Gibt an, ob im Browser des Kunden JavaScript aktiv ist (true) oder nicht (false).
tdsBrowserData.browserLanguage String Sprache des Browsers des Kunden. Format A-Z, a-z, [-], Max. 8., Bsp. en-US
tdsBrowserData.browserScreenHeight Integer Höhe des Bildschirms des Kunden in Pixeln. Format 0-9, Max. 6.
tdsBrowserData.browserScreenWidth Integer Breite des Bildschirms des Kunden in Pixeln. Format 0-9, Max. 6.
tdsBrowserData.browserTimeZone Integer Differenz in Minuten zwischen der Zeitzone des Kunden und UTC. Wird von der JavaScript-Methode getTimezoneOffset() zurückgegeben. Format 0-9, [-], Max. 5.
tdsBrowserData.browserUserAgent String "User-Agent" HTTP-Header des Browsers des Kunden. Format A-Z, a-z, Blank, [().:;/,_-], Max. 2048.
tdsCommunicationData
tdsCommunicationData.cResNotificationURL String URL des Shops, an welche der ACS die CRes-Nachricht senden soll. Format A-Z, a-z, 0-9, [:./-?;&=%], Max. 2048.
tdsCommunicationData.methodNotificationURL String URL des Shops, an welche der ACS die Benachrichtigung über die „3DS Method“ senden soll. Format A-Z, a-z, 0-9, [:./-?;&=%], Max. 2048.
tdsCommunicationData.challengeWindowSize String Größe des Fensters, das dem Kunden zur Autorisierung einer 3-D Secure 2.0 Zahlung angezeigt werden soll. Falls nicht angegeben wird "FullScreen" angenommen. Format: Einer der Werte "size250x400", "size390x400", "size500x600", "size600x400", "FullScreen"
Beispiel eines tds2Optional-Strings (zu Demonstrationszwecken formatiert, sollte normalerweise in einer Zeile angegeben werden)
{
  "addressesMatch": "false",
  "billingAddress": {
    "line2": "Beim Nachbarn klingeln",
    "line3": "zw. 22-24 Uhr",
    "state": "BW"
  },
  "shippingAddress": {
    "city": "Berlin",
    "country": "DE",
    "line1": "Unter den Linden 1",
    "line2": "Brandenburger Tor",
    "line3": "(linker Bogen)",
    "state": "BER"
  },
  "homePhoneNumber": {
    "country": "49",
    "regional": "75519209309"
  },
  "mobilePhoneNumber": {
    "country": "49",
    "regional": "17093902978"
  },
  "workPhoneNumber": {
    "country": "49",
    "regional": "8938928938"
  },
  "cardholderAccountInfo": {
    "accountAgeIndicator": "more30less60",
    "passwordChangeIndicator": "never",
    "paymentAccountAgeIndicator": "less30",
    "accountChange": "now",
    "shippingAddressAgeIndicator": "more60",
    "shippingNameIndicator": "different",
    "suspiciousAccountActivity": "false",
    "provisioningDayCount": 10
  },
  "tdsMerchantRiskIndicators": {
    "deliveryTimeframe": "overnight",
    "deliveryEmailAddress": "hans-mueller@example.com",
    "giftCardAmount": 0,
    "giftCardCount": 2,
    "giftCardCurrency": "EUR",
    "preOrderDate": "2020-12-20",
    "preOrderPurchaseIndicator": "available",
    "reorderItemsIndicator": "first",
    "shippingIndicator": "store"
  },
  "tdsRequestorAuthenticationInformation": {
    "authenticationData": "123Hdajkd/dasjdkk",
    "authenticationTimestamp": "2020-11-09T12:09:09",
    "authenticationMethod": "ownCredentials"
  },
  "tdsTransactionAttributes": {
    "purchaseInstalmentData": 2,
    "recurringExpiry": "2020-11-30",
    "recurringFrequency": 1234,
    "type": "quasiCash"
  },
  "tdsBrowserData": {
    "browserAcceptHeader": "anything",
    "browserColorDepth": 24,
    "browserIP": "192.168.0.43",
    "browserJavaEnabled": "true",
    "browserJavaScriptEnabled": "true",
    "browserLanguage": "en-US",
    "browserScreenHeight": 2048,
    "browserScreenWidth": 4096,
    "browserTimeZone": "120",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"
  },
  "tdsCommunicationData": {
    "cResNotificationURL": "https://www.example.com/resnot.php?param1=value1¶m2=value2",
    "methodNotificationURL": "https://www.example.com/methnot.php?param1=value1¶m2=value2",
    "challengeWindowSize": "FullScreen"
  }
}
Beispiel einer Transaktionsinitialisierung
curl -d "merchantId=1234567" \
     -d "projectId=1234" \
     -d "merchantTxId=1234567890" \
     -d "amount=100" \
     -d "currency=EUR" \
     -d "purpose=Beispieltransaktion" \
     -d "locale=de" \
     -d "mobile=0" \
     -d "pkn=create" \
     -d "recurring=0" \
     -d "urlRedirect=http://www.my-domain.de/girocheckout/redirect" \
     -d "urlNotify=http://www.my-domain.de/girocheckout/notify" \
     -d "hash=26fbe72bcc0b7cd0b024b2282e974583" \
     https://payment.girosolution.de/girocheckout/api/v2/transaction/start

Antwort

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 zum Kreditkartenformular zurück.

Parameter
Name Pflicht Type Beschreibung
rc Ja Integer Fehlernummer
msg Ja String zusätzliche Informationen im Fehlerfall
reference Optional String eindeutige GiroCheckout Transaktions-ID
redirect Optional String Redirect URL zur Weiterleitung des Kunden an sein Online Banking
HEADER Parameter
hash Ja String HMAC MD5 hash über alle Werte der Rückmeldung. Siehe hash der Rückantwort
Beispiel im Erfolgsfall
{"reference":"6d2d31b6-c23f-47c4-8f6c-1a0495f35f0f","redirect":"https://testmerch.directpos.de/web-api/SSLPayment.po?n=wrlIRO9O30S4NNAO9h6uHwhyWibDFKUWeoWy7mPLDDyZ","rc":"0","msg":""}
Beispiel im Fehlerfall
{"reference":null,"redirect":null,"rc":5030,"msg":"Betrag ungültig"}

Benachrichtigung über den Zahlungsausgang

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.

Anfrage

URL: notifyUrl aus der Transaktionsinitialisierung
Bereitzustellen von: Händler
Aufzurufen von: GiroCheckout

GET Parameter

Name Pflicht Type Beschreibung
gcReference Ja String GiroCheckout Transaktions-ID
gcMerchantTxId Ja String Händler Transaktions-ID
gcBackendTxId Ja String Zahlungsabwickler Transaktions-ID
gcAmount Ja Integer bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
gcCurrency Ja String Währung
gcResultPayment Ja Integer Ergebniscodes der Zahlung
gcHash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren

Antwort

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.

Rückleitung des Kunden zum Händler

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.

Anfrage

URL: redirectUrl aus der Transaktionsinitialisierung
Bereitzustellen von: Händler
Aufzurufen von: GiroCheckout

GET Parameter
Name Pflicht Type Beschreibung
gcReference Ja String GiroCheckout Transaktions-ID
gcMerchantTxId Ja String Händler Transaktions-ID
gcBackendTxId Ja String Zahlungsabwickler Transaktions-ID
gcAmount Ja Integer bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
gcCurrency Ja String Währung
gcResultPayment Ja Integer Ergebnis der Zahlung
gcHash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren

Weitere Transaktionsarten

Diese Transaktionen 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

Workflow

PlantUML Graph

  1. Shop sendet referenzierende Kreditkartentransaktion
  2. GiroCheckout leitet Transaktion zu Kreditkartenabwickler
  3. Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout
  4. Shop bekommt Rückmeldung über Transaktionsausgang (Benachrichtigung)

Buchung (CAPTURE)

Beim Buchen (capture) wird das Kundenkonto mit einem Betrag belastet, die Gutschrift erfolgt auf das Händlerkonto. Dieses Modell unterstellt, dass der zugrundeliegende Geschäftsvorfall abgeschlossen ist, z.B. wurde ein Warenkorb angeboten, bestellt und an den Kunden ausgeliefert.

  • Bedingung: nur reservierte Transaktionen können gebucht werden
  • Betrag ⇐ Reservierungsbetrag
  • Buchung von Teilbeträgen möglich

Erstattung (REFUND)

Eine Erstattung ist zu verwenden, wenn dem Kunden eine vorangegangene Zahlung komplett oder teilweise erstattet werden soll.

  • Bedingung: kann nur auf folgende Transaktionstypen angewendet werden:
    • Reservierung
    • Reservierung/Buchung
  • Betrag ⇐ Transaktionsbetrag der vormals gesendeten Transaktion

POST Parameter

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
merchantId Ja Integer Händler-ID eines Kreditkarten Projekts
projectId Ja Integer Projekt-ID eines Kreditkarten Projekts
merchantTxId Ja String(255) eindeutige Transaktions-ID des Händlers
amount Ja Integer Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
currency Ja String(3) Währung der Transaktion, gemäß ISO 4217.
EUR = Euro
purpose Optional String(27) Verwendungszweck der Erstattung. Diese Information erscheint auf der Kreditkartenabrechnung.
reference Ja String GiroCheckout Transaktions-ID, für die eine Buchung oder Erstattung durchgeführt werden soll
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel
curl -d "merchantId=1234567" \
     -d "projectId=1234" \
     -d "merchantTxId=1234567890" \
     -d "amount=100" \
     -d "currency=EUR" \
     -d "reference=fb70602d-c137-4413-8432-7dcc69a9d891" \
     -d "hash=edb7459114db25c2991d1783d4ab5388" \
     https://payment.girosolution.de/girocheckout/api/v2/transaction/capture

Antwort

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.

Parameter
Name Pflicht Type Beschreibung
rc Ja Integer Fehlernummer
msg Ja String zusätzliche Informationen im Fehlerfall
reference Ja String GiroCheckout Transaktions-ID
referenceParent Ja String GiroCheckout Transaktions-ID der zugrundeliegenden Ursprungstransaktion
merchantTxId Ja String Händler Transaktions-ID
backendTxId Ja String Zahlungsabwickler Transaktions-ID
amount Ja Integer bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
currency Ja String Währung
resultPayment Ja Integer Ergebnis der Transaktion
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel im Erfolgsfall
{"reference":"6d2d31b6-c23f-47c4-8f6c-1a0495f35f0f","redirect":"https://testmerch.directpos.de/web-api/SSLPayment.po?n=wrlIRO9O30S4NNAO9h6uHwhyWibDFKUWeoWy7mPLDDyZ","rc":"0","msg":""}
Beispiel im Fehlerfall
{"reference":null,"redirect":null,"rc":5030,"msg":"Betrag ungültig"}

Stornierung (VOID)

Stornieren ist zu verwenden, wenn eine akzeptierte Transaktion nicht ausgeführt werden soll.

  • Bedingung: kann nur auf folgende Transaktionstypen angewendet werden:
    • Reservierung (solange keine Buchung erfolgte und Reservierung nicht abgelaufen ist)
    • Reservierung/Buchung (nur am selben Tag)
    • Erstattung (nur am selben Tag)

POST Parameter

URL VOID: https://payment.girosolution.de/girocheckout/api/v2/transaction/void

Name Pflicht Type Beschreibung
merchantId Ja Integer Händler-ID eines Kreditkarten Projekts
projectId Ja Integer Projekt-ID eines Kreditkarten Projekts
merchantTxId Ja String(255) eindeutige Transaktions-ID des Händlers
reference Ja String GiroCheckout Transaktions-ID, für die eine Stornierung durchgeführt werden soll
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel
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

Antwort

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.

Parameter
Name Pflicht Type Beschreibung
rc Ja Integer Fehlernummer
msg Ja String zusätzliche Informationen im Fehlerfall
reference Ja String GiroCheckout Transaktions-ID
referenceParent Ja String GiroCheckout Transaktions-ID der zugrundeliegenden Ursprungstransaktion
merchantTxId Ja String Händler Transaktions-ID
backendTxId Ja String 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 Währung
resultPayment Ja Integer Ergebnis der Transaktion
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel im Erfolgsfall
{"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":""}
Beispiel im Fehlerfall
{"reference":null,"referenceParent":null,"merchantTxId":null,"backendTxId":null,"amount":null,"currency":null,"resultPayment":null,"rc":5200,"msg":"Transaktion nicht akzeptiert"}

Pseudo-Kartennummer (PKN)

Für diese Funktion ist eine separate Einrichtung erforderlich und es fallen einmalige Einrichtungsgebühren an.

Eine Pseudo-Kartennummer ist eine Referenz auf eine vom Käufer verwendete Kreditkarte (Kreditkartennummer und Gültigkeitsdatum). Durch dieser Referenz wird dem Händler ermöglicht eine bereits verwendete Kreditkarte zur Auswahl anzubieten. Wird die Nummer bei der Initialisierung einer Kreditkartentransaktion mitgeschickt, wird die Kreditkartennummer und das Gültigkeitsdatum im Zahlformular vorausgefüllt. Der Kunde muss nur die Kartenprüfnummer eingeben und kann die Zahlung durchführen.

Pseudo-Kartennummer Informationen abfragen

Durch diese Funktion werden PKN-Informationen bereitgestellt. Sie liefert als Ergebnis eine PKN sowie die hinterlegten Kreditkarteninformationen (maskierte Kreditkartennummer, Gültigkeitsdatum) , welche für eine bereits durchgeführte Transaktion verwendet wurde.

URL: https://payment.girosolution.de/girocheckout/api/v2/creditcard/pkninfo
Bereitzustellen von: GiroCheckout
Aufzurufen von: Händler

POST Parameter

Name Pflicht Type Beschreibung
merchantId Ja Integer Händler-ID eines Kreditkarten Projekts
projectId Ja Integer Projekt-ID eines Kreditkarten Projekts
reference Ja String(36)Eindeutige GiroCheckout Transaktions-ID
hash Ja String(32)HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel
curl -d "merchantId=1234567" \
     -d "projectId=1234" \
     -d "reference=6d2d31b6-c23f-47c4-8f6c-1a0495f35f0f" \
     -d "hash=dc1686b621c9cc15bd271390c694258d" \
     https://payment.girosolution.de/girocheckout/api/v2/creditcard/pkninfo

Antwort

Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, wurde die Anfrage erfolgreich abgesetzt. Die Antwort enthält die PKN-Nummer, die Kreditkartennummer und das Gültigkeitsdatum.

Parameter
Name Pflicht Type Beschreibung
rc Ja Integer Fehlernummer
msg Ja String zusätzliche Informationen im Fehlerfall
pkn Ja String Pseudo-Kartennummer
cardnumber Ja String maskierte Kreditkartennummer, z.B. 411111******1111
expiremonth Ja String Monat des Gültigkeitsdatums der Kreditkarte
expireyear Ja String Jahr des Gültigkeitsdatums der Kreditkarte
HEADER Parameter
hash Ja String HMAC MD5 hash über alle Werte der Rückmeldung. Siehe hash der Rückantwort
Beispiel im Erfolgsfall
{"pkn":"ad5c386b38cc9aeb839705d1d10da499","cardnumber":"411111******1111","expiremonth":"2","expireyear":"2016","rc":0,"msg":""}
Beispiel im Fehlerfall
{"pkn":null,"cardnumber":null,"expiremonth":null,"expireyear":null,"rc":5034,"msg":"Transaktion nicht vorhanden"}

Durchführen einer wiederkehrenden Kreditkartenzahlung (recurring payment)

Die Transaktionsdaten werden übermittelt und das Ergebnis der Kreditkartenzahlung wird umgehend zurückgeliefert. Diese Funktion wird für wiederkehrende Kreditkartenzahlungen, z.B. für Abonnements, verwendet.

Folgende Schritte sind durchzuführen, um eine wiederkehrende Zahlung zu implementieren:

  1. Normale Kreditkartentransaktion durchführen (s. Initialisierung einer Zahlung)
  2. Pseudokartennummer (PKN) ermitteln (s. PKN-Infos abfragen)
  3. Diese PKN speichern
  4. Bei der nächsten wiederkehrenden Zahlung, eine Payment-Transaktion initialisieren (Endpoint beachten, s. Recurring oder PKN-Transaktion), aber Parameter pkn setzen und Parameter recurring=1.

Recurring Transaktion

Um eine wiederkehrende (recurring) Zahlung ohne Kundenintervention durchzuführen, ist die folgende Schnittstelle zu verwenden.

POST Parameter

URL https://payment.girosolution.de/girocheckout/api/v2/transaction/payment

Name Pflicht Type Beschreibung
merchantId Ja Integer Händler-ID eines Kreditkarten Projekts
projectId Ja Integer Projekt-ID eines Kreditkarten Projekts
merchantTxId Ja String(255) eindeutige Transaktions-ID des Händlers
amount Ja Integer Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny
currency Ja String(3) Währung der Transaktion, gemäß ISO 4217.
EUR = Euro
purpose Ja String(27) Verwendungszweck der Kreditkartenransaktion. Diese Information erscheint auf der Kreditkartenabrechnung.
type Optional String Transaktionsart (siehe Transaktionsarten)
SALE = Verkauf wird sofort gebucht (default)
AUTH = Reservierung des Betrags
pkn Optional String(50) Das Feld dient dazu eine erneute Transaktion, ohne erneute Eingabe der Kreditkartendaten, zu starten.
[Pseudo-Kartennummer] = Kartennumer der zu verwendenden Kreditkarte (siehe Pseudokartennummer)
recurring Optional Boolean wiederkehrende Zahlung
0 = nein (default)
1 = ja, weitere Informationen
urlNotify Optional String URL, an die der Zahlungsausgang gemeldet werden soll.
hash Ja String HMAC MD5 hash über alle Werte des Aufrufs. Siehe hash generieren
Beispiel
curl -d "merchantId=1234567" \
     -d "projectId=1234" \
     -d "merchantTxId=1234567890" \
     -d "amount=100" \
     -d "currency=EUR" \
     -d "purpose=Beispieltransaktion" \
     -d "pkn=ad5c386b38cc9aeb839705d1d10da499" \
     -d "recurring=0" \
     -d "hash=0361f14f7b1be9be16326b2edd925853" \
     https://payment.girosolution.de/girocheckout/api/v2/transaction/payment

Antwort

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 das Transaktionsergebnis zurück.

Parameter

Name Pflicht Type Beschreibung
rc Ja Integer Fehlernummer
msg Ja String zusätzliche Informationen im Fehlerfall
reference Ja String eindeutige GiroCheckout Transaktions-ID
backendTxId Ja String Zahlungsabwickler Transaktions-ID
resultPayment Ja Integer Ergebnis der Transaktion
HEADER Parameter
hash Ja String HMAC MD5 hash über alle Werte der Rückmeldung. Siehe hash der Rückantwort
Beispiel im Erfolgsfall
{"reference":"7f18859d-7246-4181-8fb5-30ce7958f309","backendTxId":"1196307_01","resultPayment":"4000","rc":0,"msg":""}
Beispiel im Fehlerfall
{"reference":"fb70602d-c137-4413-8432-7dcc69a9d891","backendTxId":"","resultPayment":"4106","rc":0,"msg":"Pseudo-Kartennummer ungültig "}
girocheckout/creditcard_3ds2/start.txt · Zuletzt geändert: 2020/11/20 15:22 von michaelheumann

Seiten-Werkzeuge