~~NOCACHE~~ ====== Paydirekt====== Informationen zu paydirekt sind unter https://www.girosolution.de/girocheckout zu finden. ===== Testdaten ===== {{page>testdata:paydirekt&noheader&nofooter}} ===== Transaktionstypen ===== Detaillierte Informationen zu den [[girocheckout:transactiontypes:start|Transaktionstypen]]. left to right direction skinparam packageStyle rect rectangle SALE{ (SALE) --> (REFUND) (REFUND) } rectangle AUTH { (AUTH) --> (CAPTURE ) (CAPTURE ) --> (REFUND ) } ===== Initialisierung einer Paydirekt Zahlung ===== Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitungslink (redirect) an den Händler übermittelt. Der übermittelte Link führt zum Bezahlformular. Der Kunde muss an diese URL weitergeleitet werden. Dies kann durch einen HTTP-Redirect-Header, eine HTML-Seite mit entsprechendem Meta-Tag oder Javascript erfolgen. Bereitzustellen von: GiroCheckout\\ Aufzurufen von: Händler\\ ==== Workflow ==== hide footbox participant "Kunde" as customer participant "Shop" as shop participant "GiroCheckout" as girocheckout participant "Paydirekt" as pd autonumber customer -> shop: shop -> girocheckout: girocheckout -> pd: pd -> girocheckout: girocheckout -> shop: shop -> customer: customer -> pd: pd -> customer: customer -> pd: pd -> pd: pd -> girocheckout: girocheckout -> shop shop -> shop: shop -> girocheckout: girocheckout -> pd: pd -> shop: center footer (c)2013 by GiroSolution AG - Käufer wählt Zahlart Paydirekt aus - Shop initiiert Paydirekt Transaktion ([[girocheckout:paydirekt:start#initialisierung_einer_Paydirekt Zahlung|Initialisierung]]) - GiroCheckout initialisiert Transaktion bei Paydirekt - Paydirekt übermittelt Ergebnis an GiroCheckout - Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet) - Shop sendet Redirect URL an Kundenbrowser - Kundenbrowser leitet zu Paydirekt weiter - Paydirekt zeigt Zahlformular an - Kunde autorisiert Transaktion - Paydirekt führt Transaktion durch - Paydirekt übermittelt Ergebnis an GiroCheckout - GiroCheckout benachrichtigt Shop über Transaktionsausgang ([[girocheckout:paydirekt:start#benachrichtigung_ueber_den_zahlungsausgang|Benachrichtigung]]) - Shop verarbeitet Transaktionsausgang - Shop sendet HTTP Statuscode an GiroCheckout - GiroCheckout sendet Rücksprung zum Händler an Paydirekt - Kunde klickt "Zurück zum Shop" ([[girocheckout:paydirekt:start#rueckleitung_des_kunden_zum_haendler|Rücksprung]]) ==== Reservieren (AUTH) ==== {{page>girocheckout:transactiontypes:descriptions#auth.desc&noheader&nofooter}} left to right direction skinparam packageStyle rect rectangle AUTH { (AUTH) --> (capture) (AUTH) --> (refund) } ==== Reservieren/Buchen (SALE) ==== {{page>girocheckout:transactiontypes:descriptions#sale.desc&noheader&nofooter}} left to right direction skinparam packageStyle rect rectangle SALE{ (SALE) --> (refund) } ==== POST Parameter ==== URL: https://payment.girosolution.de/girocheckout/api/v2/transaction/start ^Name ^Pflicht ^^Type ^Beschreibung ^ ^::: ^AUTH ^SALE ^::: ^::: ^ |merchantId |Ja |Ja |Integer |Händler-ID eines Paydirekt-Projekts | |projectId |Ja |Ja |Integer |Projekt-ID eines Paydirekt-Projekts | |merchantTxId |Ja |Ja |String(255) |eindeutige Transaktions-ID des Händlers | |amount |Ja |Ja |Integer |Zwischen 1 und 5000000 (also min. 1 Cent, max. 50000 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. | |type |Ja |Optional |String |Transaktionsart (siehe [[girocheckout:transactiontypes:start]]) \\ SALE = Verkauf wird sofort gebucht (default) \\ AUTH = Reservierung des Betrags | |shoppingCartType |Optional |Optional| String |Typ des Warenkorbs. Folgende Werte sind zulässig: \\ PHYSICAL = Alle Waren im Warenkorb sind physischer Natur (dies ist der Default-Wert, wenn der Parameter nicht angegeben wird), \\ DIGITAL = Alle Waren im Warenkorb sind digitaler Natur (benötigen also keinen Versand), \\ MIXED = Der Warenkorb enthält sowohl physische als auch digitale Waren, \\ ANONYMOUS_DONATION = Es handelt sich um eine anonyme Spende (keine Adressdaten notwendig), \\ AUTHORITIES_PAYMENT = Es handelt sich um eine Behördenzahlung (keine Adressdaten notwendig) | |customerId |Optional |Optional |String(20) | Kundennummer, max. Länge: 20 | |shippingAmount |Optional |Optional |Integer | Versandkosten, zwischen 0 und 5000000 (also min. 0,00 EUR, max. 50000,00 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |shippingAddresseFirstName |(s. Beschr.) |(s. Beschr.) |String | Vorname des Addressaten, **Pflicht** bei Warenkorbtypen PHYSICAL, DIGITAL und MIXED, optional bei ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. | |shippingAddresseLastName |(s. Beschr.) |(s. Beschr.) |String | Nachname des Addressaten, **Pflicht** bei Warenkorbtypen PHYSICAL, DIGITAL und MIXED, optional bei ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. | |shippingCompany |Optional |Optional |String | Firmenname | |shippingAdditionalAddressInformation |Optional |Optional |String | Addresszusatz | |shippingStreet |Optional |Optional |String | Straße des Addressaten | |shippingStreetNumber |Optional |Optional |String | Hausnummer des Addressaten | |shippingZipCode |(s. Beschr.) |(s. Beschr.) |String | PLZ des Addressaten. Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. | |shippingCity |(s. Beschr.) |(s. Beschr.) |String | Ort des Addressaten. Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. | |shippingCountry |(s. Beschr.) |(s. Beschr.) |String(2) | Ländercode (ISO 3166-1). Dies ist Pflicht bei Warenkörben der Typen PHYSICAL und MIXED, optional bei DIGITAL, ANONYMOUS_DONATION und AUTHORITIES_PAYMENT. | |shippingEmail |(s. Beschr.) |(s. Beschr.) |String | Email-Adresse des Käufers. Dies ist Pflicht bei digitalen Warenkörben (DIGITAL), bei allen anderen optional. | |merchantReconciliationReferenceNumber | |Optional |String(30) | Zusatzinformation für die Zahlungszuordnung, die im Verwendungszweck angezeigt wird (nur bei type=SALE) | |orderAmount |Optional |Optional |Integer | Betrag der Bestellung (ohne Versandkosten), zwischen 1 und 5000000 (also min. 1 Cent, max. 50000 EUR). Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |orderId |Ja |Ja |String(20) | Bestellnummer, zulässige Zeichen: A-Z a-z 0-9 + ? / - : ( ) . , ' (KEINE Blanks), maximale Länge: 20 | |cart |Optional |Optional |JSON String | alle Elemente des Warenkorbs im folgenden Format: [[girocheckout:paydirekt_new:start#cart|cart]] | |invoiceId |Optional |Optional |String(20) | Rechnungsnummer, maximale Länge: 20 | |customerMail |Optional |Optional |String | E-Mail des Kunden | |minimumAge |Optional |Optional |Integer | Mindestalter, das der Käufer erreicht haben muss | |urlRedirect |Ja |Ja |String |URL, an die der Kunde nach der Zahlung weitergeleitet werden soll. | |urlNotify |Ja |Ja |String |URL, an die der Zahlungsausgang gemeldet werden soll. | |hash |Ja |Ja |String |HMAC MD5 Hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel == {{page>codesamples:paydirekt#transactionstart.request&noheader&nofooter}} === cart === JSON Array mit item Objekten ^Name ^Pflicht ^Type ^Beschreibung ^ |name |Ja |String | Artikelname | |ean |Optional |String | Die Internationale Artikel Nummer (EAN bzw. GTIN) | |quantity |Ja |Dezimal | 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 == [ { "name" : "Bobbycar", "ean" : "800001303", "quantity" : 3, "grossAmount" : 2599 }, { "name" : "Helm", "quantity" : 1, "grossAmount" : 1853 } ] ==== Antwort ==== Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, wurde die Transaktion erfolgreich initialisiert. Sie bekommen als Antwort eine Transaktionsnummer und die redirectURL zur Paydirekt-Bezahlungsseite zurück. === Parameter === ^Name ^Pflicht ^Type ^Beschreibung ^ |rc |Ja |Integer |[[girocheckout:errorcodes|Fehlernummer]] | |msg |Ja |String |zusätzliche Informationen im Fehlerfall | |reference |Optional |String |eindeutige GiroCheckout Transaktions-ID | |redirect |Optional |String |Redirect URL zur Weiterleitung des Kunden an Paydirekt| ^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:paydirekt#transactionstart.response.true&noheader&nofooter}} == Beispiel im Fehlerfall == {{page>codesamples:paydirekt#transactionstart.response.false&noheader&nofooter}} ==== Benachrichtigung über den Zahlungsausgang ==== Der Ausgang einer Zahlung wird an die im //urlNotify// Parameter angegebene URL übermittelt. Diese Rückmeldung dient dazu, dem Händler den Ausgang der Transaktion mitzuteilen. Durch diese Information kann der Transaktionsstatus beim Händler geändert werden. Der Zahlungsausgang einer Transaktion steht im Feld gcResultPayment. === Anfrage === **URL:** notifyUrl aus der Transaktionsinitialisierung \\ **Bereitzustellen von:** Händler \\ **Aufzurufen von:** GiroCheckout === GET Parameter === ^Name ^Pflicht ^ Type ^Beschreibung ^ |gcReference |Ja |String | GiroCheckout Transaktions-ID | |gcMerchantTxId |Ja |String | Händler Transaktions-ID | |gcBackendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |gcAmount |Ja |Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |gcCurrency |Ja |String | Währung | |gcResultPayment |Ja |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der Zahlung]]| |gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | === Antwort === Als Antwort auf den GET-Request wird einer der folgenden HTTP Statuscodes erwartet. ^HTTP Statuscode ^Beschreibung ^ |200 (OK) |Die Benachrichtigung wurde korrekt verarbeitet. | |400 (Bad Request) |Der Händler hat die Benachrichtigung nicht verarbeitet, möchte aber auch nicht erneut benachrichtigt werden. | |Alle anderen |Die Benachrichtigung wird max. 10 Mal alle 30 Minuten wiederholt, bis der Händler den HTTP Statuscode 200 oder 400 zurückgibt. | ==== Rückleitung des Kunden zum Händler ==== Nach Beendigung der Zahlung kann der Kunde über einen Link zurück zum Händler kommen. Eine Weiterleitung erfolgt erst, wenn der Käufer den „Abbrechen“ oder „Zurück zum Shop“ Button drückt. Diese Rückleitung erfolgt nicht automatisch. === Anfrage === **URL:** redirectUrl aus der Transaktionsinitialisierung \\ **Bereitzustellen von:** Händler \\ **Aufzurufen von:** GiroCheckout == GET Parameter == ^Name ^Pflicht ^Type ^Beschreibung ^ |gcReference |Ja |String | GiroCheckout Transaktions-ID | |gcMerchantTxId |Ja |String | Händler Transaktions-ID | |gcBackendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |gcAmount |Ja |Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |gcCurrency |Ja |String | Währung | |gcResultPayment |Ja |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Zahlung]]| |gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | ===== 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 ==== hide footbox participant "Shop" as shop participant "GiroCheckout" as girocheckout participant "Paydirekt" as pd autonumber shop -> girocheckout: girocheckout -> pd: pd -> girocheckout: girocheckout -> shop: center footer (c)2016 by GiroSolution AG - Shop sendet referenzierende Transaktion - GiroCheckout leitet Transaktion zu Paydirekt - Paydirekt ü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}} left to right direction skinparam packageStyle rect rectangle AUTH { (auth) --> (CAPTURE) } ==== Erstattung (REFUND) ==== {{page>girocheckout:transactiontypes:descriptions#refund.desc&noheader&nofooter}} left to right direction skinparam packageStyle rect rectangle SALE{ (sale) --> (REFUND) } rectangle AUTH { (auth) --> (REFUND ) } === 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 Paydirekt-Projekts | |projectId |Ja |Ja |Integer |Projekt-ID eines Paydirekt-Projekts | |merchantTxId |Ja |Ja |String(255) |Eindeutige Transaktions-ID des Händlers | |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 | 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. | |hash |Ja |Ja |String |HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel == {{page>codesamples:paydirekt#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 |zusätzliche Informationen im Fehlerfall | |reference |Ja |String | GiroCheckout Transaktions-ID | |merchantTxId |Ja |String | Händler Transaktions-ID | |backendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |amount |Ja |Integer | Bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent | |currency |Ja |String | Währung | |resultPayment |Ja |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Zahlung]]| |hash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel im Erfolgsfall == {{page>codesamples:paydirekt#capture.response.true&noheader&nofooter}} == Beispiel im Fehlerfall == {{page>codesamples:paydirekt#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 Paydirekt-Projekts | |projectId |Ja |Integer |Projekt-ID eines Paydirekt-Projekts | |merchantTxId |Ja |String(255) |eindeutige Transaktions-ID des Händlers | |reference |Ja |String |GiroCheckout Transaktions-ID, für die eine Stornierung durchgeführt werden soll | |hash |Ja |String |HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel == {{page>codesamples:paydirekt#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 |zusätzliche Informationen im Fehlerfall | |reference |Ja |String | GiroCheckout Transaktions-ID | |referenceParent |Ja |String | GiroCheckout Transaktions-ID der zugrundeliegenden Ursprungstransaktion | |merchantTxId |Ja |String | Händler Transaktions-ID | |backendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |amount |Ja |Integer | Stornierter Betrag, bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |currency |Ja |String | Währung | |resultPayment |Ja |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Transaktion]]| |hash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel im Erfolgsfall == {{page>codesamples:paydirekt#void.response.true&noheader&nofooter}} == Beispiel im Fehlerfall == {{page>codesamples:paydirekt#void.response.false&noheader&nofooter}}