tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
24
ZUGRIFFE
872
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.520
    Dann hast du es richtig gemacht, war das die Sandbox? Wenn ja, mach doch mal ein Payment auf dem Live-System.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  2. #17
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    hast du denn auch die authentication parameter angepasst?
    Meines wissens unterscheiden sich die zugängangsdaten für sandbox und livesystem.


    Vieleicht auch mal im accesslog gucken ob der IPN callback überhaupt erfolgt
     

  3. #18
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Zitat Zitat von chibisuke Beitrag anzeigen
    Meines wissens unterscheiden sich die zugängangsdaten für sandbox und livesystem.
    Ich denke da kommen wir der Sache schon näher. Wie muss ich die "authentication parameter" für das Livesystem anpassen?
     

  4. #19
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Deine API calls haben einen USER, einen SIGNATURE und einen PWD parameter.

    Die müssen logischerweise auf einen auf dem paypal live system freigeschalteten account zeigen.

    Diese 3 daten unterscheiden sich normalerweise vom sandbox system! Sollten sie dir nicht bekannt sein, musst du dich mit deinem ansprechpartner bei paypal in verbindung setzen.
     

  5. #20
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Eine Sofortige Zahlungsbestätigung (IPN) müsste doch auch ohne API möglich sein.

    Alternative Option: PayPal Starter (ohne API-Programmierkenntnisse)
    https://www.paypalobjects.com/de_DE/..._pps_home.html

    Redirect:
    PHP-Code:
    $str "cmd=_xclick&business=" urlencode(test@paypalemail.com) . "&no_shipping=0&no_note=1";
    $str .= "&item_name=Test";
    $str .= "&amount=10";
    $str .= "&currency_code=EUR";
    $str .= "&notify_url=" urlencode('http://www.example.com/ppipn.php');
    $str .= "&return=" urlencode('http://www.example.com/success.html');
    $str .= "&cancel_return=" urlencode('http://www.example.com/cancel.html');
    $str .= "&item_number=1";

    if(
    $test_mode == true) {
        
    header("Location: https://www.sandbox.paypal.com/cgi-bin/webscr?" $str);
    } else {
        
    header("Location: https://www.paypal.com/cgi-bin/webscr?" $str);


    IPN:
    PHP-Code:
    $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";

    if(
    $test_mode == true) {
        
    $fp fsockopen ('ssl://www.sandbox.paypal.com'443$errno$errstr30);
    } else {
        
    $fp fsockopen ('ssl://www.paypal.com'443$errno$errstr30);
    }


    if (!
    $fp) {
    } else {
        
    fputs ($fp$header $req);
        
        while (!
    feof($fp)) {
            
    $res fgets ($fp1024);

            if (
    strcmp ($res'VERIFIED') == 0) {
            
    mail($_POST['payer_email'], "Test""Hallo Kunde""From: Test <test@paypalemail.com>");
                        
            } else if (
    strcmp ($res'INVALID') == 0) {
            }

        }

        
    fclose ($fp);
    }

    ?> 

    So sieht mein Script aus und funktioniert wenn $test_mode => true.


    Gruß proloser
    Geändert von proloser (11.06.11 um 19:00 Uhr)
     

  6. #21
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Stimmt, im falle des PayPal starter APIs gibts keine zugangsdaten die du übergeben musst, weil du die transaktion vorher nicht registrierst.

    Ich würd jetzt erstmal gucken ob das IPN script überhaupt aufgerufen wird. (im webserver log).

    Und dann musst du raus finden was nicht funktioniert

    Ich könnte mir vorstellen, dass dieser aufruf:
    PHP-Code:
        $fp fsockopen ('ssl://www.paypal.com'443$errno$errstr30); 
    aus irgend nem grund fehlschlägt (Zertifikat fehler oder ähnliches).

    Ab besten mal prüfen ob $fp auch tatsächlich erstellt wird.
    proloser bedankt sich. 

  7. #22
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.520
    Offensichtlich wirds aufgerufen, wenn der Code, der dafür verantwortlich ist, ausgeführt wird. Die Frage ist nur, warum es Live anders reagiert als in der Sandbox.

    Außerdem rate ich dir dringend ab, das Starter zu nutzen. Das Formular mit sämtlichen darin befindlichen Daten kann man manipulieren. Ich könnte bspw. die business-Email ändern, und damit an mich selbst überweisen. Das Geld würde trotzdem bei dir im Shop als "gutgeschrieben" ankommen.

    Das Starter ist höchst unsicher.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  8. #23
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Natürlich verschlüssle ich die wichtigen Daten bevor ich sie übergebe und prüfe sie in der IPN nochmals. Diesen Teil hab ich zum Testen extra rausgenommen, um sicher zu gehen damit es nicht an dem scheitert.
     

  9. #24
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.520
    Ok, du bekommst im IPN also die business-Email-Adresse auch wieder zurück und kannst diese validieren. Das geht aus der Doku erstmal nicht hervor.

    Hast du schon Gelegenheit gehabt, die komplette Antwort mal raus zu loggen, um zu sehen, was da tatsächlich drin steht?

    Edit:

    Ich würde im IPN mal diesen Teil hier debuggen:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            Logger::log($res);  // Wenn du meine Klasse verwendest, ansonsten trigger_error() oder etwas eigenes.
            if (strcmp ($res, 'VERIFIED') == 0) {
            
    mail($_POST['payer_email'], "Test", "Hallo Kunde", "From: Test <test@paypalemail.com>");
                        
            } else if (strcmp ($res, 'INVALID') == 0) {
            }
     
        }

    Dann die app.log anschauen und dann siehst du evtl. den Fehler. Im Übrigen würde ich strcmp() für diesen Zweck nicht verwendet. ANSI <=> UTF-8 könnte hier ein Problem darstellen. Verwende statt dessen einfach ein ==, aber was kommt da eigentlich wirklich rüber? Kann es sein, das in dem String evtl. mehr als nur "VERIFIED" drin steht, evtl. sowas wie "payer_status=verified"? Könnte es sein, das der Wert statt groß komplett klein geschrieben ist? strcmp() unterscheidet zwischen Groß- und Kleinschreibung.
    Geändert von saftmeister (11.06.11 um 21:15 Uhr)
    proloser bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  10. #25
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    So vielen Dank für eure Hilfe, es funktioniert jetzt einwandfrei! Das Problem lang wirklich an einem Zertifikat Problem.

    "fsockopen" mit folgender Zeile austauschen und es funktioniert:
    PHP-Code:
    $fp fsockopen ('www.paypal.com'80$errno$errstr30); 

    Ich bin jetzt froh das es funktioniert aber unverständlich ist es für mich dennoch, denn über die Sandbox funktioniert es ja auch über die SSL verbindung.


    Gruß proloser
     

Ähnliche Themen

  1. PayPal IPN
    Von olektu im Forum PHP
    Antworten: 0
    Letzter Beitrag: 20.04.11, 21:03
  2. Paypal Integration
    Von Sprint im Forum Stellenangebote (entgeltlich)
    Antworten: 0
    Letzter Beitrag: 01.03.11, 21:46
  3. Paypal und PHP
    Von puschelchen im Forum PHP
    Antworten: 9
    Letzter Beitrag: 14.01.11, 12:51
  4. PayPal
    Von proloser im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 02.04.07, 21:23
  5. PayPal
    Von Adam Wille im Forum Internet, DSL & Flatrate
    Antworten: 3
    Letzter Beitrag: 08.10.05, 14:53

Stichworte