webshop. mit paypal verkaufen



  • hallo,

    ich richte garaden ein (so ne art) shop auf einer (von mir erstellte) webseite ein. das ganze möchte ich mit paypal machen. verkauft werden soll musik (eigene musik, also rechte und so erstmal unwichtig).

    verkauft werden soll mit einzelzahlung, also auf button *klick* ...weiterleitung... *einloggen* *bezahlen* ...zurück zur webseite... *runterladen*

    jetzt habe ich ein paypal-button erstellt, wenn man drauf klickt wird man dann weitergeleitet wo man zahlen soll. wenn man bezahlt hat, dann wird man dann zurück zur webseite geleitet.
    die "weiterleitung zurück" habe ich bei den button eingestellt, da kann man eine adresse eigeben wo man nach der kaufabwickling gehen soll.
    was mir jetz nicht gefählt ist das die adresse (nach der kaufabwicklung) statisch ist. mann kann nicht 100% überprüfen ob man schon bezahlt hat.

    hat wer schon erfahrung mit paypal verkauf.



  • Hallo,

    versteh ich nicht. Die Weiterleitung nach Bezahlung findet auch nur statt wenn eine Bezahlung stattgefunden hat. Bricht der Käufer wärend des Bezahlvorgangs ab, wird er auch nicht auf deine Seite weitergeleitet. Ich glaube das wirst du etwas genauer erklären müssen.

    LG



  • in diesem webshop werden musik-tracks angeboten. so, ich dachte mir dass der käufer nach der bezahlung zur downloadseite geschickt wird und da den track runterladen kann.

    das passiert auch! aber die downloadseite (php-seite) kann nicht überprüfen ob der auch bezahlt hat. von paypal kriege ich nur eine kleine GET "blabla reuturn paypal" oder so. was toll währe wenn ich z.b. die e-mail im GET hätte oder eine nummer oder so, das halt nicht jeder den link in sein borwser eingiebt.

    es geht halt nur um den download danach.

    und noch ne frage. soll ich irgendwas noch vom käufer speichern, seine e-mail? weil das ja kein richtiger webshop ist und man muss ich da nicht regestrieren.



  • Hallo,

    das was du da machst, kommt ungefähr dem PayPal-Spendenbutton gleich! Wie willst du den Nutzer denn sonst sicher Authentifizieren, wenn nicht durch eine Anmeldung? Du könntest mittels $_SERVER['HTTP_REFERER']; prüfen von welcher Seite der Nutzer kommt, aber das wäre zu einfach zu knacken. Du könntest einen Cookie speichern, schließt damit aber alle "Hilfe, Cookies sind soooooo böse"-Nutzer aus. So, damit wären dann auch alle Registrierungslosen Möglichkeiten genannt. Nun kannst du dich entscheiden.

    LG



  • hier, ich lese gerade über sofortige zahlungsbestätigung https://www.paypalobjects.com/de_DE/html/IntegrationCenter/ic_ipn.html

    ich dahte mir wenn das klappt dann kann ich ja die adresse der musik-datei per e-mail an käufer schiken.

    funktioniert tut es so: ... kaufabwicklung ... paypal schickt zu meiner webseite die benachrichtigung ... die seite kann sie bearbeiten und schickt die daten wieder zurück ... paypal überprüft und schickt "VERIFIED" (bestätigt) oder "INVALID" (ungültig) zurück ... dann kann ich e-mail versenden

    ich frag mich nun wie kriege ich die daten und wie schicke ich die ab GET, POST?



  • hab jetzt beim paypal konto die option "Sofortige Zahlungsbestätigungen (IPN)" eingestellt, ich kriege jetzt auch von paypal die daten nach dem kauf.

    der ablauf ist folgender:
    ...kaufabwicklung...paypal schickt zur webseite daten...daten werden bearbeitet und zurück gesendet...paypal überprüft und schickt "VERIFIED" oder "INVALID" zurück

    aber bei mir ist folgendes:
    ...kaufabwicklung...paypal schickt zur webseite daten...daten werden bearbeitet und zurück gesendet...paypal ??? und schickt "HTTP/1.1 400 Bad Request" zurück

    liegt das vielleicht am php code?

    <?php
    
    $log_txt = "start...".date("d.m.Y H:i:s")."\n";
    
    if(isset($_POST) AND count($_POST)){
    
        $log_txt .= "read post...\n";
        $req = "cmd=_notify-validate";
        foreach($_POST as $key => $value){
            $value = urlencode(stripslashes($value));
            $log_txt .= "key: ".$key." | value: ".$value."\n";
            $req .= "&$key=$value";
        }
    
        $log_txt .= "send text: $req\n";
    
        $log_txt .= "connecting...";
        // Validierungs-POST zurückschicken
        $header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header .= "Content-Length: ".strlen($req)."\r\n\r\n";
        $header .= "Host: www.paypal.com\r\n";
    
        $fp = fsockopen("www.paypal.com", 80, $errno, $errstr, 30);
    
        if(!$fp)
            // HTTP ERROR
            $log_txt .= "error. HTTP-Error: $errno: $errstr \n";
        else{
            $log_txt .= "estabilished\n";
    
            $log_txt .= "sending...\n";
            //fputs($fp, $header.$req);
            fwrite($fp, $header);
            fwrite($fp, $req);
    
            $log_txt .= "receiving...\n";
            //$counter = 0;
            while(!feof($fp)){
                //$counter++;
    
                $res = fgets($fp, 1024);
    
                $log_txt .= "result: $res \n";
    
                if(strcmp($res, "VERIFIED") == 0)
                    $log_txt .= "VERIFIED\n";
    
                elseif(strcmp($res, "INVALID") == 0)
                    $log_txt .= "INVALID";
            }
            fclose($fp);
        }
    
    }
    $log_txt .= "end...".date("d.m.Y H:i:s")."\n";
    file_put_contents("log".date("i_s").".txt", $log_txt);
    
    ?>
    

    und der log text:

    start...04.08.2010 20:19:38
    read post...
    key: *** | value: ***
    
    connecting...estabilished
    sending...POST /cgi-bin/webscr HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 847
    
    receiving...
    result: HTTP/1.1 400 Bad Request
    
    result: Date: Wed, 04 Aug 2010 18:19:42 GMT
    
    result: Server: Apache
    
    result: Content-Length: 226
    
    result: Connection: close
    
    result: Content-Type: text/html; charset=iso-8859-1
    
    result:
    
    result: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    
    result: <html><head>
    
    result: <title>400 Bad Request</title>
    
    result: </head><body>
    
    result: <h1>Bad Request</h1>
    
    result: <p>Your browser sent a request that this server could not understand.<br />
    
    result: </p>
    
    result: </body></html>
    
    end...04.08.2010 20:19:38
    

    das ganze habe ich von https://www.paypalobjects.com/de_DE/html/IntegrationCenter/ic_ipn.html
    da steht noch das man zur https://www.paypal.com/cgi-bin/webscr senden soll "https" und bei mir senden ich doch zu "http" oder? wie sende ich dann zu https?



  • Hallo,

    folgendes sagt PayPal:

    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
    

    Und du sendest nicht an https, sondern über https

    LG



  • jo danke hat geklappt 🙂

    da steht noch

    ... Ihr Skript für die Sofortige Zahlungsbestätigung (IPN) muss dann einen HTTP-Header mit der Antwort "200 OK" an PayPal senden,
    um weitere Versuche, die Transaktionsdaten zu versenden zu verhindern. ...
    

    kann ich den eine "200 OK" senden?

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

    denn normalerweise kriegt man ja diese meldung vom antwort-server.



  • Hallo,

    Folgendes sollte reichen:

    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
    $header = "HTTP/1.0 200 OK";
    fputs($fp, $header)
    

    [/php]

    LG


Anmelden zum Antworten