Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
girocheckout:paypage:start [2020/08/26 22:49] michaelheumann |
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 neuen optionalen Felder sind: | ||
+ | * paydirektShoppingCartTypefg | ||
+ | * paydirektShippingCompany | ||
+ | * paydirektShippingAdditionalAddressInformation | ||
+ | * paydirektShippingStreet | ||
+ | * paydirektShippingStreetNumber | ||
+ | * paydirektShippingEmail | ||
+ | * paydirektMerchantOrderReferenceNumber | ||
+ | * paydirektCart | ||
+ | * paydirektDeliveryType | ||
+ | |||
+ | Beachten Sie ferner den Hinweis bzgl. des Verwendungszwecks weiter unten. | ||
+ | </ | ||
+ | |||
+ | <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, | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP hide> | ||
+ | Nähere Informationen - insbesondere auch zu Migration und Settlement - finden Sie auf unserer neuen [[girocheckout: | ||
+ | </ | ||
+ | |||
In diesem Dokument werden alle Abläufe und Schnittstellen beschrieben, | In diesem Dokument werden alle Abläufe und Schnittstellen beschrieben, | ||
Zeile 6: | Zeile 36: | ||
**Beispiel** | **Beispiel** | ||
- | |||
{{: | {{: | ||
+ | |||
+ | |||
+ | |||
+ | <WRAP center round info> | ||
+ | ==== Hinweis zum Verwendungszweck ==== | ||
+ | Je nach Zahlungsart, | ||
+ | |||
+ | 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: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 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 " | ||
+ | |||
+ | **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 |
</ | </ | ||
Zeile 85: | Zeile 130: | ||
**URL:** https:// | **URL:** https:// | ||
- | **Bereitzustellen von: | + | **Bereitzustellen von: |
**Aufzurufen von:** Händler | **Aufzurufen von:** Händler | ||
Zeile 103: | Zeile 148: | ||
^Name | ^Name | ||
|rc | |rc | ||
- | |msg |Ja | + | |msg |Ja |
|projects | |projects | ||
^HEADER Parameter^^^^ | ^HEADER Parameter^^^^ | ||
- | |hash | + | |hash |
== Beispiel == | == Beispiel == | ||
Zeile 120: | Zeile 165: | ||
|merchantId | |merchantId | ||
|projectId | |projectId | ||
- | |merchantTxId | + | |merchantTxId |
|amount | |amount | ||
|currency | |currency | ||
- | |purpose | + | |purpose |
|description | |description | ||
|pagetype | |pagetype | ||
- | |expirydate | + | |expirydate |
- | |single | + | |single |
+ | |timeout | ||
|type | |type | ||
|locale | |locale | ||
Zeile 134: | Zeile 180: | ||
|organization | |organization | ||
|freeamount | |freeamount | ||
- | |fixedvalues | + | |fixedvalues |
|minamount | |minamount | ||
|maxamount | |maxamount | ||
|orderid | |orderid | ||
|projectlist | |projectlist | ||
- | |pkn |Optional |String | + | |pkn |Optional |String(50) |Das Feld dient dazu eine erneute Transaktion, |
|test | |test | ||
|certdata | |certdata | ||
- | |otherpayments | + | |otherpayments |
- | |paydirektShippingFirstName |Optional | + | |paydirektShoppingCartType |Optional | String(19) |
- | |paydirektShippingLastName | + | |paydirektShippingFirstName |Optional |
- | |paydirektShippingZipCode | + | |paydirektShippingLastName |
- | |paydirektShippingCity | + | |paydirektShippingCompany |
- | |paydirektShippingCountry | + | |paydirektShippingAdditionalAddressInformation |Optional |
- | |successUrl | + | |paydirektShippingStreet |
- | |backUrl | + | |paydirektShippingStreetNumber |Optional |
- | |failUrl | + | |paydirektShippingZipCode |
- | |notifyUrl | + | |paydirektShippingCity |
- | |hash | + | |paydirektShippingCountry |
+ | |paydirektShippingEmail | ||
+ | |paydirektMerchantOrderReferenceNumber | ||
+ | |paydirektCart | ||
+ | |paydirektDeliveryType |Optional | String(12) | ||
+ | |successUrl | ||
+ | |backUrl | ||
+ | |failUrl | ||
+ | |notifyUrl | ||
+ | |tds2Address |Optional |String(50) | Für 3D Secure 2.0: Hauptadresszeile (i.d.R. Straße+Hausnummer) der Rechnungsadresse des Karteninhabers, | ||
+ | |tds2Postcode |Optional |String(10) | Für 3D Secure 2.0: Postleitzahl der Rechnungsadresse des Karteninhabers, | ||
+ | |tds2City |Optional |String(50) | Für 3D Secure 2.0: Ort der Rechnungsadresse des Karteninhabers, | ||
+ | |tds2Country |Optional |String(2) | Für 3D Secure 2.0: Land der Rechnungsadresse des Karteninhabers, | ||
+ | |tds2Optional |Optional |JSON-String | Für 3D Secure 2.0: JSON-String, | ||
+ | |mandateReference | Optional |String(35) | ||
+ | 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, | ||
+ | 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, | ||
+ | |kassenzeichen | ||
+ | |qrcodeReturn | ||
+ | |hash | ||
=== SEPA-konforme Zeichen === | === SEPA-konforme Zeichen === | ||
- | {{page>girocheckout: | + | {{page>resources:sepa-chars& |
=== 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 | ||
+ | |email |String(254) | E-Mail-Adresse des Karteninhabers, | ||
+ | |addressesMatch |Boolean | ||
+ | ^**// | ||
+ | |billingAddress.line2 |String(50) | Zeile 2 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/ | ||
+ | |billingAddress.line3 |String(50) | Zeile 3 der Rechnungsadresse. Format A-Z, a-z, 0-9, Blank, [-/ | ||
+ | |billingAddress.state |String(3) | Bundesland der Rechnungsadresse o.ä. Format A-Z, max. 3, Kürzel gemäß ISO 3166-2 | | ||
+ | ^**// | ||
+ | |shippingAddress.line1 |String(50) | Zeile 1 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/ | ||
+ | |shippingAddress.line2 |String(50) | Zeile 2 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/ | ||
+ | |shippingAddress.line3 |String(50) | Zeile 3 der Lieferadresse. Format A-Z, a-z, 0-9, Blank, [-/ | ||
+ | |shippingAddress.postcode |String(10) |Postleitzahl der Lieferadresse, | ||
+ | |shippingAddress.city |String(50) | Ort der Lieferadresse, | ||
+ | |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, | ||
+ | ^**// | ||
+ | |homePhoneNumber.country |Integer | Ländervorwahl der Heim-Telefonnummer, | ||
+ | |homePhoneNumber.regional |String(15) | Rest der der Heim-Telefonnummer, | ||
+ | ^**// | ||
+ | |mobilePhoneNumber.country |Integer | Ländervorwahl der Mobil-Telefonnummer, | ||
+ | |mobilePhoneNumber.regional |String(15) | Rest der der Mobil-Telefonnummer, | ||
+ | ^**// | ||
+ | |workPhoneNumber.country |Integer | Ländervorwahl der Arbeits-Telefonnummer, | ||
+ | |workPhoneNumber.regional |String(50) | Rest der der Arbeits-Telefonnummer, | ||
+ | ^**// | ||
+ | |cardholderAccountInfo.accountAgeIndicator |String(12) | Alter des Kundenkontos. Mögliche Werte: " | ||
+ | |cardholderAccountInfo.passwordChangeIndicator |String(12) | Gibt an, wann das Passwort des Kundenkontos zuletzt geändert oder zurückgesetzt wurde. Mögliche Werte: " | ||
+ | |cardholderAccountInfo.paymentAccountAgeIndicator |String(12) | Gibt an, wann das Zahlungskonto des Kunden angelegt wurde. Mögliche Werte: " | ||
+ | |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: " | ||
+ | |cardholderAccountInfo.shippingAddressAgeIndicator |String(12) | Gibt an, wann der Kunde die aktuelle Lieferadresse zum ersten Mal benutzt hat. Mögliche Werte: " | ||
+ | |cardholderAccountInfo.shippingNameIndicator |String(9) | Gibt an, ob der Name des Karteninhabers und der Name der Lieferadresse identisch sind. Mögliche Werte: " | ||
+ | |cardholderAccountInfo.suspiciousAccountActivity |Boolean | Gibt an, ob für diesen Kunden verdächtige Aktivitäten beobachtet wurden. Mögliche Werte: " | ||
+ | |cardholderAccountInfo.provisioningDayCount |Integer | Anzahl der "Karte hinzufügen" | ||
+ | ^**// | ||
+ | |tdsMerchantRiskIndicators.deliveryTimeframe |String(4) | Zeitraum, in dem die Ware an den Kunden geliefert wird. Mögliche Werte: " | ||
+ | |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, | ||
+ | |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: | ||
+ | |tdsMerchantRiskIndicators.preOrderPurchaseIndicator |String(9) | Mögliche Werte: " | ||
+ | |tdsMerchantRiskIndicators.reorderItemsIndicator |String(9) | Gibt an, ob der Kunde Artikel bereits zuvor bestellt hat. Mögliche Werte: " | ||
+ | |tdsMerchantRiskIndicators.shippingIndicator |String(16) | Gibt an, wohin die Ware geliefert wird. Mögliche Werte: " | ||
+ | ^**// | ||
+ | |tdsRequestorAuthenticationInformation.authenticationData |String(2048) | Authentifizierungsdaten des Kunden. Format A-Z, a-z, 0-9 [!"# | ||
+ | |tdsRequestorAuthenticationInformation.authenticationTimestamp |DateTime | Datum und Uhrzeit, wann sich der Kunde im Shop authentifiziert hat. Format JJJJ-MM-TTTHH: | ||
+ | |tdsRequestorAuthenticationInformation.authenticationMethod |String(17) | Gibt an, wie sich der Kunde in Ihrem Shop authentifiziert hat. Mögliche Werte: " | ||
+ | ^**// | ||
+ | |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: " | ||
+ | |||
+ | == Beispiel eines tds2Optional-Strings (zu Demonstrationszwecken formatiert, sollte normalerweise in einer Zeile angegeben werden) == | ||
+ | < | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
== Beispiel == | == Beispiel == | ||
Zeile 174: | Zeile 382: | ||
^Name | ^Name | ||
|rc | |rc | ||
- | |msg |Ja | + | |msg |Ja |
- | |reference | + | |reference |
- | |url | + | |url |Optional |String(255) |URL zur Payment Page, an die der Kunde weitergeleitet werden muss.| |
+ | |qrcode | ||
^HEADER Parameter^^^^ | ^HEADER Parameter^^^^ | ||
- | |hash | + | |hash |
== Beispiel im Erfolgsfall == | == Beispiel im Erfolgsfall == | ||
Zeile 185: | Zeile 394: | ||
== Beispiel im Fehlerfall == | == Beispiel im Fehlerfall == | ||
{{page> | {{page> | ||
+ | |||
+ | === cart-Element === | ||
+ | JSON Array mit item Objekten: | ||
+ | |||
+ | ^Name | ||
+ | |name | ||
+ | |ean |Optional | ||
+ | |quantity | ||
+ | |grossAmount | ||
+ | |||
+ | == Beispiel == | ||
+ | < | ||
+ | [ { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } ] | ||
+ | </ | ||
+ | |||
Zeile 203: | Zeile 436: | ||
^Name | ^Name | ||
- | |gcPaymethod | + | |gcPaymethod |
- | |gcType | + | |gcType |
- | |gcProjectId | + | |gcProjectId |
- | |gcReference | + | |gcReference |
- | |gcMerchantTxId | + | |gcMerchantTxId |
- | |gcBackendTxId | + | |gcBackendTxId |
|gcAmount | |gcAmount | ||
- | |gcCurrency | + | |gcCurrency |
|gcResultPayment | |gcResultPayment | ||
- | |gcPkn | + | |gcPkn |
- | |gcCardnumber | + | |gcCardnumber |
- | |gcCardExpDate | + | |gcCardExpDate |
- | |gcAccountHolder | + | |gcAccountHolder |
- | |gcIban | + | |gcIban |
- | |gcHash | + | |gcHash |
=== Redirect === | === Redirect === | ||
Zeile 228: | Zeile 461: | ||
Die success- und failUrl werden mit der POST-Methode aufgerufen und erhalten die selben Parameter wie oben beim Notify angegeben. | Die success- und failUrl werden mit der POST-Methode aufgerufen und erhalten die selben Parameter wie oben beim Notify angegeben. | ||
+ | |||
+ | ===== 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. | ||
+ | |||
+ | Weiterhin ist zu beachten, dass je nachdem, wie eine Payment- oder Spendenseite initialisiert wurde (Stichwort: single-Parameter), | ||
+ | |||
+ | Bereitzustellen von: GiroCheckout \\ | ||
+ | Aufzurufen von: Händler \\ | ||
+ | |||
+ | ==== Workflow ==== | ||
+ | |||
+ | <uml> | ||
+ | hide footbox | ||
+ | |||
+ | participant " | ||
+ | participant " | ||
+ | participant " | ||
+ | |||
+ | autonumber | ||
+ | |||
+ | shop -> girocheckout: | ||
+ | girocheckout -> cc: | ||
+ | cc -> girocheckout: | ||
+ | girocheckout -> shop: | ||
+ | |||
+ | center footer (c)2022 by S-Public Services GmbH | ||
+ | </ | ||
+ | |||
+ | - Shop sendet referenzierende Kreditkartentransaktion | ||
+ | - GiroCheckout leitet Transaktion zu Kreditkartenabwickler | ||
+ | - Kreditkartenabwickler übermittelt Ergebnis an GiroCheckout | ||
+ | - Shop bekommt Rückmeldung über Transaktionsausgang ([[girocheckout: | ||
+ | |||
+ | ==== Buchung (CAPTURE) ==== | ||
+ | {{page> | ||
+ | |||
+ | ==== Erstattung (REFUND) ==== | ||
+ | {{page> | ||
+ | |||
+ | === POST Parameter === | ||
+ | URL CAPTURE: https:// | ||
+ | URL REFUND: https:// | ||
+ | |||
+ | ^Name | ||
+ | |merchantId | ||
+ | |projectId | ||
+ | |merchantTxId | ||
+ | |amount | ||
+ | |currency | ||
+ | |purpose | ||
+ | |reference | ||
+ | |txreference | ||
+ | |hash | ||
+ | |||
+ | == Beispiel == | ||
+ | {{page> | ||
+ | |||
+ | === Antwort === | ||
+ | Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, | ||
+ | |||
+ | == Parameter == | ||
+ | ^Name | ||
+ | |rc | ||
+ | |msg |Ja | ||
+ | |reference | ||
+ | |referenceParent | ||
+ | |merchantTxId | ||
+ | |backendTxId | ||
+ | |amount | ||
+ | |currency | ||
+ | |resultPayment | ||
+ | |hash | ||
+ | |||
+ | == Beispiel im Erfolgsfall == | ||
+ | {{page> | ||
+ | |||
+ | == Beispiel im Fehlerfall == | ||
+ | {{page> | ||