mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 18.04.2024 13:23 Benutzername: Passwort: Auto-Login

Thema: paypal | ipn ---> datenbankeintrag vor dem versenden vom 01.02.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> paypal | ipn ---> datenbankeintrag vor dem versenden
Autor Nachricht
reco
Threadersteller

Dabei seit: 09.08.2007
Ort: wolke7
Alter: -
Geschlecht: Männlich
Verfasst Fr 01.02.2008 15:39
Titel

paypal | ipn ---> datenbankeintrag vor dem versenden

Antworten mit Zitat Zum Seitenanfang

hallo liebe forumuser,


ich suche eine lösung für folgendes problem (suche brach leider kein ergebnis):

die ipn (zahlungsbestätigung) von paypal funktioniert ja folgendermaßen, dass hideenfelder eines formulares direkt eine paypal-url gesendet werden. der server macht eine rückgabe an ein zuvor angegebenes script mit einem schlüssel und dieser schlüssel wird von dem script (auf meinem server) unverändert an paypal zurückgeschickt. nach einer überprüfung schickt paypal widerum eine bestätigung an meinen script und demnach kann ich eintragungen in die datenbank machen oder nmir eine mail zukommen lassen (was auch immer, ist ja mir überlassen.

nun möchte ich aber folgendes machen, unzwar, dass ich die daten vom formular zuerst in meine datenbank tabelle eintrage und mit der bestätigung von paypal lediglich einen status setze. das hat den grund, dass ich in der datenbanktabelle felder ausgefüllt haben möchte die nicht unabhängig vond er paypal rückgabe sind. paypal gibt nämlich die dten des paypalaccounts zurück, mit welchem bezahlt wurde und nicht die meines users im system. es ist mir doch relativ egal, wer es bezahlt hat.

meine überlegung dazu war, dass das formular zuvor per post an ein weiteres script schicke, welches mir die einträge in die datenbank macht nd von dort aus die daten weiterleite. ich könnte in diesem script wieder ein formular mit hiddenfields aufziehen und das ganze "onload" mit javascript weiterleiten, jedoch suche ich eine serverseitige (php) lösung. fsocksopen? doch wie genau? die daten müssen per "post" an paypal übermittelt werden.

ich bin dankbar für jede antwort,
lg,
reco
  View user's profile Private Nachricht senden
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Fr 01.02.2008 15:45
Titel

Antworten mit Zitat Zum Seitenanfang

Ich habe zwar schon viel PayPal-Kram umgesetzt -- aber bei Deinen Ausfuehrungen verstehe ich gerade kein Wort. Was genau hast Du vor? Wozu dient das System? Warum ist es Dir egal, "wer" bezahlt hat? Was wird bezahlt? Wie soll das Endergebnis aussehen? Wohin willst Du irgendwelche "Daten" (welche?) weiterleiten?

Zuletzt bearbeitet von Zeithase am Fr 01.02.2008 15:47, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
reco
Threadersteller

Dabei seit: 09.08.2007
Ort: wolke7
Alter: -
Geschlecht: Männlich
Verfasst Fr 01.02.2008 15:57
Titel

Antworten mit Zitat Zum Seitenanfang

Zeithase hat geschrieben:
Ich habe zwar schon viel PayPal-Kram umgesetzt -- aber bei Deinen Ausfuehrungen verstehe ich gerade kein Wort. Was genau hast Du vor? Wozu dient das System? Warum ist es Dir egal, "wer" bezahlt hat? Was wird bezahlt? Wie soll das Endergebnis aussehen? Wohin willst Du irgendwelche "Daten" (welche?) weiterleiten?


wie ich versucht habe, besteht ein formular. in diesem kann man eine menge für einen artikel (shop) bestimmen. hier wird direkt per js der preis kalkuliert und in ein hiddenfield geschrieben. in weiteren hidden-feldern stehen daten zum kunden im system. die action angabe des html-formulars zeigt auf die paypalseite. das heißt, dass wenn man das formular abschickt, sämtliche daten an paypal direkt übertragen werden. der user landet auch auf der paypalseite und kann seine zahlung dort tätigen. doch bevor ich den kunden direkt an paypal weiterleite möchte ich die daten aus dem formular in meine datenbank eintragen. also die action-angabe des html-formulares auf einen sccript von mir leiten, worin der datenbankeintrag geschieht. von diesem script aus möchte ich die daten weiter an paypal schicken, sodass der kunde endgültig doch auf der paypalseite landet um seine zahlung zu tätigen. von der eintragung in die datenbank soll der kunde nichts mitbekommen, dh es soll keine ausgabe gemacht werden. ich könnte jetzt in dem script welches den datenbankeintrag macht einen string mit get-variablenangaben zusammenbauen und eine header-weiterleitung an paypal machen, ejdoch erwartet paypal, dass die daten per "post", welches auch die sicherere variante ist.

hat villeicht jemand eine andere idee dazu, wie man das lösen könnte?
  View user's profile Private Nachricht senden
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Fr 01.02.2008 16:02
Titel

Antworten mit Zitat Zum Seitenanfang

Warum macht ihr euch immer das Leben so schwer?

1. Shop bauen. Keine Hidden-Input-Felder fuer irgendwelche Preise, Warenkoerbe oder Kundendaten. Auf gar keinen Fall.
2. Warenkorb, Kasse, Bestellung abschließen. Alle Daten in die Datenbank packen, eindeutige ID der Bestellung zuweisen.
3. "Jetzt bezahlen"-Button fuer Paypal einbauen, Input-Feld "invoice" fuer Bestell-ID an Paypal uebermitteln.
4. Paypal uebermittelt via IPN die Zahlungsbestaetigung an Dein Backend.
5. Der Kunde gelangt nach der Bezahlung bei Paypal direkt auf Deine Seite zurueck ("returnto"-Value oder vorher bei Paypal definierte URL).

Warum so und nicht anders, fragst Du Dich jetzt? Darum. Was ist, wenn jemand nach der Bestellung z.B. nicht sofort bei Paypal bezahlen moechte, sondern erst spaeter? Eine Alternativloesung fuer Dich besteht auch darin, ein fertiges Shopsystem zu verwenden. Die koennen auch ganz gut mit Paypal und IPN. Ansonsten: die Paypal-Doku ist Dein Freund.


Zuletzt bearbeitet von Zeithase am Fr 01.02.2008 16:05, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
reco
Threadersteller

Dabei seit: 09.08.2007
Ort: wolke7
Alter: -
Geschlecht: Männlich
Verfasst Fr 01.02.2008 16:21
Titel

Antworten mit Zitat Zum Seitenanfang

Zeithase hat geschrieben:
Warum macht ihr euch immer das Leben so schwer?

1. Shop bauen. Keine Hidden-Input-Felder fuer irgendwelche Preise, Warenkoerbe oder Kundendaten. Auf gar keinen Fall.
2. Warenkorb, Kasse, Bestellung abschließen. Alle Daten in die Datenbank packen, eindeutige ID der Bestellung zuweisen.
3. "Jetzt bezahlen"-Button fuer Paypal einbauen, Input-Feld "invoice" fuer Bestell-ID an Paypal uebermitteln.
4. Paypal uebermittelt via IPN die Zahlungsbestaetigung an Dein Backend.
5. Der Kunde gelangt nach der Bezahlung bei Paypal direkt auf Deine Seite zurueck ("returnto"-Value oder vorher bei Paypal definierte URL).

Warum so und nicht anders, fragst Du Dich jetzt? Darum. Was ist, wenn jemand nach der Bestellung z.B. nicht sofort bei Paypal bezahlen moechte, sondern erst spaeter? Eine Alternativloesung fuer Dich besteht auch darin, ein fertiges Shopsystem zu verwenden. Die koennen auch ganz gut mit Paypal und IPN. Ansonsten: die Paypal-Doku ist Dein Freund.


vielen dank für die kritik zeithase.

jedoch geschieht schon alles soweit über die datenbank bis zum zahlvorgang.
das heißt, warekorb wird in form eines strings mit artikel-ids zugeordnet zum user in die datenbank geschrieben/ausgelesen etc.
es geht um die daten die dann zum schluss an paypal gehen, dazu sind die felder nötig.

//edit

die paypal-doku und ich sind freunde wie der pfarrer mit der bibel Lächel


Zuletzt bearbeitet von reco am Fr 01.02.2008 16:26, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Fr 01.02.2008 16:28
Titel

Antworten mit Zitat Zum Seitenanfang

Und da machst Du einfach einen Pay-Now-Button hin oder handelst das ganze selbst per Paypal-API mittels SOAP.

Fuer erstere, einfachere Variante ist das z.B.:
Code:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" accept-charset="utf8">
<input type="hidden" name="cmd" value="_cart" />
<input type="hidden" name="upload" value="1" />
<input type="hidden" name="cancel_return" value="http://abbruchseite/" />
<input type="hidden" name="return" value="https://deinedomain/" />
<input type="hidden" name="business" value="dein@paypalaccount.com" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="handling_cart" value="Versandkosten hier eintragen" />
<input type="hidden" name="item_name_1" value="Artikel 1" />
<input type="hidden" name="amount_1" value="Preis Artikel 1" />
<input type="hidden" name="quantity_1" value="Anzahl Artikel 1" />
<input type="hidden" name="item_name_2" value="Artikel 2" />
<input type="hidden" name="amount_2" value="Preis Artikel 2" />
<input type="hidden" name="quantity_2" value="Anzahl Artikel 2" />
<input type="hidden" name="invoice" value="Bestell-ID hier eintragen" />
<input type="image" name="image" src="http://www.paypal.com/de_DE/i/btn/x-click-but02.gif"
name="submit" alt="Zahlen Sie mit PayPal . schnell, kostenlos, und sicher!">
</form>


Wie schon gesagt, wenn Du Dir diesen Umweg ersparen moechtest, bietet Dir Paypal viele Moeglichkeiten, samt fertigem Code:

http://www.paypal.com/de_DE/html/IntegrationCenter/ic_sdk-resource.html
http://www.paypal.com/de_DE/html/IntegrationCenter/ic_nvp.html
  View user's profile Private Nachricht senden
reco
Threadersteller

Dabei seit: 09.08.2007
Ort: wolke7
Alter: -
Geschlecht: Männlich
Verfasst Fr 01.02.2008 17:02
Titel

Antworten mit Zitat Zum Seitenanfang

un das ist ja der "herkömmliche" weg. mein wille war, diese daten zuvor in eine rechnungstabelle einzutragen bloß auf inaktivem status (was im frotend nicht sichtbar ist). sobald die zahlungsbestätigung eingetroffen ist, wird die rechnung sichtbar (ipn-script erledigt das).

sprich, rechnung wird zuvor erstellt....mittels der ebstätigung wird sie aktiviert/sichtbar.

das hat weitere gründe (rech.nr., gezahte ungezahlte rechn. etc.), die aber hier vom thema abringen würden.

nun habe ich das problem gelöst, unzwar indem ich diesen "paybuy-button" nicht an paypal schicke, sondern an meine paypal.php und hier meinen datenbankeintrag mache und dann mittels header-direction in php an die paypal-url in form von get-variablen schicke.

hier hatte ich mich getäuscht. get wird erkannt und funktioniert.

Code:


//paypal ssl-adresse an die normalerweise das formular hingehen würde   
$url                = 'https://www.paypal.com/cgi-bin/webscr/';

//übernehme daten vom formular
$form_cmd         = $_POST['cmd'];
$form_business      = $_POST['business'];
$form_item_name      = $_POST['item_name'];
$form_item_number   = $_POST['item_number'];
$form_amount      = $_POST['amount'];
$form_quantity      = $_POST['quantity'];
$form_currency_code   = $_POST['currency_code'];
$form_bn         = $_POST['bn'];
$form_image_url      = $_POST['image_url'];

//variablen-string die an die url drangehängt wird
$query               = '?cmd='.$form_cmd.'&business='.$form_business.'
&item_name='.$form_item_name.'&item_number='.$form_item_number.'&amount='
.$form_amount.'&quantity='.$form_quantity.'&currency_code='.$form_currency_code.'
&bn='.$form_bn.'&image_url='.$form_image_url;

//weiterleitung auf paypal
header('Location: '.$url.$query);


  View user's profile Private Nachricht senden
worshipper

Dabei seit: 01.10.2004
Ort: worshipper fear satan
Alter: -
Geschlecht: Männlich
Verfasst Fr 30.10.2009 10:13
Titel

Antworten mit Zitat Zum Seitenanfang

sorry wenn ich das thema aus dem keller hole....

hab die aufgabe paypal in unser system einzubauen, jedoch ist es im sinne kein shop-system sondern eine einfache html webseite in dem der kunde/user uns das Geld per Paypal überweisen soll.

Durch das integration center steig ich nicht so recht durch... daher die Frage: Wie mache ich soetwas am einfachsten?
  View user's profile Private Nachricht senden
 
Ähnliche Themen xt:commerce und paypal
PayPal-Einbindung
cd shop mit paypal?
PayPal IPN - Ws kommt in notify_url?
Returnlink von paypal verstecken?
Spenden Button (PayPal)
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.