====== PayPal ====== Informationen zu PayPal sind unter https://www.girosolution.de/girocheckout/bezahlverfahren.html zu finden. ===== Testdaten ===== Der Test findet in einer PayPal Simlation statt. Nach initialisieren einer PayPal Zahlung wird der Käufer auf eine Simulationsseite weitergeleitet. Hier kann ausgewählt werden, ob die PayPal Transaktion erfolgreich oder nicht erfolgreich ist. **Transaktionsausgang** ^ResultCode ^Antwortcode ^Hinweis ^ |4000 |erfolgreiche Transaktion | Eine erfolgreiche Transaktion wird nach drücken des Buttons "Finish as a successful transaction"ausgelöst | |4900 |nicht erfolgreiche Transaktion | Eine erfolglose Transaktion wird nach drücken des Buttons "Finish as a failed transaction" ausgelöst | ===== Workflow ===== hide footbox participant "Kunde" as customer participant "Shop" as shop participant "GiroCheckout" as girocheckout participant "PayPal" as paypal autonumber customer -> shop: shop -> girocheckout: girocheckout -> paypal: paypal -> girocheckout: girocheckout -> shop: shop -> customer: customer -> paypal: paypal -> customer: customer -> paypal paypal -> paypal: paypal -> girocheckout: girocheckout -> shop shop -> shop: shop -> girocheckout: girocheckout -> paypal: paypal -> shop: center footer (c)2013 by GiroSolution AG - Käufer wählt Zahlart PayPal aus - Shop initiiert PayPal-Zahlung ([[girocheckout:giropay:functions#initialisierung_der_giropay_zahlung|------]]) - GiroCheckout initialisiert Transaktion bei PayPal - PayPal übermittelt Ergebnis an GiroCheckout - Shop bekommt Rückmeldung über Initialisierungsausgang (bei Fehler ist Transaktion beendet) - Shop sendet Redirect URL an Kundenbrowser - Kundenbrowser leitet zu PayPal weiter - PayPal zeigt Zahlformular an - Kunde autorisiert Transaktion - PayPal führt Transaktion durch - PayPal übermittelt Ergebnis an GiroCheckout - GiroCheckout benachrichtigt Shop über Transaktionsausgang ([[girocheckout:giropay:functions#benachrichtigung_ueber_den_ausgang_der_zahlung|-------]]) - Shop verarbeitet Transaktionsausgang - Shop sendet HTTP Statuscode an GiroCheckout - GiroCheckout sendet Rücksprung zum Händler an PayPal - Kunde klickt "Zurück zum Shop" ([[girocheckout:giropay:functions#rueckleitung_des_kunden_zum_shop|---------]]) ===== API-Funktionen ===== ==== Übersicht ===== Wie im Workflow dargestellt gibt es mehrere API-Aufrufe während einer PayPal Transaktion. - Transaktion initiieren - PayPal Bezahlung durchführen - Bezahlinformation an Händler übermitteln - Bezahlinformation mit Käuferbrowserweiterleitung zurück zum Händler (durch Käufer nach Zahlung ausgelöst) Im Folgenden werden die API-Felder und Aufrufe näher erleutert. ==== Initialisierung einer PayPal Zahlung ==== Durch eine erfolgreiche Initialisierung wird eine Referenznummer erstellt sowie ein Weiterleitunsurl (redirect) an den Händler übermittelt. Der Kunde muss an diese URL weitergeleitet werden. Dies kann durch einen HTTP-Redirect-Header, eine HTML-Seite mit entsprechendem Meta-Tag oder Javascript erfolgen. === Anfrage === **URL:** https://payment.girosolution.de/girocheckout/api/v2/transaction/start \\ **Bereitzustellen von:** GiroCheckout \\ **Aufzurufen von:** Händler == Parameter == ^Name ^Pflicht ^Type ^Beschreibung ^ |merchantId |Ja |Integer |Händler-ID eines PayPal Projekts | |projectId |Ja |integer |Projekt-ID eines PayPal Projekts | |merchantTxId |Ja |String(255) |Eindeutige Transaktions-ID des Händlers | |amount |Ja |Integer |Betrag in Cent| |currency |Ja |String(3) |Währung der Transaktion\\ EUR = Euro| |purpose |Ja |String(27) |Verwendungszweck der PayPal Transaktion | |urlRedirect |Ja |String |URL, an die der Kunde nach der Zahlung geschickt werden soll. | |urlNotify |Ja |String |URL, an die der Zahlungsausgang gemeldet werden soll. | |hash |Ja |String |HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel == {{page>codesamples:paypal#transactionstart.request&noheader&nofooter}} === Antwort === Die Antwort besteht aus einem JSON Objekt. Das Feld rc liefert einen Fehlercode zurück. Wird rc = 0 zurückgeliefert, wurde die Transaktion erfolgreich initialisiert. Sie bekommen als Antwort eine Transaktionsnummer und eine redirectURL zum PayPal Formular zurück. == Parameter == ^Name ^Pflicht ^Type ^Beschreibung ^ |rc |Ja |Integer |[[girocheckout:errorcodes|Fehlernummer]] | |msg |Ja |String |zusätzliche Informationen im Fehlerfall | |reference |Optional |String |eindeutige GiroCheckout Transaktions-ID | |redirect |Optional |String |Redirect URL zur Weiterleitung des Kunden an sein Online Banking| ^HEADER Parameter^^^^ |hash |Ja |String |HMAC MD5 hash über alle Werte der Rückmeldung. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | == Beispiel im Erfolgsfall == {{page>codesamples:paypal#transactionstart.response.true&noheader&nofooter}} == Beispiel im Fehlerfall == {{page>codesamples:paypal#transactionstart.response.false&noheader&nofooter}} ==== Benachrichtigung über den Zahlungsausgang ==== Der Ausgang einer Zahlung wird, an die im //urlNotify// Paramter angegebene URL, übermittelt. Diese Rückmeldung dient dazu, dem Händler den Ausgang der Transaktion mitzuteilen. Durch diese Information kann der Transaktionsstatus beim Händler geändert werden. Der Zahlungausgang einer Transaktion steht im Feld gcResultPayment. Aufgrund des Zahlungsablaufes findet **keine automatische Rückleitung des Käufers** an die im Parameter //urlRedirect// angegebene URL statt. Eine Weiterleitung erfolgt erst, wenn der Käufer den "Abbrechen" oder "Zurück zum Shop" Button drückt. === Anfrage === **URL:** notifyUrl aus der Transaktionsinitialisierung \\ **Bereitzustellen von:** Händler \\ **Aufzurufen von:** GiroCheckout == GET Parameter == ^Name ^Pflicht ^ Type ^Beschreibung ^ |gcReference |Ja |String | GiroCheckout Transaktions-ID | |gcMerchantTxId |Ja |String | Händler Transaktions-ID | |gcBackendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |gcAmount |Ja |Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |gcCurrency |Ja |String | Währung | |gcResultPayment |Optional |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebniscodes der Zahlung]]| |gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] | === Antwort === Als Antwort auf den GET-Request wird einer der folgenden HTTP Statuscodes erwartet. ^HTTP Statuscode ^Beschreibung ^ |200 (OK) |Die Benachrichtigung wurde korrekt verarbeitet. | |400 (Bad Request) |Der Händler hat die Benachrichtigung nicht verarbeitet, möchte aber auch nicht erneut benachrichtigt werden. | |Alle anderen |Die Benachrichtigung wird max. 10 Mal alle 30 Minuten wiederholt, bis der Händler den HTTP Statuscode 200 oder 400 zurückgibt. | ==== Rückleitung des Kunden zum Händler ==== Nach Beendigung der Zahlung kann der Kunde über einen Link zurück zum Händler kommen. Eine Weiterleitung erfolgt erst, wenn der Käufer den „Abbrechen“ oder „Zurück zum Shop“ Button drückt. Diese Rückleitung erfolgt nicht automatisch. === Anfrage === **URL:** redirectUrl aus der Transaktionsinitialisierung \\ **Bereitzustellen von:** Händler \\ **Aufzurufen von:** GiroCheckout == GET Parameter == ^Name ^Pflicht ^Type ^Beschreibung ^ |gcReference |Ja |String | GiroCheckout Transaktions-ID | |gcMerchantTxId |Ja |String | Händler Transaktions-ID | |gcBackendTxId |Ja |String | Zahlungsabwickler Transaktions-ID | |gcAmount |Ja |Integer | bei Dezimalwährungen den Betrag in der kleinsten Währungseinheit angeben, z.B. Cent, Penny | |gcCurrency |Ja |String | Währung | |gcResultPayment |Ja |Integer | [[girocheckout:resultcodes#zahlungsausgang|Ergebnis der Zahlung]]| |gcHash |Ja |String | HMAC MD5 hash über alle Werte des Aufrufs. Siehe [[girocheckout:general:start#hash_generieren|hash generieren]] |