Hallo,
ich habe eine Microsite geschrieben, in der ich Kunden per Vorkasse, Lastschrift oder Paypal bezahlen lassen möchte. Ich poste dazu mal ein paar Codeschnipsel: Zuerst das Formular, in der ich die Daten erfassen lasse, incl. der an paypal zu übergebenden Werte:
D.h. PruefeInhalt ändert das Sprungziel, wenn Zahlungsart Paypal gewählt wird, und ändert es wieder zurück, wenn die anderen Zahlungsarten gewählt werden, und setzt auch den richtigen Betrag. So weit scheint alles zu funktionieren, bei Auswahl von Paypal kann man auch bei Paypal bezahlen.
Dann kommt in der Datei bought.php folgender Code:
Ich bekomme dann allerdings die Meldung:
Ich schreibe dort auch etwas in eine Datenbank, und das INSERT-Statement schlägt auch fehl. Ein Kontrolloutput zeigt mir, dass die Werte leer sind, sprich, wenn ich das richtig interpretiere, sind nach der Paypal-Zahlung natürlich die _POST-Variablen nicht gesetzt. Wie kann ich das verhindern?
ich habe eine Microsite geschrieben, in der ich Kunden per Vorkasse, Lastschrift oder Paypal bezahlen lassen möchte. Ich poste dazu mal ein paar Codeschnipsel: Zuerst das Formular, in der ich die Daten erfassen lasse, incl. der an paypal zu übergebenden Werte:
Code:
<form name="formular" method="post" action="bought.php" onsubmit='return checkForm();'> ... <input type="radio" name="Zahlmethode" value="paypal" onchange="PruefeInhalt()"/> <input type="radio" name="Zahlmethode" value="vorkasse" onchange="PruefeInhalt()"/> ... <input type="hidden" name="business" value="meinemail@meinemail.de" /> <input type="hidden" name="item_name" value="Artikelname" /> <input type="hidden" name="return" value="http://www.meineurl.de/bought.php"> <input type="hidden" name="notify_url" value="http://www.meineurl.de/bought.php"> <input type="hidden" name="currency_code" value="EUR"> <input type="hidden" name="lc" value="DE"> <input type="hidden" name="amount" value="1.00" /> </form> ... function PruefeInhalt() { document.formular.amount.value = brutto; if (document.formular.Zahlmethode[0].checked) { document.formular.action = "https://www.paypal.com/cgi-bin/webscr"; } else if (document.formular.Zahlmethode[1].checked || document.formular.Zahlmethode[2].checked) { document.formular.action = "bought.php"; } }
Dann kommt in der Datei bought.php folgender Code:
Code:
$vorname = $_POST['vorname']; $name = $_POST['name']; $strasse = $_POST['strasse']; $plz = $_POST['plz']; $ort = $_POST['ort']; $land = $_POST['land']; $tel = $_POST['tel']; $email = $_POST['email']; $set1 = $_POST['set1']; $newsletter = $_POST['newsletter']; $kommentar = $_POST['kommentar']; $kontonr = $_POST['kontonr']; $blz = $_POST['blz']; $inhaber = $_POST['inhaber']; $paypalzahlungok = " - Zahlung o.k."; $value_f = $_POST['Zahlmethode']; if ($value_f == 'paypal') { // VALIDATING // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req .= "&$key=$value"; } // post back to PayPal system to validate $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); if (!$fp) { echo "http error"; $paypalzahlungok = " - Fehler"; } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets ($fp, 1024); $resarray[] = $res; } fclose ($fp); if ($resarray['12'] == "VERIFIED") { echo '<font color="#000000"><br><p>Vielen Dank für Ihren Auftrag. Sie erhalten in Kürze ' . 'eine E-Mail an ' . $_POST['email'] . ' mit Ihren Bestelldaten. </p><br></font>'; } else { echo '<font color="#000000"><br><p>Es ist ein Fehler bei der Bezahlung aufgetreten.</p><br></font>'; $paypalzahlungok = " - Fehler"; } } } // EMail an den Kunden versenden $text = 'Sehr geehrte(r) Herr/Frau ' . $_POST['vorname'] . ' ' . $_POST['name'] . ',<br><br>'; $text = $text . 'wir haben folgende Daten von Ihnen empfangen: ' . $_POST['strasse'] . ', ' . $_POST['land'] . ' - ' . $_POST['plz'] . ' ' . $_POST['ort'] . ', Tel. ' . $_POST['tel'] . '<br><u>Gewünschte Produkte:</u><br>- Anzahl DVDs von Deepak Chopra von dessen Vortrag am ' . '30.04.2011 \'Heilung, Transformation und ein höheres Bewusstsein\' zu je 23,90 Euro incl. ' . 'MwSt. zzgl. Versand: ' . $_POST['set1'] . '<br>' . '<u>Gewünschte Zahlungsart:</u> '; ...
<>... User unknown
Fehler: Could not instantiate mail function.
Fehler: Could not instantiate mail function.
Ich schreibe dort auch etwas in eine Datenbank, und das INSERT-Statement schlägt auch fehl. Ein Kontrolloutput zeigt mir, dass die Werte leer sind, sprich, wenn ich das richtig interpretiere, sind nach der Paypal-Zahlung natürlich die _POST-Variablen nicht gesetzt. Wie kann ich das verhindern?
Kommentar