Benutzer-Werkzeuge

Webseiten-Werkzeuge


girocheckout:paypage: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:paypage:start [2020/05/07 19:06]
michaelheumann [Benachrichtigung über den Transaktionsausgang]
girocheckout:paypage:start [2023/05/08 04:11] (aktuell)
michaelheumann
Zeile 1: Zeile 1:
 ~~NOCACHE~~ ~~NOCACHE~~
 ====== Payment Page ====== ====== Payment Page ======
 +
 +<WRAP center round info>
 +==== Wichtiger Hinweis zu giropay und paydirekt ====
 +Die Zahlungsarten giropay und paydirekt erfahren derzeit wichtige Änderungen, die auch Auswirkungen auf die API haben.  Beachten Sie hierzu insbesondere die neuen Felder der Payment-Page-Schnittstelle unter [[girocheckout:paypage:start#initialisierung_einer_zahlung_ueber_die_payment_page|Initialisierung]].
 +
 +Die neuen optionalen Felder sind:
 +  * paydirektShoppingCartTypefg
 +  * paydirektShippingCompany
 +  * paydirektShippingAdditionalAddressInformation
 +  * paydirektShippingStreet
 +  * paydirektShippingStreetNumber
 +  * paydirektShippingEmail
 +  * paydirektMerchantOrderReferenceNumber
 +  * paydirektCart
 +  * paydirektDeliveryType
 +
 +Beachten Sie ferner den Hinweis bzgl. des Verwendungszwecks weiter unten.
 +</WRAP>
 +
 +<WRAP center round info 80%>
 +**Änderung an der API** \\
 +Folgende Änderung an der API wird in diesen Tagen durchgeführt: \\
 +Der Parameter paydirektMerchantReconciliationReferenceNumber wird ersetzt durch paydirektMerchantOrderReferenceNumber, welcher weiterhin optional ist aber nur 20 Zeichen lang sein darf. Man beachte auch die unten angegebenen Restriktionen bzgl. der zugelassenen Zeichen.
 +</WRAP>
 +
 +
 +<WRAP hide>
 +Nähere Informationen - insbesondere auch zu Migration und Settlement - finden Sie auf unserer neuen [[girocheckout:giropay-overview:start|Übersichtsseite zu giropay]]. Dort finden Sie auch einen [[/girocheckout:giropay-overview:start#vergleich_alte_und_neue_schnittstelle|Vergleich der alten und neuen Schnittstelle]].
 +</WRAP>
 +
 In diesem Dokument werden alle Abläufe und Schnittstellen beschrieben, die zur Integration der GiroCheckout Payment Page notwendig sind. In diesem Dokument werden alle Abläufe und Schnittstellen beschrieben, die zur Integration der GiroCheckout Payment Page notwendig sind.
  
Zeile 6: Zeile 36:
  
 **Beispiel** **Beispiel**
- 
  
 {{:girocheckout:paypage:paypage_example.png?800|Beispiel Payment Page}} {{:girocheckout:paypage:paypage_example.png?800|Beispiel Payment Page}}
 +
 +
 +
 +<WRAP center round info>
 +==== Hinweis zum Verwendungszweck ====
 +Je nach Zahlungsart, die am Ende vom Zahler ausgewählt wird, werden u.U. nicht alle Zeichen des Verwendungszweckes weitergegeben, da es dort geringere Längen geben kann, z.B. 27 Zeichen bei giropay.
 +
 +Der finale Verwendungszweck wird von der Payment Page bei Bedarf entsprechend angepasst, indem unzulässige Zeichen entfernt und das Ergebnis dann auf die maximal zulässige Länge gekürzt wird (s. auch Dokumentationen der jeweiligen Zahlungsarten). So sind im Endergebnis bei giropay z.B. nur SEPA-konforme Zeichen zulässig (s. [[girocheckout:paypage:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]).
 +</WRAP>
 +
 +
 +==== Hinweis zu 3-D Secure 2.0 ====
 +
 +Seit dem 01.01.2021 ist das neue Sicherheitsverfahren für Kreditkartenzahlungen "3D Secure 2.0", das im Zuge von PSD2 eingeführt wird, für alle Zahlungsanbieter Pflicht. Die vorliegende API-Beschreibung enthält alle hierfür notwendigen Felder (beginnend mit "tds2"), s. [[girocheckout:paypage:start#initialisierung_einer_zahlung_ueber_die_payment_page|Transaktionsinitialisierung]] weiter unten.
 +
 +**Beachten Sie**: Die Parameter bzgl. 3-D Secure 2.0 können sich aufgrund von Änderungen der EMVCo 3-D Secure-Spezifikation ändern.
 +
  
 ===== Unterstützte Zahlungsarten ===== ===== Unterstützte Zahlungsarten =====
Zeile 22: Zeile 68:
 | Lastschrift | 6 | | Lastschrift | 6 |
 | Lastschrift mit Sperrdatei | 7 | | Lastschrift mit Sperrdatei | 7 |
-| Garantierte Lastschrift | 8 | 
 | Bluecode | 26 | | Bluecode | 26 |
 | Maestro | 33 | | Maestro | 33 |
Zeile 62: Zeile 107:
 shop -> customer: shop -> customer:
  
-center footer (c)2017 by GiroSolution AG+center footer (c)2017 by S-Public Services GmbH
 </uml> </uml>
  
Zeile 85: Zeile 130:
    
 **URL:** https://payment.girosolution.de/girocheckout/api/v2/paypage/projects \\ **URL:** https://payment.girosolution.de/girocheckout/api/v2/paypage/projects \\
-**Bereitzustellen von:** GiroSolution AG \\+**Bereitzustellen von:** S-Public Services GmbH \\
 **Aufzurufen von:** Händler **Aufzurufen von:** Händler
  
Zeile 103: Zeile 148:
 ^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 |
 |projects       |Optional |Array     |Liste der GiroCockpit-Projekte bestehend aus der Id (id), dem Projektnamen (name), der Nummer der zugehörigen Zahlungsart (paymethod, s. [[girocheckout:paypage:start#unterstuetzte_zahlungsarten|Liste der Zahlungsarten]]) und dem Modus (mode) = TEST oder LIVE. | |projects       |Optional |Array     |Liste der GiroCockpit-Projekte bestehend aus der Id (id), dem Projektnamen (name), der Nummer der zugehörigen Zahlungsart (paymethod, s. [[girocheckout:paypage:start#unterstuetzte_zahlungsarten|Liste der Zahlungsarten]]) und dem Modus (mode) = TEST oder LIVE. |
 ^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 == == Beispiel ==
Zeile 120: Zeile 165:
 |merchantId     |Ja  |Integer     |Händler-ID eines Paypage-Projekts | |merchantId     |Ja  |Integer     |Händler-ID eines Paypage-Projekts |
 |projectId      |Ja  |Integer     |Projekt-ID eines Paypage-Projekts | |projectId      |Ja  |Integer     |Projekt-ID eines Paypage-Projekts |
-|merchantTxId   |Ja  |String(255) |Eindeutige Transaktions-ID des Händlers | +|merchantTxId   |Ja  |String(255) |Eindeutige Transaktions-ID des Händlers. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # /  
-|amount         |Optional  |Integer     |Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny.  Dieser Parameter ist PFLICHT, außer es handelt sich um eine Spendenpage mit freier Betragseingabe oder mit mindestens einem fest vorgegebenen Betrag (also optional wenn pagetype == 2 und (freeamount=1 oder fixedvalues nicht leer)). |+|amount         |Optional  |Integer     |Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny, also ohne Nachkommastellen.  Dieser Parameter ist PFLICHT, außer es handelt sich um eine Spendenpage mit freier Betragseingabe oder mit mindestens einem fest vorgegebenen Betrag (also optional wenn pagetype == 2 und (freeamount=1 oder fixedvalues nicht leer)). |
 |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 | |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 Transaktion. Diese Information erscheint auf der Kartenabrechnung bzw. dem Kontoauszug. Es sind nur SEPA-konforme Zeichen zulässig (s. [[girocheckout:paypage:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]). Wenn pagetype=2 und projectlist nicht leer,  kann der Platzhalter {SPENDENPROJEKT} verwendet werden, der dann mit dem Namen des vom Kunden gewählten Projekts gefüllt wird. \\ Der Inhalt dieses Feldes (erste 20 Zeichen) wird auch verwendetum die orderid bei der Zahlungsart Paydirekt zu befüllenwenn diese nicht explizit angegeben ist (s. Parameter orderid). |+|purpose        |Ja  |String(50)  |Verwendungszweck der Transaktion. Diese Information erscheint auf der Kartenabrechnung bzw. dem Kontoauszug. Wenn pagetype=2 und projectlist nicht leer,  kann der Platzhalter {SPENDENPROJEKT} verwendet werden, der dann mit dem Namen des vom Kunden gewählten Projekts gefüllt wird. \\ Beachten bzgl. der max. Feldlänge: Je nach Zahlungsart, die am Ende vom Zahler ausgewählt wird, werden u.U. nicht alle Zeichen des Verwendungszweckes weitergegeben, da es dort geringere Längen geben kann, z.B. 27 Zeichen bei giropay. \\ Der finale Verwendungszweck wird von der Payment Page bei Bedarf entsprechend angepasstindem unzulässige Zeichen entfernt und das Ergebnis dann auf die maximal zulässige Länge gekürzt wird (s. auch Dokumentationen der jeweiligen Zahlungsarten). |
 |description    |Optional |String(120)   |Beschreibung für die Bezahlung. Wird nur auf der Payment Page angezeigt. Zulässige Zeichen s. [[girocheckout:paypage:start#zulässige_beschreibungszeichen|Zulässige Beschreibungszeichen]] | |description    |Optional |String(120)   |Beschreibung für die Bezahlung. Wird nur auf der Payment Page angezeigt. Zulässige Zeichen s. [[girocheckout:paypage:start#zulässige_beschreibungszeichen|Zulässige Beschreibungszeichen]] |
 |pagetype       |Optional |Integer |Typ der zu erzeugenden Bezahlseite: 0=normale API-Paypage (kompatibel zu früheren Paypages, Defaultwert), 1=Bezahlseite, 2=Spendenseite | |pagetype       |Optional |Integer |Typ der zu erzeugenden Bezahlseite: 0=normale API-Paypage (kompatibel zu früheren Paypages, Defaultwert), 1=Bezahlseite, 2=Spendenseite |
-|expirydate     |Optional |String(10) | Verfallsdatum: Leer=Bezahlseite ist immer gültig, JJJJ-MM-TT=Datumsangabe im Format Jahr-Monat-Tag, bis zu diesem Datum ist die Bezahlseite gültig. \\ Die Option 'once' ist **deprecated**, sollte also nicht mehr genutzt werden, weil sie in einer nächsten API-Version nicht mehr zur Verfügung stehen wird. Statt dessen, bitte single=2 verwenden. | +|expirydate     |Optional |String(10) | Verfallsdatum: \\  * Leer = Bezahlseite ist immer gültig, \\   JJJJ-MM-TT = Datumsangabe im Format Jahr-Monat-Tag, bis zu diesem Datum ist die Bezahlseite gültig (bis um 23:59:59 Uhr), \\  * JJJJ-MM-TT hh:mm:ss = Datumsangabe im Format "Jahr-Monat-Tag Stunde:Minute:Sekunde" (wobei die Uhrzeit in der Zeitzone CET angenommen wird, bzw. CEST im Europ. Sommer), bis zu diesem Datum und dieser Uhrzeit ist die Bezahlseite gültig. \\ Funktioniert nur bei pagetype 1 oder 2. \\ Die Option 'once' ist **deprecated**, sollte also nicht mehr genutzt werden, weil sie in einer nächsten API-Version nicht mehr zur Verfügung stehen wird. Statt dessen, bitte single=2 verwenden. | 
-|single         |Optional |Integer   |Steuert, ob und wie der Link wiederverwendet werden darf. \\ 0 = Link is beliebig oft wiederholbar (default) \\ 1 = Erlaubt nur einen einzigen Bezahlversuch für diesen Payment-Link, egal ob erfolgreich oder nicht \\ 2 = Bezahlseite kann nur für eine erfolgreiche Bezahlung genutzt werden, danach ungültig. +|single         |Optional |Integer   |Steuert, ob und wie der Link wiederverwendet werden darf. \\ 0 = Link ist beliebig oft wiederholbar (default) \\ 1 = Erlaubt nur einen einzigen Bezahlversuch für diesen Payment-Link, egal ob erfolgreich oder nicht \\ 2 = Bezahlseite kann nur für eine erfolgreiche Bezahlung genutzt werden, danach ungültig.  |  
 +|timeout        |Optional | Integer | Erlaubt die Angabe eines Timeouts für die Auswahl einer Zahlungsart auf der Payment Page. Der Timeout wird in Sekunden angegeben und wird aktiv, sobald die Seite angezeigt wird.  Er wird dort angezeigt und bei Ablauf wird auf eine Fehlermeldung weitergeleitet.  Neu Laden der Seite startet den Timeout NICHT neu, nur ein Löschen der Cookies hätte diesen Effekt. Wurde die Payment Page mit Parameter single=1 intialisiert, führt ein Ablauf des Timeouts dazu, dass der Link invalidiert wird. Für bestimmte Zahlungsarten (Lastschrift, Paypal, Kreditkarte) wird der Timeout ausgesetzt, sobald die Kachel der Zahlungsart aktiviert wird. Im Hintergrund läuft er aber weiter und greift wieder, sobald eine andere Zahlungsart gewählt wird.  Für die genannten 3 Zahlungsarten gibt es separate Timeouts, die für jede Zahlungsart im GiroCockpit konfiguriert werden können (nur durch administrative Mitarbeiter der GS). |
 |type           |Optional |String(4) |Transaktionsart (siehe [[girocheckout:transactiontypes:start]]), SALE = Verkauf wird sofort gebucht (default), AUTH = Reservierung des Betrags (nicht bei allen Zahlarten verfügbar) | |type           |Optional |String(4) |Transaktionsart (siehe [[girocheckout:transactiontypes:start]]), SALE = Verkauf wird sofort gebucht (default), AUTH = Reservierung des Betrags (nicht bei allen Zahlarten verfügbar) |
 |locale         |Optional |String(4)   |Sprache der Payment Page \\ de = deutsch (default) \\ en = englisch | |locale         |Optional |String(4)   |Sprache der Payment Page \\ de = deutsch (default) \\ en = englisch |
Zeile 134: Zeile 180:
 |organization   |Optional |String(70)|Name des Anbieters der Bezahl- oder Spendenseite.  Wenn nicht angegeben, wird der Name aus dem GiroCockpit verwendet.| |organization   |Optional |String(70)|Name des Anbieters der Bezahl- oder Spendenseite.  Wenn nicht angegeben, wird der Name aus dem GiroCockpit verwendet.|
 |freeamount     |Optional |Integer   |Gibt an, ob der Anwender einen freien Betrag eingeben darf (=1) oder nicht (=0, Defaultwert). | |freeamount     |Optional |Integer   |Gibt an, ob der Anwender einen freien Betrag eingeben darf (=1) oder nicht (=0, Defaultwert). |
-|fixedvalues    |Optional |String    |JSON-codierter String, der einen Array der zur Auswahl stehenden Beträge enthält. z.B. '["10000","20000","50050"]', alle Beträge sind in Cent anzugeben.  Ist dieses Feld leer, wird der Inhalt des Amount-Feldes als einziger fester Wert verwendet. Enthält dieses Feld Werte, wird der Betrag im Feld Amount ignoriert! | +|fixedvalues    |Optional |JSON-String    |JSON-codierter String, der einen Array der zur Auswahl stehenden Beträge enthält. z.B. '["10000","20000","50050"]', alle Beträge sind in Cent anzugeben.  Ist dieses Feld leer, wird der Inhalt des Amount-Feldes als einziger fester Wert verwendet. Enthält dieses Feld Werte, wird der Betrag im Feld Amount ignoriert! | 
-|minamount      |Optional |Integer   |Mindestwert, wenn ein freier Betrag eingegeben werden darf, also freeamount=1 ist. Fehlt dieser Wert, ist der Default 100, also 1 EUR. | +|minamount      |Optional |Integer   |Mindestwert, wenn ein freier Betrag eingegeben werden darf, also freeamount=1 ist. Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny, ohne Nachkommastellen. Fehlt dieser Wert, ist der Default 100, also z.B. 1,00 EUR. | 
-|maxamount      |Optional |Integer   |Maximalwert, wenn ein freier Betrag eingegeben werden darf, also freeamount=1 ist. |+|maxamount      |Optional |Integer   |Maximalwert, wenn ein freier Betrag eingegeben werden darf, also freeamount=1 ist. Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny, ohne Nachkommastellen. |
 |orderid        |Optional |String(20) |Wird nur bei Zahlungsart Paydirekt verwendet, wenn leer wird die orderid aus dem Purpose erzeugt. Es sind nur SEPA-konforme Zeichen zulässig (s. [[girocheckout:paypage:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]) | |orderid        |Optional |String(20) |Wird nur bei Zahlungsart Paydirekt verwendet, wenn leer wird die orderid aus dem Purpose erzeugt. Es sind nur SEPA-konforme Zeichen zulässig (s. [[girocheckout:paypage:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]) |
 |projectlist    |Optional |String    |JSON-codierter String, der einen Array der Projekte enthält (Strings=Projektnamen), für die auf dieser Spendenseite gespendet werden kann. Macht nur Sinn, wenn pagetype=2. \\ Example: ["School in Namibia","Wildlife protection Southafrica","Childcare Honduras"] | |projectlist    |Optional |String    |JSON-codierter String, der einen Array der Projekte enthält (Strings=Projektnamen), für die auf dieser Spendenseite gespendet werden kann. Macht nur Sinn, wenn pagetype=2. \\ Example: ["School in Namibia","Wildlife protection Southafrica","Childcare Honduras"] |
-|pkn            |Optional |String    |Das Feld dient dazu eine erneute Transaktion, ohne erneute Eingabe der Kreditkarten- oder Lastschriftdaten, zu starten. \\ create = neue Pseudo-Kartennummer für die verwendete Kreditkarte/Kontoverbindung generieren. |+|pkn            |Optional |String(50)    |Das Feld dient dazu eine erneute Transaktion, ohne erneute Eingabe der Kreditkarten- oder Lastschriftdaten, zu starten. \\ create = neue Pseudo-Kartennummer für die verwendete Kreditkarte/Kontoverbindung generieren. |
 |test           |Ja  |Integer     |1 = Zahlarten im Test-Modus werden angezeigt \\ 0 = Zahlarten im LIVE-Modus werden angezeigt | |test           |Ja  |Integer     |1 = Zahlarten im Test-Modus werden angezeigt \\ 0 = Zahlarten im LIVE-Modus werden angezeigt |
 |certdata       |Optional  | Integer | 1 = Formular für Abfrage der Spendenbescheinigungsdaten anbieten \\ 0 = Formular nicht anbieten (default) | |certdata       |Optional  | Integer | 1 = Formular für Abfrage der Spendenbescheinigungsdaten anbieten \\ 0 = Formular nicht anbieten (default) |
-|otherpayments  |Optional  | String  | JSON-formatierter Array of objects, der es erlaubt, optional externe Zahlungsarten in der Payment Page zu integrieren. Ein Klick auf diese Zahlungsart innerhalb der Payment Page leitet dann direkt an den angegebenen Link weiter, anstatt wie bei den anderen Zahlungsarten intern über GiroCheckout verarbeitet zu werden. Aktuell sind hier nur Zahlungsarten erlaubt, die in der Liste der unterstützten Arten enthalten sind (s. [[girocheckout:paypage:start#unterstuetzte_zahlungsarten|Zahlungsarten]]). \\ **Felder der Objekte:** \\ **id**: Nummer der Zahlungsart lt. obiger Tabelle. \\ **url**: Link, zu dem nach Auswahl weitergeleitet werden soll. Dieser Link muss alles enthalten, was seitens des externen Anbieters (z.B. PayPal) notwendig ist, um die Zahlung zu verarbeiten, die Payment Page nimmt keine Ersetzung von Parametern o.ä. vor. \\ **position**: Position innerhalb der angebotenen Zahlungsarten (>=1) \\ **Beispiel (PayPal und Kreditkarte):** \\ <nowiki>[{"id":14, "url": "https://www.paypal.de/process/123456&param1=48399", "position":1}, {"id":11, "url":"https://www.visa.com/wasauchimmer", "position":2}]</nowiki>  +|otherpayments  |Optional JSON-String  | JSON-formatierter Array of objects, der es erlaubt, optional externe Zahlungsarten in der Payment Page zu integrieren. Ein Klick auf diese Zahlungsart innerhalb der Payment Page leitet dann direkt an den angegebenen Link weiter, anstatt wie bei den anderen Zahlungsarten intern über GiroCheckout verarbeitet zu werden. Aktuell sind hier nur Zahlungsarten erlaubt, die in der Liste der unterstützten Arten enthalten sind (s. [[girocheckout:paypage:start#unterstuetzte_zahlungsarten|Zahlungsarten]]). \\ **Felder der Objekte:** \\ **id**: Nummer der Zahlungsart lt. obiger Tabelle. \\ **url**: Link, zu dem nach Auswahl weitergeleitet werden soll. Dieser Link muss alles enthalten, was seitens des externen Anbieters (z.B. PayPal) notwendig ist, um die Zahlung zu verarbeiten, die Payment Page nimmt keine Ersetzung von Parametern o.ä. vor. \\ **position**: Position innerhalb der angebotenen Zahlungsarten (>=1) \\ **Beispiel (PayPal und Kreditkarte):** \\ <nowiki>[{"id":14, "url": "https://www.paypal.de/process/123456&param1=48399", "position":1}, {"id":11, "url":"https://www.visa.com/wasauchimmer", "position":2}]</nowiki> 
-|paydirektShippingFirstName |Optional  | String(100)  | Vorname für die Lieferadresse (nur für paydirekt PHYSICAL-Bestellungen) |  +|paydirektShoppingCartType |Optional | String(19)    |Typ des Warenkorbs für giropay- und paydirekt-Zahlungen (nur neue giropay-Zahlungen). 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). \\ Wird der Wert nicht angegeben, der Kunde wählt aber giropay oder paydirekt als Zahlungsart, wird folgendes Verfahren angewendet, um einen Defaultwert zu ermitteln: \\ 1) Handelt es sich um eine Spendenseite (pagetype=2), wird ANONYMOUS_DONATION gesetzt. \\ 2) Ist der Händler bei S-Public Services als Kommune registriert, wird AUTHORITIES_PAYMENT genommen. \\ 3) Sind die paydirekt-Adressfelder für Vorname, Nachname, PLZ, Ort und Land gesetzt, wird MIXED gesetzt. \\ 4) Trifft keiner der Fälle 1-3 zu, wird MIXED als Defaultwert genommen und die Felder, die oben unter MIXED angegeben sind, auch als Parameter erwartet. 
-|paydirektShippingLastName  |Optional  | String(100)  | Nachname für die Lieferadresse (nur für paydirekt PHYSICAL-Bestellungen) | +|paydirektShippingFirstName |Optional  | String(100)  | Vorname für die Lieferadresse (nur für giropay- und paydirekt-Zahlung, **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. |  
-|paydirektShippingZipCode  |Optional  | String(10)  | Postleitzahl für die Lieferadresse (nur für paydirekt PHYSICAL-Bestellungen) | +|paydirektShippingLastName  |Optional  | String(100)  | Nachname für die Lieferadresse (nur für giropay- und paydirekt-Zahlung, **Pflicht** bei Warenkorbtypen PHYSICAL, DIGITAL und MIXED, optional bei ANONYMOUS_DONATION und AUTHORITIES_PAYMENT). Zulässige Zeichen s. paydirektShippingFirstName. | 
-|paydirektShippingCity  |Optional  | String(100)  | Ort für die Lieferadresse (nur für paydirekt PHYSICAL-Bestellungen) | +|paydirektShippingCompany      |Optional   |String(100)    | Firmenname (nur für giropayund paydirekt-Zahlungen). Zulässige Zeichen s. paydirektShippingFirstName. | 
-|paydirektShippingCountry  |Optional  | String(2)  | Ländercode (ISO 2-stellig) für die Lieferadresse (nur für paydirekt PHYSICAL-Bestellungen) | +|paydirektShippingAdditionalAddressInformation |Optional       |String(100) | Addresszusatz (nur für giropay- und paydirekt-Zahlungen). Zulässige Zeichen s. paydirektShippingFirstName. | 
-|successUrl     |Optional  |String      |URL, an die der Kunde nach erfolgreicher Zahlung weitergeleitet wird. | +|paydirektShippingStreet       |Optional      |String(100)    | Straße des Addressaten (nur für giropay- und paydirekt-Zahlungen). Zulässige Zeichen s. paydirektShippingFirstName. | 
-|backUrl        |Optional  |String      |URL, an die der Kunde weitergeleitet wird, wenn er auf Zurück klickt. | +|paydirektShippingStreetNumber |Optional    |String(10)    | Hausnummer des Addressaten (nur für giropay- und paydirekt-Zahlungen). Zulässige Zeichen s. paydirektShippingFirstName. 
-|failUrl        |Optional  |String      |URL, an die der Kunde nach erfolgloser Zahlung weitergeleitet wird. | +|paydirektShippingZipCode  |Optional  | String(10)  | Postleitzahl für die Lieferadresse (nur für giropay- und paydirekt-Zahlungen, **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT). Zulässige Zeichen s. paydirektShippingFirstName. 
-|notifyUrl      |Optional  |String      |URL, an die in einer Server-to-Server-Verbindung die Payment Notification geschickt wird. | +|paydirektShippingCity  |Optional  | String(100)  | Ort für die Lieferadresse (nur für giropay- und paydirekt-Zahlungen, **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT). Zulässige Zeichen s. paydirektShippingFirstName. 
-|hash           |Ja  |String      |HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |+|paydirektShippingCountry  |Optional  | String(2)  | Ländercode (ISO 2-stellig) für die Lieferadresse (nur für giropay- und paydirekt-Zahlungen, **Pflicht** bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT) | 
 +|paydirektShippingEmail    |Optional  |String(255)    | Email-Adresse des Käufers (nur für giropay- und paydirekt-Zahlungen, **Pflicht** bei digitalen Warenkörben (DIGITAL), bei allen anderen optional
 +|paydirektMerchantOrderReferenceNumber  |Optional         |String(20)    | Zusatzinformation für die Zahlungszuordnung für giropay- und paydirekt-Zahlungen, die im Verwendungszweck angezeigt wird (nur bei type=SALE).  Nur SEPA-konforme Zeichen sind hier zulässig (s. [[girocheckout:paypage:start#sepa-konforme_zeichen|SEPA-konforme Zeichen]]) | 
 +|paydirektCart           |Optional      |JSON-String | Nur für giropay- und paydirekt-Zahlungen: Alle Elemente des Warenkorbs im folgenden Format: s. weiter unten:  [[girocheckout:paydirekt:start#cart-element|Beschreibung cart-Element]] | 
 +|paydirektDeliveryType |Optional | String(12)    |Nur für giropay- und paydirekt-Zahlungen: 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. 
 +|successUrl     |Optional  |String(2048)      |URL, an die der Kunde nach erfolgreicher Zahlung weitergeleitet wird. | 
 +|backUrl        |Optional  |String(2048)      |URL, an die der Kunde weitergeleitet wird, wenn er auf Zurück klickt. | 
 +|failUrl        |Optional  |String(2048)      |URL, an die der Kunde nach erfolgloser Zahlung weitergeleitet wird. | 
 +|notifyUrl      |Optional  |String(2048)      |URL, an die in einer Server-to-Server-Verbindung die Payment Notification geschickt wird. | 
 +|tds2Address |Optional |String(50) | 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(10) | 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(50) | 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(2) | 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. | 
 +|tds2Optional |Optional |JSON-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 [[girocheckout:paypage:start#d_secure_20_optionale_felder_tds2optional|3D Secure 2.0 Optionale Felder (tds2Optional)]] zu finden| 
 +|mandateReference | Optional |String(35)  |Mandatsreferenz \\ Wird keine angegeben, wird eine eindeutige Mandatsreferenz generiert. Die Mandatsreferenz ist in der Antwort enthalten.  \\ 
 +    Ziffern: 0 – 9   
 +    Buchstaben: A – Z und a – z   
 +    Sonderzeichen: ' : \ , ? - + . ( ) / 
 +
 +|mandateSignedOn | Optional |String(10)| Datum im Format JJJJ-MM-TT, wann das SEPA-Lastschriftmandat erteilt wurde. Wenn kein Datum angegeben wird, wird das aktuelle Datum verwendet. | 
 +|mandateReceiverName |Optional |String(70)| Names des Empfängers, der im SEPA Mandat verwendet wurde. Falls nichts angegeben, wird der in den Stammdaten hinterlegte Firmenname verwendet. \\ 
 +    Ziffern: 0 – 9   
 +    Buchstaben: A – Z und a – z   
 +    Sonderzeichen: & / = + , : ; . _ - ! ?  
 +
 +|mandateSequence | Optional |Integer |Sequenztyp der SEPA-Lastschrift. Falls nichts angegeben, wird eine Einmalzahlung angenommen. \\ 1 = Einmalzahlung (default) \\ 2 = erste Zahlung einer Sequenz \\ 3 = Folgezahlung \\ 4 = letzte Zahlung einer Sequenz | 
 +|informationText | Optional | String(300) | Hinweistext, der in der Payment Page oberhalb der Zahlartenauswahl angezeigt wird. Dieser Text darf bestimmte HTML-Tags enthalten: <a> <em> <strong> <ul> <ol> <li> <dl> <dt> <dd>. Wichtig ist dabei, dass - wenn ein <a> Tag enthalten ist - dieser im Link das Protokoll enthalten muss (http:%%//%% oder https:%%//%%) und außerdem ein target-Attribut enthalten muss (i.d.R. target="_blank"),  Die maximale Länge des Textes (Tags ausgenommen) ist 300.\\ Das Aussehen der Hinweisbox kann in gewissem Rahmen angepasst werden, dazu muss aber ein Custom-Design der Payment Page für den Kunden angelegt werden.  Nehmen Sie hierzu Konktakt mit dem Support auf. | 
 +|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. | 
 +|qrcodeReturn  |Optional |Integer      |Optionales Feld, das die Erzeugung eines QR-Codes für den Bezahllink auslöst.  Dieser wird dann im Return-Parameter "qrcode" als base64-codierter String (PNG-Bild) zurückgeliefert.  Der Wert von qrcodeReturn ist eine ganze Zahl zwischen 1 und 20 und definiert die Größe des QR-Codes (1=kleinste Größe, 20=größte Größe). | 
 +|hash           |Ja  |String(32)      |HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
  
 === SEPA-konforme Zeichen === === SEPA-konforme Zeichen ===
-{{page>girocheckout:paypage:sepa:start&noheader&nofooter}}+{{page>resources:sepa-chars&noheader&nofooter}}
  
 === Zulässige Beschreibungszeichen === === Zulässige Beschreibungszeichen ===
Zeile 164: Zeile 239:
   * Symbole, die sich auf Währungen beziehen (also $ und € usw.)   * Symbole, die sich auf Währungen beziehen (also $ und € usw.)
   * Länge zwischen 1 und 60 Zeichen   * Länge zwischen 1 und 60 Zeichen
 +
 +=== 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)
 +
 +Insgesamt gibt es folgende Feldern (alle optional, Felder in Unterobjekten sind mit [Unterobjektname].[Feld] dargestellt):
 +
 +^Name           ^Datentyp     ^Beschreibung   ^
 +|email |String(254) | E-Mail-Adresse des Karteninhabers, Format A-Z, a-z, 0-9, [_.+-@], max. 254. |
 +|addressesMatch |Boolean  | Lieferadresse entspricht Rechnungsadresse, ja="true", nein="false", kein Unterobjekt sondern Feld direkt im Hauptobjekt. |
 +^**//billingAddress//**  ^^^
 +|billingAddress.line2 |String(50) | Zeile 2 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|billingAddress.line3 |String(50) | Zeile 3 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|billingAddress.state |String(3) | Bundesland der Rechnungsadresse o.ä. Format A-Z, max. 3, Kürzel gemäß ISO 3166-2 |
 +^**//shippingAddress//**  ^^^
 +|shippingAddress.line1 |String(50) | Zeile 1 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|shippingAddress.line2 |String(50) | Zeile 2 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|shippingAddress.line3 |String(50) | Zeile 3 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|shippingAddress.postcode |String(10) |Postleitzahl der Lieferadresse, Format A-Z, a-z, 0-9, Blank, [-], max. 11 |
 +|shippingAddress.city |String(50) | Ort der Lieferadresse, Format A-Z, a-z, 0-9, Blank, [-/().,&'], max. 50 |
 +|shippingAddress.state |String(50) | Bundesland der Lieferadresse o.ä. Format A-Z, max. 3, Kürzel gemäß ISO 3166-2 |
 +|shippingAddress.country |String(2) | 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(15) | 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(15) | 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(50) | Rest der der Arbeits-Telefonnummer, Format 0-9, max. 15, ohne führende Nullen, z.B. 73482984938. |
 +^**//cardholderAccountInfo//**  ^^^
 +|cardholderAccountInfo.accountAgeIndicator |String(12) | 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(12) | 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(12) | 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(12) | 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(12) | 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(9) | 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(4) | 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(254) | 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(9) | Mögliche Werte: "available" - die Ware ist bereits verfügbar, "future" - die Ware ist erst in der Zukunft verfügbar. |
 +|tdsMerchantRiskIndicators.reorderItemsIndicator |String(9) | Gibt an, ob der Kunde Artikel bereits zuvor bestellt hat. Mögliche Werte: "first" - erste Bestellung, "reordered" - erneute Bestellung. |
 +|tdsMerchantRiskIndicators.shippingIndicator |String(16) | 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(2048) | 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(17) | 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(17) | Art der 3-D Secure 2.0 Zahlung. Mögliche Werte: "purchase" - Einkauf, "checkAcceptance", "accountFunding", "quasiCash", "prepaidActivation". |
 +
 +== Beispiel eines tds2Optional-Strings (zu Demonstrationszwecken formatiert, sollte normalerweise in einer Zeile angegeben werden) ==
 +<code>
 +{
 +  "email": "myemail@example.com",
 +  "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"
 +  }
 +}
 +</code>
  
 == Beispiel == == Beispiel ==
Zeile 174: Zeile 382:
 ^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 Payment Page ID | +|reference      |Optional |String(36)    |eindeutige Payment Page ID | 
-|url       |Optional |String    |URL zur Payment Page, an die der Kunde weitergeleitet werden muss.|+|url            |Optional |String(255)    |URL zur Payment Page, an die der Kunde weitergeleitet werden muss.| 
 +|qrcode         |Optional |String    |Base64-codierter String, der eine PNG-Datei mit dem QR-Code der URL (s. vorheriges Feld) enthält. Dieses Feld ist nur vorhanden, wenn bei der Initialisierung der Parameter "qrcodeReturn" angegeben wurde.  Die Größe des QR-Codes wird dabei durch den dort angegebenen numerischen Wert zwischen 1-20 bestimmt. |
 ^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 185: Zeile 394:
 == Beispiel im Fehlerfall == == Beispiel im Fehlerfall ==
 {{page>codesamples:paypage#transactionstart.response.false&noheader&nofooter}} {{page>codesamples:paypage#transactionstart.response.false&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>
 +
  
  
Zeile 203: Zeile 436:
  
 ^Name             ^Pflicht    ^  Typ        ^Beschreibung   ^ ^Name             ^Pflicht    ^  Typ        ^Beschreibung   ^
-|gcPaymethod      |Ja       |Integer     | ID der Zahlungsart der Transaktion | +|gcPaymethod      |Ja       |Integer     | ID der Zahlungsart der Transaktion, s. [[girocheckout:paypage:start#unterstuetzte_zahlungsarten|Zahlungsarten]] 
-|gcType           |Ja       |String      | Transaktionsart: \\ SALE \\ AUTH | +|gcType           |Ja       |String(4)      | Transaktionsart: \\ SALE \\ AUTH | 
-|gcProjectId      |Ja       |String      | GiroCheckout Projekt-Id, über die die Transaktion abgewickelt wurde. | +|gcProjectId      |Ja       |String(10)     | GiroCheckout Projekt-Id, über die die Transaktion abgewickelt wurde. | 
-|gcReference      |Ja       |String      | GiroCheckout Transaktions-ID | +|gcReference      |Ja       |String(36)      | GiroCheckout Transaktions-ID | 
-|gcMerchantTxId   |Ja       |String      | Händler Transaktions-ID | +|gcMerchantTxId   |Ja       |String(255)      | Händler Transaktions-ID | 
-|gcBackendTxId    |Ja       |String      | Zahlungsabwickler 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 | |gcAmount         |Ja       |Integer     | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny |
-|gcCurrency       |Ja       |String      | Währung |+|gcCurrency       |Ja       |String(3)      | Währung |
 |gcResultPayment  |Ja       |Integer     | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der Zahlung]]| |gcResultPayment  |Ja       |Integer     | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der Zahlung]]|
-|gcPkn            |Optional |String      | Pseudokartennummer, wenn pkn aktiv | +|gcPkn            |Optional |String(50)      | Pseudokartennummer, wenn pkn aktiv | 
-|gcCardnumber     |Optional |String      | Maskierte Kreditkartennummer, wenn pkn aktiv | +|gcCardnumber     |Optional |String(19)      | Maskierte Kreditkartennummer, wenn pkn aktiv | 
-|gcCardExpDate    |Optional |String      | Gültigkeitsdatum der Kreditkarte im Format Monat/Jahr, wenn pkn aktiv | +|gcCardExpDate    |Optional |String(8)      | Gültigkeitsdatum der Kreditkarte im Format Monat/Jahr, wenn pkn aktiv | 
-|gcAccountHolder  |Optional |String      | Kontoinhaber bei Lastschrift, wenn pkn aktiv | +|gcAccountHolder  |Optional |String(255)      | Kontoinhaber bei Lastschrift, wenn pkn aktiv | 
-|gcIban           |Optional |String      | IBAN bei Lastschrift, wenn pkn aktiv | +|gcIban           |Optional |String(36)      | IBAN bei Lastschrift, wenn pkn aktiv | 
-|gcHash           |Ja       |String      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |+|gcHash           |Ja       |String(32)      | HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] |
  
 === Redirect === === Redirect ===
Zeile 227: Zeile 460:
   * backUrl: Hierher wird weitergeleitet, wenn der Käufer auf der Payment Page beschließt, den Vorgang abzubrechen und auf den Zurück-Button klickt (nicht zu verwechseln mit dem Abbruch der Zahlung im entsprechenden Zahlungsformular NACH Auswahl der Zahlart, denn dieser Abbruch entspricht dann einem Transaktionsabbruch, der an die failUrl weitergeleitet wird).   * backUrl: Hierher wird weitergeleitet, wenn der Käufer auf der Payment Page beschließt, den Vorgang abzubrechen und auf den Zurück-Button klickt (nicht zu verwechseln mit dem Abbruch der Zahlung im entsprechenden Zahlungsformular NACH Auswahl der Zahlart, denn dieser Abbruch entspricht dann einem Transaktionsabbruch, der an die failUrl weitergeleitet wird).
  
-Die success- und failUrl werden mit der POST-Methode aufgerufen und erhalten die selben Parameter wie oben beim Notify angegeben.  Bei der backUrl wurde ja noch keine Zahlungsart ausgewählt und auch keine Transaktion initialisiert, somit wird hier lediglich ein Browser-Redirect ohne weitere Paramter durchgeführt.+Die success- und failUrl werden mit der POST-Methode aufgerufen und erhalten die selben Parameter wie oben beim Notify angegeben.  Bei der backUrl wurde ja noch keine Zahlungsart ausgewählt und auch keine Transaktion initialisiert, somit wird hier lediglich ein Browser-Redirect ohne weitere Parameter durchgeführt. 
 + 
 +===== 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). 
 +Im Falle der Payment Page beachte man hierbei, dass diese Transaktionsarten (Buchung und Erstattung) sich dann jeweils auf die zugrundeliegende vorher durchgeführte Transaktion beziehen und somit ist die Aktion nur erlaubt, wenn die entsprechende Zahlungsart dies unterstützt. 
 + 
 +**Beispiel:** 
 + 
 +Wird ein Payment-Link dazu verwendet, eine Rechnung zu bezahlen, und der Kunde wählt die Zahlungsart Kreditkarte aus, so kann hinterher mit der Referenznummer der Payment-Page-Transaktion diese Zahlung erstattet werden.  Hat es sich um eine Reservierung (type=AUTH) gehandelt, ist dann über dieselbe Referenznummer die Buchung (capture) machbar.  Hat der Kunde aber mit giropay bezahlt, wo es keine Reservierung und Erstattung gibt, werden Versuche dies durchzuführen mit einer Fehlermeldung abgewiesen. 
 + 
 +Weiterhin ist zu beachten, dass je nachdem, wie eine Payment- oder Spendenseite initialisiert wurde (Stichwort: single-Parameter), auch mehr als eine Zahlung über denselben Link getätigt worden sein kann.  In diesem Falle, also wenn es mehr als eine erfolgreiche Zahlung zur Referenznummer der Payment-Page-Transaktion gibt, muss der optionale Parameter 'txreference' angegeben werden, der dann die Referenznummer enthält, die die konkrete Zahlungstransaktion identifiziert (diese wird ja jeweils in Notification und Redirect im Parameter 'gcReference' bzw. 'reference' zurückgeliefert). 
 + 
 +Bereitzustellen von: GiroCheckout \\ 
 +Aufzurufen von: Händler \\ 
 + 
 +==== Workflow ==== 
 + 
 +<uml> 
 +hide footbox 
 + 
 +participant "Shop" as shop 
 +participant "GiroCheckout" as girocheckout 
 +participant "Kreditkartenabwickler" as cc 
 + 
 +autonumber 
 + 
 +shop -> girocheckout:  
 +girocheckout -> cc:  
 +cc -> girocheckout:  
 +girocheckout -> shop:  
 + 
 +center footer (c)2022 by S-Public Services GmbH 
 +</uml> 
 + 
 +  - Shop sendet referenzierende Kreditkartentransaktion 
 +  - GiroCheckout leitet Transaktion zu Kreditkartenabwickler 
 +  - Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout 
 +  - Shop bekommt Rückmeldung über Transaktionsausgang ([[girocheckout:creditcard:start#benachrichtigung_ueber_den_zahlungsausgang|Benachrichtigung]]) 
 + 
 +==== Buchung (CAPTURE) ==== 
 +{{page>girocheckout:transactiontypes:descriptions#capture.desc&noheader&nofooter}} 
 + 
 +==== Erstattung (REFUND) ==== 
 +{{page>girocheckout:transactiontypes:descriptions#refund.desc&noheader&nofooter}} 
 + 
 +=== 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. Zulässige Zeichen: beliebige Buchstaben (inkl. sprachl. Sonderzeichen), 0-9, Zeichen & = + , : ; . _ ! ? # /  | 
 +|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        |Optional |String(27)  |Verwendungszweck der Erstattung oder des Capture. Diese Information erscheint auf der Kreditkartenabrechnung. | 
 +|reference      |Ja       |String(36)      |GiroCheckout Transaktions-ID der Payment-Page-Transaktion, für die eine Buchung oder Erstattung durchgeführt werden soll. | 
 +|txreference    |Optional |String(36)      |GiroCheckout Transaktions-ID der konkreten Zahlungstransaktion, für die eine Buchung oder Erstattung durchgeführt werden soll.  Diese wurde zuvor im Redirect im reference-Parameter und in der Notification im gcReference-Parameter zurückgeliefert. Dieser Parameter ist nur notwendig, wenn mit dem über 'reference' referenzierten Payment- oder Spendenlink mehr als eine erfolgreiche Zahlung getätigt wurde. | 
 +|hash           |Ja       |String(32)      |HMAC MD5 hash über alle Werte des Aufrufs. Siehe  [[girocheckout:general:start#hash_generieren|hash generieren]] | 
 + 
 +== Beispiel == 
 +{{page>codesamples:creditcard#capture.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     | 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:creditcard#transactionstart.response.true&noheader&nofooter}} 
 + 
 +== Beispiel im Fehlerfall == 
 +{{page>codesamples:creditcard#transactionstart.response.false&noheader&nofooter}}
    
girocheckout/paypage/start.txt · Zuletzt geändert: 2023/05/08 04:11

Seiten-Werkzeuge