# PayPal einbinden - Hilfe



## Lektor21 (24. September 2007)

Hallo!

Also ich habe folgenden Code gefunden für den Einbau von PayPal:


```
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
                  <input type="hidden" name="add" value="1">
                  <input type="hidden" name="cmd" value="_cart">
                  <input type="hidden" name="business" value="Chris-Bornemann@web.de">
                  <input type="hidden" name="item_name" value="<?php if ($dauer != "") {echo"AutoFeedback.de - Premium $dauer Monat(e) (Benutzer: $user)";} ?>">
                  <input type="hidden" name="amount" value="<?php echo "$price"; ?>">
                  <input type="hidden" name="no_shipping" value="2">
                  <input type="hidden" name="no_note" value="1">
                  <input type="hidden" name="currency_code" value="EUR">
                  <input type="hidden" name="lc" value="DE">
                  <input type="hidden" name="bn" value="PP-ShopCartBF"> 
                  <input type="submit" value="Zahlen" tabindex="1" class="button">&nbsp;<input type="button" name="abbrechen" value="Abbrechen" onClick="JavaScript:self.close()" tabindex="2" class="button">
               </form>
```

Das funktioniert auch, aber wie kann man realisieren, dass wenn derjenige gezahlt hab das folgende ausgeführt wird:


```
<?php

if ($time_current > $premiumuserseconds)

{    

$date_current = date("d.m.Y");  

$date = explode(".",$date_current);    

$new_premiumuser_to = date("d.m.Y",mktime(0,0,0,$date[1]+$dauer,$date[0],$date[2]));  

mysql_query("UPDATE user SET premiumuser_to = '$new_premiumuser_to' WHERE user = '$user'") OR die(mysql_error());
}

elseif ($time_current < $premiumuserseconds)

{
$date = explode(".",$premiumuser_to);    

$new_premiumuser_to = date("d.m.Y",mktime(0,0,0,$date[1]+$dauer,$date[0],$date[2]));

mysql_query("UPDATE user SET premiumuser_to = '$new_premiumuser_to' WHERE user = '$user'") OR die(mysql_error());
}



$new_payed = $payed + $price;

mysql_query("UPDATE user SET payed = '$new_payed' WHERE user = '$user'") OR die(mysql_error());

?>
```


Das hier habe ich bei PayPal gefunden: http://www.paypal.com/de_DE/html/IntegrationCenter/ic_pdt.html

Ich steige da bloß einfach nicht durch 

Es wäre sehr nett wenn mir jemand helfen würde!  Weil ich habe keine Ahnung wie ich das machen soll


----------



## spikaner (24. September 2007)

Du kannst zum Beispiel in Deinem Paypal 'Jetzt Kaufen' Button eine Rückleitungs-URL angeben von wo Dein Kaeufer die Ware downloaden kann. 
Das geht so: Beim Erstellen eines 'Jetzt Kaufen' Buttons kannst Du eine Rückleitungs-URL festlegen. An diese URL werden Deine Kunden zurück geleitet, wenn eine Zahlung erfolgreich beendet wurde.
Wenn Dein Kunde nach der Zahlungsabwicklung auf "Weiter" klickt, wird er zu der festgelegten URL geleitet. Falls Du keine URL für erfolgreiche Zahlungen angibst, werden Deine Kunden nach Abschluss der Zahlung auf eine PayPal-Seite geleitet.
Du kannst auch eine URL für stornierte Zahlungen festlegen. An diese URL werden Deine Kunden geleitet, wenn sie eine Zahlung zu einem Zeitpunkt innerhalb des Zahlungsvorgang abbrechen.
Um diese Informationen zu bearbeiten, rufe den HTML-Code auf, den Du von Paypal kopiert hast und in Deine Website eingefügt hast. Suche im HTML-Code die zu bearbeitende Variable. Die Variablen haben folgende Namen:
URL bei erfolgreicher Zahlung = return
URL für stornierte Zahlung = cancel_return 

Hoffe das hilft dir weiter (einfach auf nee neue Seite leiten das Script abarbeiten und mit header weiter^^).

mfg Spikaner


----------



## Lektor21 (24. September 2007)

Ja hab ich ja auch schon überlegt! Aber wie kann ich dann auf der Seite prüfen, ob derjenige bezahlt hat oder nicht? Man könnte ja dann auch die Url so im Browser aufrufen 

Ich habe jetzt etwas bei PayPal gefunden, dass man PayPal bei der Kaufabwicklung eine Variable übergeben kann und diese am Ende zurück kommt!

Könnte man da nicht jedem User eine Zufällig generierte Zahl zuordnen und wenn PayPal nach Zahlungsabwicklung zurückleitet, schauen wer diese Zahl hat und diesem dann den Premium zuordnen!? Ist das Sicher?

Oder eher unsicher, dass man diese auslesen kann?


----------



## Lektor21 (25. September 2007)

Also ich bin soweit durch! Habe es schon vorher getestet! So, nun habe ich das komplette Script fertig und es passier nix mehr!

Also er trägt nichts in die Datenbank mehr ein! Schaut mal bitte jemand, ob er den Fehler findet?


```
<?php

$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}

$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);



// assign posted variables to local variables
$item_name = $_POST['item_name'];
$transid = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$price = $_POST['mc_gross'];


include('../data/config.php');

$info=mysql_query("SELECT * FROM user WHERE transid = '$transid'") OR die(mysql_error());
while ($row = mysql_fetch_object ($info)) {
$premiumuser_to_date="$row->premiumuser_to_date";
$premiumuser_to_time="$row->premiumuser_to_time";
$payed="$row->payed";
}

$result=mysql_query ("SELECT pricepermonth FROM data") OR die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$pricepermonth=$row["pricepermonth"];
}

$time_current = time();
$date_current = date("d.m.Y");

$date = explode(".","$premiumuser_to_date");
$time = explode(":","$premiumuser_to_time");

$premiumuser_to = mktime("$time[0]","$time[1]",0,"$date[1]","$date[0]","$date[2]");

$payed_new = ($payed + $price);

$premium_months = ($price / $pricepermonth);


if ($time_current > $premiumuser_to)

{
           $date = explode(".",$date_current);   

           $premiumuser_to_date_new = date("d.m.Y",mktime(0,0,0,$date[1],$date[0]+$premium_months,$date[2]));

           $premiumuser_to_time_new = date("H:i");
}

elseif ($time_current < $premiumuser_to)

{

           $date = explode(".",$premiumuser_to_date);  

           $premiumuser_to_date_new = date("d.m.Y",mktime(0,0,0,$date[1],$date[0]+$premium_months,$date[2]));
           $premiumuser_to_time_new = $premiumuser_to_time;

}


mysql_query("UPDATE user SET $premiumuser_to_date = '$premiumuser_to_date_new', $premiumuser_to_time = '$premiumuser_to_time_new', $payed = '$payed_new' WHERE transid = '$transid'") OR die(mysql_error());


?>
```


----------



## HellSid3r (19. Februar 2010)

Hallo Lektor21

Ist ne Weile her als du diesen Beitrag gepostet hast, aber für alle anderen die hier auch nicht weiterkommen, du hast beim UPDATE Befehl PHP Variablen anstatt MySQL genommen;
Einfach folgendes ersetzen:

mysql_query("UPDATE user SET $premiumuser_to_date = '$premiumuser_to_date_new', $premiumuser_to_time = '$premiumuser_to_time_new', $payed = '$payed_new' WHERE transid = '$transid'") OR die(mysql_error()); 

mit

mysql_query("UPDATE user SET premiumuser_to_date = '$premiumuser_to_date_new', premiumuser_to_time = '$premiumuser_to_time_new', payed = '$payed_new' WHERE transid = '$transid'") OR die(mysql_error()); 

Habe es nicht getestet, sollte aber gehen.

MfG


----------

