# Paypal integration aber wie?



## kcyberbob (25. November 2010)

Hallo zusammen,

ich habe einen simplen Onlineshop geschrieben mit den Zahlungsmethoden Vorkassen und Nachname. Doch jetzt würde ich gerne Paypal integrieren. Doch irgendwie komm ich da auf keinen grünen Zweig, da es tausende Möglichkeiten gibt und ich keine Ahnung habe welche die richtige ist und wie man das ganze am besten umsetzt.

Ich hab einen stinknormalen Warenkorb wie ihn jeder kennt. Wenn man zu Kasse geht wird man als erstes gefragt ob man sich einloggen will oder ob man Neukunde ist. 
Nach dem Einloggen wird der Kunde nach der Lieferanschrift gefragt anschließend kommt es zu den Zahlmethoden, bislang Vorkasse oder Nachnahme. Nun soll hier Paypal hinzukommen.

Wenn man sich für Paypal entscheidet kommt eine weiter Seite wo eine Übersicht der Daten steht mit einem Button "jetzt zahlen". Beim klicken auf den Button soll der Kunde zu Paypal gelangen, sich einloggen, bezahlen und bei erflogreicher Zahlung zu meiner Seite zurück geleitet werden um dem Kunden die Bestätigungsseite anzuzeiten, das alles in Ordnung ist.

Hoffe ihr könnt mir helfen und habt alles verstanden was ich meine.

Gruß Andy


----------



## Flex (25. November 2010)

Wichtig ist das ganze im Testlauf zu erstellen, von daher sollte die erste Anlaufstelle hier sein:

https://developer.paypal.com/

Da kann man sich für die sogenannte Sandbox registrieren und alles testen.

Dann wäre da noch die Developer Seite und natürlich die Code Beispiele, die es auch mit PHP gibt.


----------



## kcyberbob (25. November 2010)

Das hab ich alles schon gesehen und gemacht doch ich komm da auf keinen grünen Zweig, deswegen schreib ich ja hier.


----------



## Flex (27. November 2010)

Dann zeig doch mal ein wenig deiner bisherigen Versuche.


----------



## kcyberbob (28. November 2010)

Was soll ich da zeigen?

Willst sehen welche PDF´s ich gelesen hab und trotzdem nicht weiß welche Variante passend ist oder das ich schon mit Paypal telefoniert habe und der Typ am Telefon noch weniger Plan hatte als ich.


----------



## kcyberbob (27. Januar 2011)

Kann mir denn niemand wirklich helfen?


----------



## sheel (27. Januar 2011)

Hi

Wenn du es nicht selber probieren willst, schreib besser eine Anfrage ins Jobforum.

Mit "bisherige Versuche" ist nicht gemeint, dass du liest und telefonierst, sondern selber Code schreibst...

Gruß


----------



## kcyberbob (27. Januar 2011)

Ja ich würde ja coden wollen aber irgendwie seig ich überhaupt nicht durch wie und wo man mit was anfangen muss.
Das coden selbst dürfte nicht so das problem sein.


----------



## puschelchen (28. Januar 2011)

Übergabe der Artikeldetails
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
   <input type="hidden" name="cmd" value="_cart" />
   <input type="hidden" name="upload" value="1" />
   <input type="hidden" name="business"
      value="paypal@blumentag.com" />
   <input type="hidden" name="item_name_1"
      value="Artikel 1" />
   <input type="hidden" name="amount_1" value="1.00" />
   <input type="hidden" name="item_name_2"
      value="Artikel 2" />
   <input type="hidden" name="amount_2" value="2.00" />
   <input type="submit" value="PayPal" />
</form>

Die Variablen dieses Formulars haben folgende Werte:
Variable 	Wert
cmd 	Lautet immer _cart (Warenkorb)
upload 	Lautet immer 1. Damit wird PayPal darüber informiert, dass Sie die Inhalte eines Warenkorbes übergeben.
business 	Die E-Mail-Adresse des Verkäufers
item_name_x 	Die Bezeichnung des Artikels x
amount_x 	Die Anzahl des Artikels x

Übergabe des Gesamtbetrages

Hierbei werden alle Artikel im Warenkorb zusammengefasst und der Gesamtbetrag an PayPal übergeben. Ein wesentliches Merkmal dieser vereinfachten Methode ist, dass Ihre Käufer nicht sehen können, welche einzelnen Artikel in den Warenkorb gelegt wurden und diese die Namen der PayPal-Variablen nicht ändern oder eigene hinzufügen können.

Die Absicherung des HTML-Codes gegen böswillige Manipulation beschreibt die Seite Zahlungslösung absichern.

Das folgende Beispiel sendet nur den Gesamtbetrag der Bestellung an PayPal:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
   <input type="hidden" name="cmd" value="_xclick" />
   <input type="hidden" name="business"
      value="paypal@blumentag.com" />
   <input type="hidden" name="item_name"
      value="Ihre Blumentag-Bestellung" />
   <input type="hidden" name="amount" value="3.00" />
   <input type="submit" value="PayPal" />
</form>

Die Variablen dieses Formulars haben folgende Werte:
Variable 	Wert
cmd 	Lautet immer _xclick
business 	Die E-Mail-Adresse des Verkäufers
item_name 	Name des Online-Shops oder der Bestellung
amount 	Gesamtbetrag der Transaktion

vll hilft dir das für den Anfang hab ich gefunden auf der webseite von Paypal ^^


----------



## kcyberbob (28. Januar 2011)

Ach so ich brauch da nur ein Formular erstellen wo ich die Daten übergebe.

Und wie ist das mit der Rückleitung auf meine Seite damit ich weiß ob der Kunde bezahlt hat?


----------



## maeg (28. Januar 2011)

Hallo,

von dem oben beschriebenen Beispiel würde ich dir schon alleine aus Sicherheitsgründen abraten. Solltest Du dich doch für die POST-Variante von oben entscheiden, setze die versteckten Felder bitte zusätzlich zumindest auf readonly. Auch hidden-Felder können durch ein einfaches Browser-Addon sichtbar und beschreibbar (wenn nicht readonly) gemacht werden.

Ich selbst habe PayPal bereits mit der setExpressCheckout-Methode in unsererm Webshop implementiert. Die Funktionsweise kurz zusammengefasst:

1.) Kunde klegt ganz normal Artikel in den Warenkorb

2.) Auswahl Zahlungsart = PayPal

3.) Nun beginnt die Kommunikation mit der PayPal-API. Kommunikation läuft über dem Benutzer unsichtbare HTTP-Requests (NVP (NameValuePair)). Sprich, Du rufst einfach durch eine bestimmte URL den Webservice auf und übergibst sämtliche Infos als Übergabeparameter (GET). Der erste Request wäre der "setExpressCheckout"-Request. Mit diesem "meldest" Du eine Zahlung für PayPal an. Mit diesem kannst Du auch die Seite übergeben, auf die der Kunde nach Abschluss der Zahlung hingeleitet werden soll (z.B. zurück zum Shop).

4.) Als Response auf diesen Request bekommst Du von PayPal einen TOKEN zurück, der die Transaktion eindeutig verifiziert. Nun kannst Du den Kunden an eine feste URL weiterleiten. Z.B. http://www.paypal.com?token=ERHALTENER_TOKEN (URL nicht korrekt, nur ein Beispiel). Dort bekommt der Benutzer dann alle Produkte, Preise (alles, was im setExpressCheckout übergeben wurde) noch einmal angezeigt, kann seine Zahlungsart (Kreditkarte, Bankeinzug, Guthaben..) und seine Lieferadresse (wenn nicht ausgeblendet) auswählen. Hier bietet PayPal sehr viele Möglichkeiten, die Checkout-Seite den Bedürfnissen der eigenen Firma gerecht zu werden.

5.) Kunde hat die Zahlung getätigt und klickt auf der PayPal-Seite endgültig auf "Zahlen".

6.) Zahlung wird durchgeführt und der Kunde wird mit 2 zusätzlichen Parametern in der URL zurück auf Deine Seite geleitet. 

7.) Auf der PayPal-Landingpage muss nun der letzte, die Transaktion vollständig abschließende Request durchgeführt werden. (doExpressCheckoutPayment). Erst nach Aufruf dieses Requests ist die Zahlung verifiziert und wird dem Kunden belastet.

Wie gesagt, sehr grob. Selbstverständlich ist das ganze mit der Sandbox testbar. Diese dient auch als Entwicklungsumgebung.

Alles weitere findest Du hier:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/library_documentation#ec

Bei Fragen - melden.

VG,
maeg


----------



## kcyberbob (28. Januar 2011)

Super vielen Dank!

Genau so wie die setExpressCheckout-Methode habe ich  mir das vorgestellt.

Also mach ich einfach einen Button auf der Seite  mit dem Link zu Paypal und den ganzen Parametern.


----------



## maeg (29. Januar 2011)

Hi,

ich glaube, Du hast mich da etwas fehlverstanden. Ein "Button zu PayPal mit den ganzen Parametern" ist absolut nicht ausreichend. Die Voraussetzung, dass Du den Benutzer zu PayPal weiterleiten kannst, ist die vorherige Ausführung des "setExpressCheckout"-Requests. Dies funktioniert VOR der Weiterleitung im Hintergrund Deiner Seite( z.B. via CURL). Um die korrekte Funktionalität der Schnittstelle sicherzustellen ist hier auf ein exaktes Fehlerhandling zu achten. Für die Fehlercodes gibt es eine eigene Dokumentation, welche man sich auf jeden Fall durchlesen sollte!

Ich empfehle Dir, sämtliche Funktioanlitäten in einer Klasse "PayPal" zusammen zu fassen. Dein Shop kann sich dann den Methoden der neuen Klasse bedienen. Ebenfalls kann ich Dir sagen, dass die Integration kein Zuckerschlecken ist und nicht an einem Tag "mal eben" erledigt ist. Gerade, da die Integration einer neuen Zahlungsart ein geschäftskritischer Prozess ist, der 100%ig funktionieren muss, sollte man hier auf keinen Fall eine "Hauptsache es funktioniert"-Lösung erschaffen. Eine fehlerhafte Einbindung bzw. falsches Fehlerhandling kann Betrügern neue Türen öffnen..

Wie gut schätzt Du deine PHP-Kenntnisse ein? Wie gesagt: Les dir mal die NVP-API (NVP = NameValuePair) durch. Ebenfalls gibt es einen Integrationsleitfaden, der für die Integration in den eigenen Shop durchaus nützlich sein kann.

VG,
Maeg


----------



## Registrierer (29. Januar 2011)

kcyberbob hat gesagt.:


> ich habe einen simplen Onlineshop geschrieben


 
Wenn das so ist, verstehe ich nicht was Dir jetzt schwerfallen sollte.


----------

