php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 07-05-2011, 11:15
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard Hilfe bei Paypal-Zahlung

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:
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";
    }
}
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:

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&uuml;r Ihren Auftrag. Sie erhalten in K&uuml;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&uuml;nschte Produkte:</u><br>- Anzahl DVDs von Deepak Chopra von dessen Vortrag am ' .
                   '30.04.2011 \'Heilung, Transformation und ein h&ouml;heres Bewusstsein\' zu je 23,90 Euro incl. ' .
                   'MwSt. zzgl. Versand: ' . $_POST['set1'] . '<br>' .
                   '<u>Gew&uuml;nschte Zahlungsart:</u> ';

...
Ich bekomme dann allerdings die Meldung:
Zitat:
<>... User unknown

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?
Mit Zitat antworten
  #2 (permalink)  
Alt 08-05-2011, 16:32
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

1. Wann wird das Formular tatsächlich gesendet? Dass sehe ich atm noch nicht.

2. Sicher, dass ich die Zahlung nicht umgehen kann? Ich brauch doch nur meine Daten an dir bought.php absenden.
EDIT:
ich sehe, du hast ne validierung drin
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 09-05-2011, 09:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Warum sehe ich kein error_reporting ?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 09-05-2011, 10:47
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

@TobiaZ

Da gibt´s natürlich einen Button.
Mit Zitat antworten
  #5 (permalink)  
Alt 09-05-2011, 12:26
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

@combie

Ich habe jetzt mal folgendes eingefügt:
Code:
error_reporting(E_ALL);
und zwar gleich vor:
Code:
$vorname=$_POST['vorname'];
Leider keine Anzeigen????
Mit Zitat antworten
  #6 (permalink)  
Alt 09-05-2011, 12:39
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

das ist ja auch nur die eine Hälfte des Error-reporting ...

was fehlt ist

PHP-Code:
ini_set('display_errors'1); 
damit die nun generierten Meldungen auch ausgegeben werden

ich fürchte nur, es wird dir genau bestätigen, was du schon weißt - deine Post-Daten sind nach dem "Ausflug" zu paypal leer ...Weil Paypal dir eben deine Post Daten nicht zurückschickt, sondern nur den Bezahlt-Link aufruft ....
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #7 (permalink)  
Alt 11-05-2011, 15:03
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

@eagle275

Trotzdem kommen keine Ausgaben.

Ich stelle mir gerade die Frage, ob ich das auch anders lösen kann, z.B. indem ich in der Funktion PruefeInhalt anstatt
Code:
document.formular.action = "https://www.paypal.com/cgi-bin/webscr";
etwas setze wie:
Code:
document.formular.action = "bought-paypal.php";
, dann in der bought-paypal.php zuerst die Feldinhalte auslese und mir merke, z.B. indem ich sie in eine Datenbank schreibe, dann https://www.paypal.com/cgi-bin/webscr aufrufen, und dort dann in eine bought-paypal2.php zurückspringen lasse, wo dann der Rest erledigt wird, indem die Parameter aus der Datenbank genommen werden.

Denkt Ihr, das kann funktionieren? Und wie rufe ich eine Adresse wie https://www.paypal.com/cgi-bin/webscr aus PHP heraus auf?

Danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 11-05-2011, 15:06
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.603
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wieso nicht einfach die Paypal-API verwenden?
Mit Zitat antworten
  #9 (permalink)  
Alt 11-05-2011, 15:27
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

@h3ll

Gibt mir die API meine Formulardaten wieder mit zurück?
Mit Zitat antworten
  #10 (permalink)  
Alt 11-05-2011, 15:28
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.603
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Nein, wozu auch? Du hast die ja schon. Warum sollte man dir etwas zurückgeben, das du schon hast?
Mit Zitat antworten
  #11 (permalink)  
Alt 11-05-2011, 15:37
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

Weil ich ja erst nach erfolgreicher Zahlung durch Paypal diese sinnvoll verarbeiten kann. Dann habe ich sie aber leider nicht mehr.
Mit Zitat antworten
  #12 (permalink)  
Alt 11-05-2011, 15:45
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.603
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von beginner123 Beitrag anzeigen
Weil ich ja erst nach erfolgreicher Zahlung durch Paypal diese sinnvoll verarbeiten kann. Dann habe ich sie aber leider nicht mehr.
Dann schreib sie in die Session.
Mit Zitat antworten
  #13 (permalink)  
Alt 11-05-2011, 16:03
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

Irgendwo habe ich gelesen, dass das in Zusammenhang mit Paypal auch nicht sicher wäre.
Mit Zitat antworten
  #14 (permalink)  
Alt 11-05-2011, 16:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.603
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wieso?
Mit Zitat antworten
  #15 (permalink)  
Alt 12-05-2011, 11:54
beginner123
 Registrierter Benutzer
Links : Onlinestatus : beginner123 ist offline
Registriert seit: Nov 2010
Beiträge: 42
beginner123 befindet sich auf einem aufstrebenden Ast
Standard

Weiß ich nicht mehr.
Nun, wenn ich das tun möchte, stoße ich wohl sofort auf das nächste Problem: Ich muss die Formular-Variablen ja dann in SESSION-Variablen abspeichern. Und das geht ja wohl sinnvoll nur in der JavaScript-Funktion checkForm, die hier aufgerufen wird:
Code:
<form name="formular" method="post" action="ticket-booked.php" onsubmit='return checkForm();'>
Und JavaScript kann wieder keine SESSION-Variablen anlegen.

Also löst es nicht mein Problem... (oder ich weiß einfach noch zu wenig...)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
paypal, php, post, variablenübergabe


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Paypal unzulässige Zahlung via IPN bloodyorchid Projekthilfe 20 01-05-2010 21:15
Benötige Hilfe bei PayPal Integration (IPN/PDT) max479 Jobgesuche 0 07-07-2006 10:36
News, Chat mit Zahlung dragon90 Jobgesuche 1 17-05-2006 19:17
PayPal bweichel PHP Developer Forum 7 08-05-2006 16:02
PayPal & IPN jensn Off-Topic Diskussionen 9 01-02-2005 11:46

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:17 Uhr.