Benutzer-Werkzeuge

Webseiten-Werkzeuge


girocheckout:giropay:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
girocheckout:giropay:start [2020/04/17 17:49]
michaelheumann
girocheckout:giropay:start [2024/03/13 20:52] (aktuell)
michaelheumann
Zeile 1: Zeile 1:
 ~~NOCACHE~~ ~~NOCACHE~~
-====== giropay / giropay-ID ====== +====== giropay ======
- +
-Informationen zu giropay sind unter https://www.girosolution.de/girocheckout/fuer-haendler/ zu finden.+
  
 giropay kann **ausschließlich** mit der Währung **EURO** verwendet werden. giropay kann **ausschließlich** mit der Währung **EURO** verwendet werden.
    
-Bitte verwenden Sie für Tests ausschließlich das giropay Testinstitut!+ 
 +<WRAP center round info 70%> 
 +**Wichtiger Hinweis** \\ 
 +In den nächsten Monaten stellen wir voraussichtlich schrittweise unsere Unterstützung für die bisherige giropay-Schnittstelle (s. [[/girocheckout:giropay-legacy:start|alte giropay-Beschreibung]]) ein. Danach gilt AUSSCHLIEßLICH die hier beschriebene neue Schnittstelle.  Falls Sie umsteigen, beachten Sie bitte unseren [[/girocheckout:giropay-overview:start#migrationsleitfaden|Migrationsleitfaden]] auf unserer giropay Übersichtsseite. Dort finden Sie auch einen [[/girocheckout:giropay-overview:start#vergleich_alte_und_neue_schnittstelle|Vergleich der alten und neuen Schnittstelle]]. 
 +</WRAP> 
 + 
 + 
 + 
 +<WRAP center round info 70%> 
 +**Änderung an der API** \\ 
 +Folgende Änderung an der API wird in diesen Tagen durchgeführt: \\ 
 +Der Parameter merchantReconciliationReferenceNumber wird ersetzt durch merchantOrderReferenceNumber, welcher weiterhin optional ist aber nur 20 Zeichen lang sein darf. Man beachte auch die unten angegebenen Restriktionen bzgl. der zugelassenen Zeichen. 
 +</WRAP> 
  
 ===== Testdaten giropay ===== ===== Testdaten giropay =====
-{{page>testdata:giropay&noheader&nofooter}}+{{page>testdata:giropaypd&noheader&nofooter}} 
 + 
 +===== Transaktionstypen ===== 
 +Detaillierte Informationen zu den [[girocheckout:transactiontypes:start|Transaktionstypen]].  
 + 
 +<uml> 
 +left to right direction 
 +skinparam packageStyle rect 
 + 
 +rectangle SALE{ 
 +  (SALE) --> (REFUND) 
 +  (REFUND) 
 +
 +rectangle AUTH { 
 +  (AUTH) --> (CAPTURE ) 
 +  (CAPTURE ) --> (REFUND ) 
 + 
 +
 +</uml>
  
 ===== Workflow ===== ===== Workflow =====
Zeile 25: Zeile 54:
  
 customer -> shop:  customer -> shop: 
-shop -> girocheckout:  
-girocheckout -> shop:  
 shop -> girocheckout: shop -> girocheckout:
 girocheckout -> giropay:  girocheckout -> giropay: 
Zeile 32: Zeile 59:
 girocheckout -> shop:  girocheckout -> shop: 
 shop -> customer:  shop -> customer: 
-customer -> bank:+customer -> giropay: 
 +giropay -> bank:
 bank -> customer:  bank -> customer: 
 customer -> bank: customer -> bank:
Zeile 45: Zeile 73:
  
  
-center footer (c)2013 by GiroSolution AG+center footer (c)2022 by GiroSolution AG
 </uml> </uml>
  
-  - Käufer/Kunde wählt giropay/giropay-ID und gibt BIC seiner Bank ein +  - Käufer/Kunde wählt giropay 
-  - Shop prüft Bankstatus ([[girocheckout:giropay:start#bankstatus_prüfen|Bankstatus prüfen]]) +  - Shop initiiert giropay Transaktion ([[girocheckout:giropay:start#initialisierung_einer_giropay_zahlung|Initialisierung]])
-  - Shop bekommt Rückmeldung, ob Bank giropay/giropay-ID unterstützt +
-  - Shop initiiert giropay/giropay-ID Transaktion ([[girocheckout:giropay:start#initialisierung_einer_giropay_zahlung|Initialisierung]])+
   - GiroCheckout initialisiert Transaktion bei giropay   - GiroCheckout initialisiert Transaktion bei giropay
   - giropay übermittelt Ergebnis an GiroCheckout   - giropay übermittelt Ergebnis an GiroCheckout
   - Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet)   - Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet)
   - Shop sendet Redirect URL an Käufer-/Kundenbrowser    - Shop sendet Redirect URL an Käufer-/Kundenbrowser 
-  - Käufer-/Kundenbrowser leitet zum Online-Banking weiter+  - Käufer-/Kundenbrowser leitet zu giropay weiter, wo die Bankauswahl erfolgt (optional, falls nicht schon im Browser gespeichert) 
 +  - giropay leitet dann an das Online-Banking der entsprechenden Bank weiter
   - Online-Banking zeigt Loginseite an   - Online-Banking zeigt Loginseite an
   - Käufer/Kunde autorisiert Transaktion   - Käufer/Kunde autorisiert Transaktion
Zeile 68: Zeile 95:
   - Käufer/Kunde klickt "Zurück zum Shop" ([[girocheckout:giropay:start#Rückleitung_des_Kunden_zum_Händler|Rücksprung]])   - Käufer/Kunde klickt "Zurück zum Shop" ([[girocheckout:giropay:start#Rückleitung_des_Kunden_zum_Händler|Rücksprung]])
  
-===== API-Funktionen ===== 
  
-==== Übersicht =====+==== Reservieren (AUTH) ==== 
 +{{page>girocheckout:transactiontypes:descriptions#auth.desc&noheader&nofooter}} 
 +<uml> 
 +left to right direction 
 +skinparam packageStyle rect
  
-Wie im Workflow dargestellt, gibt es mehrere API-Aufrufe während einer giropay Transaktion oder giropay-ID Abfrage. Eine giropay Transaktion kann zusätzlich mit einer giropay-ID Abfrage kombiniert gesendet werden.+rectangle AUTH { 
 +  (AUTH) --> (capture) 
 +  (AUTH) --> (refund) 
 +
 +</uml>
  
-  - Bankstatus prüfen +==== Reservieren/Buchen (SALE) ==== 
-  - Transaktion initiieren +{{page>girocheckout:transactiontypes:descriptions#sale.desc&noheader&nofooter}} 
-  - Bezahlinformation an Händler übermitteln +<uml> 
-  - Bezahlinformation mit Käuferbrowserweiterleitung zurück zum Händler (durch Käufer nach Zahlung ausgelöst)+left to right direction 
 +skinparam packageStyle rect
  
-Im Folgenden werden die API-Felder und Aufrufe näher erleutert.+rectangle SALE{ 
 +  (SALE) --> (refund) 
 +
 +</uml>
  
-==== Bankstatus prüfen ==== 
-**Dieser Aufruf sollte nicht mehr verwendet werden, alle giropay-Transaktionen werden jetzt mit einer externen Bankenabfrage durchgeführt!** 
  
-Es wird geprüft ob eine Bank am giropay Bezahlverfahren oder einer giropay-ID Abfrage teilnimmt. Diesbezüglich wird die BIC des Käufer-Girokontos übermittelt. Die Antwort zeigt ob eine giropay Transaktion oder giropay-ID Abfrage möglich ist. Es wid empfohlen vor jeder Initiierung einer giropay Transaktion oder giropay-ID Abfrage den Bankstatus zu prüfen, da dadurch unnötige Verkaufsabbrüche verhindert werden können.+===== API-Funktionen =====
  
-=== API-Aufruf === +==== Übersicht =====
-**URL:** https://payment.girosolution.de/girocheckout/api/v2/giropay/bankstatus \\ +
-**Bereitzustellen von:** GiroCheckout \\ +
-**Aufzurufen von:** Händler+
  
-== POST-Parameter == +Wie im Workflow dargestelltgibt es mehrere API-Aufrufe während einer giropay Transaktion.
-^Name           ^Pflicht  ^Type      ^Beschreibung   ^ +
-|merchantId     |Ja       |Integer   |Händler-ID eines giropaygiropay-ID oder giropay-ID + giropay Projekts | +
-|projectId      |Ja       |Integer   |Projekt-ID eines giropay, giropay-ID oder giropay-ID + giropay Projekts | +
-|bic            |Ja       |String(11)|BIC der Käuferbank (8 oder 11-stellig), die geprüft werden soll| +
-|hash           |Ja       |String(32)|HMAC MD5 hash über alle Werte des Aufrufs (siehe [[girocheckout:general:start#hash_generieren|hash generieren]])|+
  
-== Beispiel == +  - Transaktion initiieren 
-{{page>codesamples:giropay#bankstatus.request&noheader&nofooter}}+  - Bezahlinformation an Händler übermitteln 
 +  - Bezahlinformation mit Käuferbrowserweiterleitung zurück zum Händler (durch Käufer nach Zahlung ausgelöst oder automatisch nach einigen Sekunden)
  
-=== Antwort === +Im Folgenden werden die API-Felder und Aufrufe näher erläutert.
-Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode. Wird **rc = 0** zurückgeliefert, unterstützt die angefragte Bank giropay, sonst enthält er einen entsprechenden Fehlercode. Zusätzliche Informationen zur Unterstützung von giropay und giropay-ID sind den Elementen //giropay// und //giropayid// zu entnehmen. Sind zusätzliche Informationen zur Bank bekannt, werden diese ebenfalls zurückgeliefert. +
- +
-== JSON-Parameter == +
-^Name           ^Pflicht  ^Type      ^Beschreibung   ^ +
-|rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] | +
-|msg            |Ja       |String    |zusätzliche Informationen im Fehlerfall | +
-|bankcode       |Optional |Integer   |Bankleitzahl| +
-|bic            |Optional |String    |BIC, wenn vorhanden | +
-|bankname       |Optional |String    |Bankname | +
-|giropay        |Optional |Integer   |0 = giropay Zahlung wird nicht unterstützt \\ 1 = giropay Zahlung wird unterstützt | +
-|giropayid      |Optional |Integer   |0 = giropay-ID und giropay-ID + giropay wird nicht unterstützt \\ 1 = giropay-ID und giropay-ID + giropay wird unterstützt | +
-^HEADER Parameter^^^^ +
-|hash           |Ja       |String    |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] | +
- +
-== Beispiel im Erfolgsfall == +
-{{page>codesamples:giropay#bankstatus.response.true&noheader&nofooter}} +
- +
-== Beispiel im Fehlerfall == +
-{{page>codesamples:giropay#bankstatus.response.false&noheader&nofooter}} +
- +
-==== giropay Bankenabfrage ==== +
-**Dieser Aufruf sollte nicht mehr verwendet werden, alle giropay-Transaktionen werden jetzt mit einer externen Bankenabfrage durchgeführt!** +
- +
-Gibt eine Liste zurück, welche alle giropay Banken enthält. Aus dieser Bankenliste muss der Käufer seine Bank auswählen.  +
- +
-**URL:** https://payment.girosolution.de/girocheckout/api/v2/giropay/issuer \\ +
-**Bereitzustellen von:** GiroSolution AG \\ +
-**Aufzurufen von:** Händler +
- +
-== POST Parameter == +
-^Name           ^Pflicht  ^Type      ^Beschreibung   ^ +
-|merchantId     |Ja       |Integer   |Händler-ID eines giropay Projekts | +
-|projectId      |Ja       |Integer   |Projekt-ID eines giropay Projekts | +
-|hash           |Ja       |String(32)|HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]]| +
- +
-== Beispiel == +
-{{page>codesamples:giropay#issuer.request&noheader&nofooter}} +
- +
-=== Antwort === +
-Die Antwort enthält ein JSON Objekt. Wenn **rc = 0** zurückgeliefert wird, enthält das Element **issuer** die zur Verfügung stehenden Banken.  +
- +
-== Parameter == +
-^Name           ^Pflicht  ^Type      ^Beschreibung   ^ +
-|rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] | +
-|msg            |Ja       |String    |Zusätzliche Informationen im Fehlerfall | +
-|issuer         |Optional |Array     |Liste der giropay issuer Banken bestehend aus dem Key BIC und dem Bankname | +
-^HEADER Parameter^^^^ +
-|hash           |Ja       |String    |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] | +
- +
-== Beispiel == +
-{{page>codesamples:giropay#issuer.response&noheader&nofooter}}+
  
  
 ==== Initialisierung einer giropay Zahlung ==== ==== Initialisierung einer giropay Zahlung ====
- 
-Die Initialisierung einer giropay Zahlung kann mit oder ohne der Altersverifikation (giropay-ID) stattfinden. Diese Unterscheidung wird ausschließlich anhand der übermittelten projectId getroffen.  
  
 Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitunslink (redirect) an den Händler übermittelt. Der übermittelte Link führt zum Onlinebanking des Käufers. Er muss an diese URL weitergeleitet werden. Dies kann durch einen HTTP-Redirect-Header, eine HTML-Seite mit entsprechendem Meta-Tag oder Javascript erfolgen.  Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitunslink (redirect) an den Händler übermittelt. Der übermittelte Link führt zum Onlinebanking des Käufers. Er muss an diese URL weitergeleitet werden. Dies kann durch einen HTTP-Redirect-Header, eine HTML-Seite mit entsprechendem Meta-Tag oder Javascript erfolgen. 
Zeile 167: Zeile 143:
  
 == POST Parameter == == POST Parameter ==
-^Name           ^Pflicht  ^^^Type        ^Beschreibung   ^ +^Name           ^Pflicht ^Type        ^Beschreibung   ^ 
-^           ^giropay^giropay-ID^giropay+giropay-ID  ^        ^   ^ +|merchantId     |Ja       |Integer     |Händler-ID eines giropay Projekts | 
-|merchantId     |Ja       |Ja       |Ja       |Integer     |Händler-ID eines giropay Projekts | +|projectId      |Ja       |integer     |Projekt-ID eines giropay Projekts | 
-|projectId      |Ja       |Ja       |Ja       |integer     |Projekt-ID eines giropay Projekts | +|merchantTxId   |Ja       |String(255) |eindeutige Transaktions-ID des Händlers. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # /  
-|merchantTxId   |Ja       |Ja       |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 | 
-|amount         |Ja               |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\\ EUR = Euro| 
-|currency       |Ja               |Ja       |String(3)   |Währung der Transaktion\\ EUR = Euro| +|purpose        |Ja       |String(27)  |Verwendungszweck der giropay Überweisung. Zulässige Zeichen entsprechend dem SEPA-Zeichensatz (s. [[girocheckout:giropay:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]). 
-|purpose        |Ja               |Ja       |String(27)  |Verwendungszweck der giropay Überweisung | +|type           |Ja |String(4)      |Transaktionsart (siehe [[girocheckout:transactiontypes:start]]) \\ SALE = Verkauf wird sofort gebucht (default) \\ AUTH = Reservierung des Betrags | 
-|bic            |**deprecated** |**deprecated** |**deprecated** |String(11 |**Dieser Parameter darf nicht mehr verwendet werdenalle giropay-Transaktionen werden jetzt mit einer externen Bankenabfrage durchgeführt!** BIC der Käuferbank (8 oder 11-stellig) | +|shoppingCartType |Optional | String(19) |Typ des Warenkorbs. Folgende Werte sind zulässig: \\ PHYSICAL = Alle Waren im Warenkorb sind physischer Natur, \\ DIGITAL = Alle Waren im Warenkorb sind digitaler Natur (benötigen also keinen Versand), \\ MIXED = Der Warenkorb enthält sowohl physische als auch digitale Waren (dies ist der Default-Wert, wenn der Parameter nicht angegeben wird), \\ ANONYMOUS_DONATION = Es handelt sich um eine anonyme Spende (keine Adressdaten notwendig), \\ AUTHORITIES_PAYMENT = Es handelt sich um eine Behördenzahlung (keine Adressdaten notwendig) | 
-|iban           |Optional |Optional |Optional |String(34 |IBAN der Kundenbankverbindung **ohne Leerzeichen**| +|shippingAddresseFirstName |(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.
-|info1Label|Optional |Optional |Optional |String(30 |zusätzliche Information für die giropay Überweisungsseiten (Feldname) +|shippingAddresseLastName  |(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. 
-|info1Text |Optional |Optional |Optional |String(80 |zusätzliche Information für die giropay Überweisungsseiten (Information) +|shippingCompany      |Optional   |String(100  Firmenname. Zulässige Zeichen s. shippingAddresseLastName. 
-|info2Label|Optional |Optional |Optional |String(30)  |zusätzliche Information für die giropay Überweisungsseiten (Feldname) +|shippingAdditionalAddressInformation |Optional   |String(100) | Addresszusatz. Zulässige Zeichen s. shippingAddresseLastName. 
-|info2Text |Optional |Optional |Optional |String(80 |zusätzliche Information für die giropay Überweisungsseiten (Information) +|shippingStreet       |Optional      |String(100| Straße des Addressaten. Zulässige Zeichen s. shippingAddresseLastName.  | 
-|info3Label|Optional |Optional |Optional |String(30 |zusätzliche Information für die giropay Überweisungsseiten (Feldname) | +|shippingStreetNumber |Optional    |String(10   Hausnummer des Addressaten. Zulässige Zeichen s. shippingAddresseLastName. 
-|info3Text |Optional |Optional |Optional |String(80 |zusätzliche Information für die giropay Überweisungsseiten (Information) | +|shippingZipCode      |(s. Beschr.)      |String(10) PLZ des Addressaten. **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen s. shippingAddresseLastName. | 
-|info4Label|Optional |Optional |Optional |String(30)  |zusätzliche Information für die giropay Überweisungsseiten (Feldname) | +|shippingCity         |(s. Beschr.     |String(100| Ort des Addressaten.  **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. Zulässige Zeichen s. shippingAddresseLastName. 
-|info4Text |Optional |Optional |Optional |String(80 |zusätzliche Information für die giropay Überweisungsseiten (Information) | +|shippingCountry      |(s. Beschr.)     |String(2) | Ländercode (nach ISO 3166-1). **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. 
-|info5Label|Optional |Optional |Optional |String(30)  |zusätzliche Information für die giropay Überweisungsseiten (Feldname) +|shippingEmail        |(s. Beschr.)     |String(255)  | Email-Adresse des Käufers. **Pflicht** bei digitalen Warenkörben (DIGITAL), bei allen anderen optional. 
-|info5Text |Optional |Optional |Optional |String(80)  |zusätzliche Information für die giropay Überweisungsseiten (Information) | +|merchantOrderReferenceNumber  |Optional         |String(20   Zusatzinformation für die Zahlungszuordnung, die im Verwendungszweck angezeigt wird (nur bei type=SALE). Zulässige Zeichen entsprechend dem SEPA-Zeichensatz (s. [[girocheckout:giropay:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]).  
-|urlRedirect    |Ja       |Ja       |Ja       |String      |URL, an die der Kunde nach der Zahlung geschickt werden soll. | +|cart           |Optional      |JSON String | alle Elemente des Warenkorbs im folgenden Format: s. weiter unten:  [[girocheckout:giropay:start#cart-element|Beschreibung cart-Element]]. Zulässige Zeichen s. shippingAddresseLastName. 
-|urlNotify      |Ja       |Ja       |Ja       |String      |URL, an die der Zahlungsausgang gemeldet werden soll. | +|deliveryType |Optional | String(12)  |Typ des Versands. Folgende Werte sind zulässig: \\ STANDARD = Die Ware wird an eine normale Postadresse versandt (dies ist der Default-Wert, wenn der Parameter nicht angegeben wird), \\ PACKSTATION = Die Waren werden an eine Selbstbedienungs-Packstation für Pakete geliefert, \\ STORE_PICKUP = Die Waren werden in der Geschäftsstelle des Verkäufers abhgeholt. 
-|hash           |Ja       |Ja       |Ja       |String      |HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] | +|urlRedirect    |Ja       |String(2048) |URL, an die der Kunde nach der Zahlung geschickt werden soll. | 
- +|urlNotify      |Ja       |String(2048) |URL, an die der Zahlungsausgang gemeldet werden soll. 
- +|kassenzeichen  |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. | 
-<WRAP center round info 60%> +|giropayCustomerId     |Optional |String(20)   | Kundennummer, max. Länge: 20 
-Mit den info Parametern können zusätzliche Informationen auf den giropay Überweisungsseiten angezeigt werden. Es sind max. 5 Elemente möglich. Eine Information besteht immer aus einem Label und einer Information. +|hash           |Ja       |String(32)   |HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
-</WRAP>+
  
  
Zeile 206: Zeile 181:
 ^Name           ^Pflicht  ^Type      ^Beschreibung   ^ ^Name           ^Pflicht  ^Type      ^Beschreibung   ^
 |rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] | |rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] |
-|msg            |Ja       |String    |zusätzliche Informationen im Fehlerfall | +|msg            |Ja       |String(255)    |zusätzliche Informationen im Fehlerfall | 
-|reference      |Optional |String    |eindeutige GiroCheckout Transaktions-ID | +|reference      |Optional |String(36)    |eindeutige GiroCheckout Transaktions-ID | 
-|redirect       |Optional |String    |Redirect URL zur Weiterleitung des Kunden an sein Online Banking|+|redirect       |Optional |String(2048)    |Redirect URL zur Weiterleitung des Kunden an sein Online Banking|
 ^HEADER Parameter^^^^ ^HEADER Parameter^^^^
-|hash           |Ja       |String    |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] |+|hash           |Ja       |String(32)    |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] |
  
 == Beispiel im Erfolgsfall == == Beispiel im Erfolgsfall ==
Zeile 217: Zeile 192:
 == Beispiel im Fehlerfall == == Beispiel im Fehlerfall ==
 {{page>codesamples:giropay#transactionstart.response.false&noheader&nofooter}} {{page>codesamples:giropay#transactionstart.response.false&noheader&nofooter}}
 +
 +==== SEPA-konforme Zeichen ====
 +{{page>resources:sepa-chars&noheader&nofooter}}
 +
 +=== cart-Element ===
 +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 |
 +
 +== Beispiel ==
 +<code>
 +[ {
 +    "name" : "Bobbycar",
 +    "ean" : "800001303",
 +    "quantity" : 3,
 +    "grossAmount" : 2599
 +  }, {
 +    "name" : "Helm",
 +    "quantity" : 1,
 +    "grossAmount" : 1853
 +  } ]
 +</code>
  
 ==== Benachrichtigung über den Zahlungsausgang ==== ==== Benachrichtigung über den Zahlungsausgang ====
Zeile 222: Zeile 223:
 Der Ausgang einer giropay-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 Ausgang einer giropay-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 Zahlungausgang der giropay Transaktion steht im Feld gcResultPayment. Wurde zusätzlich die giropay-ID-Überprüfung angefordert, steht das Ergebnis der Altersprüfung im Feld gcResultAVS.+Der Zahlungausgang der giropay Transaktion steht im Feld gcResultPayment. 
  
-Aufgrund des giropay-Ablaufes 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.+Am Ende des Bezahlvorganges auf giropay-Seite findet nach 5 Sekunden eine Weiterleitung an den Shop statt.
  
  
Zeile 233: Zeile 234:
  
 == GET Parameter == == GET Parameter ==
-^Name           ^Pflicht  ^^^Type        ^Beschreibung   ^ +^Name           ^Pflicht  ^Type        ^Beschreibung   ^ 
-^           ^giropay^giropay-ID^giropay+giropay-ID  ^        ^   ^ +|gcReference      |Ja  | String(36)  | GiroCheckout Transaktions-ID | 
-|gcReference      |Ja      |Ja      |Ja       |String      | GiroCheckout Transaktions-ID | +|gcMerchantTxId   |Ja  | String(255) | Händler Transaktions-ID | 
-|gcMerchantTxId   |Ja      |Ja      |Ja       |String      | Händler Transaktions-ID | +|gcBackendTxId    |Ja  | String(36)  | Zahlungsabwickler Transaktions-ID | 
-|gcBackendTxId    |Ja      |Ja      |Ja       |String      | Zahlungsabwickler Transaktions-ID | +|gcAmount         |Ja  | Integer     | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent | 
-|gcAmount         |Ja             |Ja       |Integer     | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent | +|gcCurrency       |Ja  | String(3)   | Währung | 
-|gcCurrency       |Ja             |Ja       |String      | Währung | +|gcResultPayment  |Ja  | Integer/String(1) String "0" oder numerischer [[girocheckout:resultcodes#zahlungsausgang|Ergebniscode der giropay Zahlung]]| 
-|gcResultPayment  |Ja             |Ja       |Integer     | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der giropay Zahlung]]| +|gcHash           |Ja  | String(32 | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
-|gcResultAVS      |        |Ja      |Ja       |Integer     | [[girocheckout:resultcodes#altersverifikation|Ergebniscodes der giropay Altersverifikation]] | +
-|gcObvName        | |Optional |Optional |String | Optional zuschaltbares Feld, welches den Namen der zu verifizierenden Person beinhaltet (giropay-ID+
-|gcHash           |Ja      |Ja      |Ja       |String      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |+
  
 === Antwort === === Antwort ===
Zeile 254: Zeile 252:
  
 ==== Rückleitung des Kunden zum Händler ==== ==== Rückleitung des Kunden zum Händler ====
-Nach Beendigung der giropay 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+Nach Beendigung der giropay Zahlung kann der Kunde über einen Link zurück zum Händler kommen. Nach 5 Sekunden erfolgt aber auch eine automatische Weiterleitung. 
  
 === Anfrage === === Anfrage ===
Zeile 264: Zeile 262:
 ^Name           ^Pflicht  ^^^Type        ^Beschreibung   ^ ^Name           ^Pflicht  ^^^Type        ^Beschreibung   ^
 ^           ^giropay^giropay-ID^giropay+giropay-ID  ^        ^   ^ ^           ^giropay^giropay-ID^giropay+giropay-ID  ^        ^   ^
-|gcReference      |Ja      |Ja      |Ja       |String      | GiroCheckout Transaktions-ID | +|gcReference      |Ja      |Ja      |Ja       |String(36)  | GiroCheckout Transaktions-ID | 
-|gcMerchantTxId   |Ja      |Ja      |Ja       |String      | Händler Transaktions-ID | +|gcMerchantTxId   |Ja      |Ja      |Ja       |String(255) | Händler Transaktions-ID | 
-|gcBackendTxId    |Ja      |Ja      |Ja       |String      | Zahlungsabwickler Transaktions-ID |+|gcBackendTxId    |Ja      |Ja      |Ja       |String(36)  | Zahlungsabwickler Transaktions-ID |
 |gcAmount         |Ja      |        |Ja       |Integer     | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent | |gcAmount         |Ja      |        |Ja       |Integer     | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent |
-|gcCurrency       |Ja      |        |Ja       |String      | Währung | +|gcCurrency       |Ja      |        |Ja       |String(3)   | Währung | 
-|gcResultPayment  |Ja      |        |Ja       |Integer     | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der giropay Zahlung]]+|gcResultPayment  |Ja      |        |Ja       |Integer/String(1) String "0" oder numerischer [[girocheckout:resultcodes#zahlungsausgang|Ergebniscode der giropay Zahlung]]| 
-|gcResultAVS      |        |Ja      |Ja       |Integer     | [[girocheckout:resultcodes#altersverifikation|Ergebniscodes der giropay Altersverifikation]] | +|gcHash           |Ja      |Ja      |Ja       |String(32)  | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
-|gcObvName        | |Optional | Optional|String | Optional zuschaltbares Feld, welches den Namen der zu verifizierenden Person beinhaltet (giropay-ID) +
-|gcHash           |Ja      |Ja      |Ja       |String      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |+
  
 ===== Senderinformationen abrufen ===== ===== Senderinformationen abrufen =====
Zeile 298: Zeile 294:
 ^Name           ^Pflicht  ^Type      ^Beschreibung   ^ ^Name           ^Pflicht  ^Type      ^Beschreibung   ^
 |rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] | |rc             |Ja       |Integer   |[[girocheckout:errorcodes|Fehlernummer]] |
-|msg            |Ja       |String    |zusätzliche Informationen im Fehlerfall | +|msg            |Ja       |String(255)  |zusätzliche Informationen im Fehlerfall | 
-|accountholder  |Optional |String    |Inhaber des Absenderkontos| +|accountholder  |Optional |String(255)  |Inhaber des Absenderkontos| 
-|iban           |Optional |String    |IBAN des Absenderkontos | +|iban           |Optional |String(36)  |IBAN des Absenderkontos | 
-|bic            |Optional |String    |BIC des Absenderkontos |+|bic            |Optional |String(11)  |BIC des Absenderkontos |
 ^HEADER Parameter^^^^ ^HEADER Parameter^^^^
-|hash           |Ja       |String    |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] |+|hash           |Ja       |String(32) |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#uebermittlung_von_daten_ueber_einen_schnittstellenaufruf_an_den_haendler|hash der Rückantwort]] |
  
 == Beispiel im Erfolgsfall == == Beispiel im Erfolgsfall ==
Zeile 311: Zeile 307:
 {{page>codesamples:giropay#senderinfo.response.false&noheader&nofooter}} {{page>codesamples:giropay#senderinfo.response.false&noheader&nofooter}}
  
 +===== Weitere Transaktionsarten =====
 +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 \\
 +
 +==== Workflow ====
 +
 +<uml>
 +hide footbox
 +
 +participant "Shop" as shop
 +participant "GiroCheckout" as girocheckout
 +participant "giropay" as gp
 +
 +autonumber
 +
 +shop -> girocheckout: 
 +girocheckout -> gp: 
 +gp -> girocheckout: 
 +girocheckout -> shop: 
 +
 +center footer (c)2024 by S-Public Services GmbH
 +</uml>
 +
 +  - Shop sendet referenzierende Transaktion
 +  - GiroCheckout leitet Transaktion zu giropay
 +  - giropay übermittelt Ergebnis an GiroCheckout
 +  - Shop bekommt Rückmeldung über Transaktionsausgang ([[girocheckout:paydirekt:start#benachrichtigung_ueber_den_zahlungsausgang|Benachrichtigung]])
 +
 +==== Buchen (CAPTURE) ====
 +{{page>girocheckout:transactiontypes:descriptions#capture.desc&noheader&nofooter}}
 +
 +<uml>
 +left to right direction
 +skinparam packageStyle rect
 +
 +rectangle AUTH {
 +  (auth) --> (CAPTURE)
 +}
 +</uml>
 +
 +==== Erstattung (REFUND) ====
 +{{page>girocheckout:transactiontypes:descriptions#refund.desc&noheader&nofooter}}
 +<uml>
 +left to right direction
 +skinparam packageStyle rect
 +
 +rectangle SALE{
 +  (sale) --> (REFUND)
 +}
 +rectangle AUTH {
 +  (auth) --> (REFUND )
 +}
 +</uml>
 +
 +=== 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   ^
 +^::: ^ CAPTURE ^ REFUND ^::: ^::: ^
 +|merchantId     |Ja       |Ja  |Integer     |Händler-ID eines giropay-Projekts |
 +|projectId      |Ja       |Ja |Integer     |Projekt-ID eines giropay-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äß [[http://de.wikipedia.org/wiki/ISO_4217#Aktuell_g.C3.BCltige_W.C3.A4hrungen|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  [[girocheckout:general:start#hash_generieren|hash generieren]] |
 +
 +== Beispiel ==
 +{{page>codesamples:giropay#capture.request&noheader&nofooter}}
 +
 +=== Antwort ===
 +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.
 +
 +== Parameter ==
 +^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     | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Zahlung]]|
 +|hash           |Ja       |String(32)      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
 +
 +== Beispiel im Erfolgsfall ==
 +{{page>codesamples:giropay#capture.response.true&noheader&nofooter}}
 +
 +== Beispiel im Fehlerfall ==
 +{{page>codesamples:giropay#capture.response.false&noheader&nofooter}}
 +
 +==== Stornierung (VOID) ====
 +{{page>girocheckout:transactiontypes:descriptions#void.desc&noheader&nofooter}}
 +
 +=== POST Parameter ===
 +URL VOID: https://payment.girosolution.de/girocheckout/api/v2/transaction/void
 +
 +^Name           ^Pflicht  ^Type        ^Beschreibung   ^
 +|merchantId     |Ja       |Integer     |Händler-ID eines giropay-Projekts |
 +|projectId      |Ja       |Integer     |Projekt-ID eines giropay-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  [[girocheckout:general:start#hash_generieren|hash generieren]] |
 +
 +== Beispiel ==
 +{{page>codesamples:giropay#void.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 weitere Informationen zurück.
 +
 +== Parameter ==
 +^Name             ^Pflicht  ^Type        ^Beschreibung   ^
 +|rc             |Ja       |Integer   |[[girocheckout:errorcodes|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     | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Transaktion]]|
 +|hash           |Ja       |String(32)      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
 +
 +== Beispiel im Erfolgsfall ==
 +{{page>codesamples:giropay#void.response.true&noheader&nofooter}}
 +
 +== Beispiel im Fehlerfall ==
 +{{page>codesamples:giropay#void.response.false&noheader&nofooter}}
  
girocheckout/giropay/start.txt · Zuletzt geändert: 2024/03/13 20:52

Seiten-Werkzeuge