====== Kreditkarte ======
Informationen zu Kreditkarten sind unter https://www.girosolution.de/girocheckout/bezahlverfahren.html zu finden.
===== Testdaten =====
Eine Kreditkartenzahlung kann mittels der folgenden Kreditkartennummern getestet werden:
^Formularfeld ^Eingabewert^
|Visa | 4111111111111111 |
|Mastercard | 5232050000010003 |
|Kartenprüfnummer (CVC2/CVV) | beliebige 3-stellige Zahl (wird nicht geprüft) |
|Gültigkeitsdatum | beliebiges, in der Zukunft liegendes, Datum|
Verifyed by Visa oder Mastercard SecureCode stehen im Testmodus nicht zur Verfügung.
**Transaktionsausgang**
^ResultCode ^Antwortcode ^Hinweis ^
|4000 |erfolgreiche Transaktion |Nach Eingabe der oben genannten Daten erfolgt eine erfolgreiche Transaktion. |
|4502 |abgebrochene Transaktion |Eine abgebrochene Transaktion wird nach drücken des Buttons **Abbrechen** ausgelöst. |
===== Workflow =====
hide footbox
participant "Kunde" as customer
participant "Shop" as shop
participant "GiroCheckout" as girocheckout
participant "Kreditkartenabwickler" as cc
autonumber
customer -> shop:
shop -> girocheckout:
girocheckout -> cc:
cc -> girocheckout:
girocheckout -> shop:
shop -> customer:
customer -> cc:
cc -> customer:
customer -> cc:
cc -> cc:
cc -> girocheckout:
girocheckout -> shop
shop -> shop:
shop -> girocheckout:
girocheckout -> cc:
cc -> shop:
center footer (c)2013 by GiroSolution AG
- Käufer wählt Zahlart Kreditkarte aus
- Shop initiiert Kreditkartentransaktion ([[girocheckout:giropay:functions#initialisierung_der_giropay_zahlung|------]])
- GiroCheckout initialisiert Transaktion bei Kreditkartenabwickler
- Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout
- Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet)
- Shop sendet Redirect URL an Kundenbrowser
- Kundenbrowser leitet zum Kreditkartenabwickler weiter
- Kreditkartenabwickler zeigt Zahlformular an
- Kunde autorisiert Transaktion
- Kreditkartenwbwickler führt Transaktion durch
- Kreditkartenwbwickler übermittelt Ergebnis an GiroCheckout
- GiroCheckout benachrichtigt Shop über Transaktionsausgang ([[girocheckout:giropay:functions#benachrichtigung_ueber_den_ausgang_der_zahlung|-------]])
- Shop verarbeitet Transaktionsausgang
- Shop sendet HTTP Statuscode an GiroCheckout
- GiroCheckout sendet Rücksprung zum Händler an Kreditkartenwbwickler
- Kunde klickt "Zurück zum Shop" ([[girocheckout:giropay:functions#rueckleitung_des_kunden_zum_shop|---------]])
===== API-Funktionen =====
==== Übersicht =====
Wie im Workflow dargestellt gibt es mehrere API-Aufrufe während einer Kreditkartentransaktion. Während des Bezahlvorgangs kann zusätzlich eine 3D-Secure Abfrage beim Käufer stattfinden.
- Transaktion initiieren
- 3D-Secure Abfrage beim Käufer (optional)
- Bezahlinformation an Händler übermitteln
- Bezahlinformation mit Käuferbrowserweiterleitung zurück zum Händler (durch Käufer nach Zahlung ausgelöst)
Im Folgenden werden die API-Felder und Aufrufe näher erleutert.
==== Initialisierung einer Kreditkartenzahlung ====
Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitunslink (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.
=== Anfrage ===
**URL:** https://payment.girosolution.de/girocheckout/api/v2/transaction/start \\
**Bereitzustellen von:** GiroCheckout \\
**Aufzurufen von:** Händler
== Parameter ==
^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äß [[http://de.wikipedia.org/wiki/ISO_4217#Aktuell_g.C3.BCltige_W.C3.A4hrungen|ISO 4217]].\\ EUR = Euro |
|purpose |Ja |String(27) |Verwendungszweck der Kreditkartenransaktion. Diese Information erscheint auf der Kreditkartenabrechnung. |
|locale |Optional |String(2) |Sprache des Kreditkartenformulars \\ de = deutsch (default) \\ en = englisch \\ es = spanisch \\ fr = französisch \\ it = italienisch \\ pt = portugiesisch \\ nl = niederländisch \\ cs = tschechisch \\ sv = schwedisch \\ da = dänisch \\ pl = polnisch \\ spde = deutsch Spende \\ spen = englisch Spende |
|mobile |Optional |Boolean |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 [[girocheckout:new:creditcard#pseudo-kartennummer_pkn|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. |
|hash |Ja |String |HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] |
== Beispiel ==
{{page>codesamples:creditcard#transactionstart.request&noheader&nofooter}}
=== 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 |[[girocheckout:errorcodes|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 [[girocheckout:general:start#hash_generieren|hash generieren]] |
== Beispiel im Erfolgsfall ==
{{page>codesamples:creditcard#transactionstart.response.true&noheader&nofooter}}
== Beispiel im Fehlerfall ==
{{page>codesamples:creditcard#transactionstart.response.false&noheader&nofooter}}
==== Benachrichtigung über den Zahlungsausgang ====
Der Ausgang einer Zahlung wird, an die im //urlNotify// Paramter 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 Zahlungausgang einer Transaktion steht im Feld gcResultPayment.
Aufgrund des Zahlungsablaufes findet **keine automatische Rückleitung des Käufers** an die im Parameter //urlRedirect// angegebene URL statt. Eine Weiterleitung erfolgt erst, wenn der Käufer den "Abbrechen" oder "Zurück zum Shop" Button drückt.
=== 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 |Optional |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der Zahlung]]|
|gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|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 | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Zahlung]]|
|gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] |
====== Pseudo-Kartennummer (PKN) ======
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 initiierung 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 Erbnis eine PKN sowie die hinterlegten Kreditkarteninformationen (maskierte Kreditkartennummer, Gültigkeitsdatum) , welche für eine bereits durchgeführte Transaktion verwendet wurde.
=== Anfrage ===
**URL:** https://payment.girosolution.de/girocheckout/api/v2/creditcard/pkninfo \\
**Bereitzustellen von:** GiroSolution AG \\
**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 [[girocheckout:general:start#hash_generieren|hash generieren]]|
== Beispiel ==
{{page>codesamples:creditcard#pkninfo.request&noheader&nofooter}}
=== 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 |[[girocheckout:errorcodes|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 |
== Beispiel im Erfolgsfall ==
{{page>codesamples:creditcard#pkninfo.response.true&noheader&nofooter}}
== Beispiel im Fehlerfall ==
{{page>codesamples:creditcard#pkninfo.response.false&noheader&nofooter}}
===== Durchführen einer wiederkehrenden Kreditkartenzahlung =====
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.
=== Anfrage ===
**URL:** https://payment.girosolution.de/girocheckout/api/v2/transaction/payment \\
**Bereitzustellen von:** GiroSolution AG \\
**Aufzurufen von:** Händler
== Parameter ==
^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 |Betrag in Cent |
|currency |Ja |String(3) |Währung der Transaktion als Währungscode gemäß [[http://de.wikipedia.org/wiki/ISO_4217#Aktuell_g.C3.BCltige_W.C3.A4hrungen|ISO 4217]]\\ EUR = Euro |
|purpose |Ja |String(27) |Verwendungszweck der Transaktion. Diese Information erscheint auf der Kreditkartenabrechnung. |
|pkn |Ja |String |Pseudo-Kartennummer einer Kreditkarte, mit der die Transaktion durchgeführt werden soll. |
|recurring |Ja |Boolean |Definiert, ob es sich um eine wiederkehrende Kreditkartenzahlung handelt. \\ 0 = nein (default) \\ 1 = ja, weitere Informationen |
|hash |Ja |String |HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] |
== Beispiel ==
{{page>codesamples:creditcard#recurringpayment.request&noheader&nofooter}}
=== Antwort ===
Die Antwort ist ein JSON Objekt. Wenn **rc = 0** zurückgeliefert wird, war der Aufruf fehlerfrei und das Ergebnis der Kreditkarten Transaktion ist dem Parameter **resultPayment** zu entnehmen.
== Parameter ==
^Name ^Pflicht ^Type ^Beschreibung ^
|rc |Ja |Integer |Antwortcode |
|msg |Ja |String |zusätzliche Informationen im Fehlerfall |
|reference |Optional |String |eindeutige GiroCheckout Transaktions-ID |
|backendTxId |Optional |String |Zahlungsabwickler Transaktions-ID |
|resultPayment |Optional |Integer |[[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Lastschrift Zahlung]] |
^HEADER Parameter^^^^
|hash |Ja |String |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] |
== Beispiel im Erfolgsfall ==
{{page>codesamples:creditcard#recurringpayment.response.true&noheader&nofooter}}
== Beispiel im Fehlerfall ==
{{page>codesamples:creditcard#recurringpayment.response.false&noheader&nofooter}}