tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree2Danke
ERLEDIGT
JA
ANTWORTEN
24
ZUGRIFFE
872
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Hallo,

    ich habe mich inzwischen in die IPN von PayPal eingearbeitet und stehe derzeit vor folgendem Problem:

    Das Script funktioniert einwandfrei. Sobald ich von der Sandbox auf "echt"-Modus umschalte funktioniert das Script nicht mehr.


    Im Script ändert sich nur folgendes, wenn ich den "Test-Mode" auf "false" stelle:

    Config
    PHP-Code:
    $test_mode true

    Weiterleitung
    PHP-Code:

    $var
    "cmd=_xclick&business=" urlencode($ppemail) . "&no_shipping=0&no_note=1";
    ........
    ........
    ........

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

    ........
    ........
    ........ 
    IPN
    PHP-Code:
    ........
    ........
    ........

    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 (
    strcmp ($res'VERIFIED') == 0) {
        
    mail($_POST['payer_email'], "Test""Text...""From: Test User <test@example.com>");
    }

    ........
    ........
    ........ 

    Hat jemand eine Idee an was das liegen könnte?

    Gruß proloser
    Geändert von proloser (07.06.11 um 19:31 Uhr)
     

  2. #2
    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
    Was bedeutet "Funktioniert nicht mehr"? Kommt eine weiße Seite, geht die Zahlung nicht, geht die Weiterleitung nicht? Sorry, meine Glaskugel ist alles andere als in der Lage dein Problem vorherzusagen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Die Zahlung läuft bei $test_mode => True genau gleich ab wie bei $test_mode => False.

    Der einzige Unterschied ist, damit bei $test_mode => False, der Teil in "VERIFIED" nicht ausgeführt wird. Es wird also keine Mail versendet.
    Geändert von proloser (07.06.11 um 20:58 Uhr)
     

  4. #4
    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
    Und wo genau wird $res mit Werten versorgt? Was steht in $res denn drin? Bau mal ein paar Loggings ein. Diese Klasse hilft die dabei. Du kannst es natürlich auch mittels trigger_error() oder einfachen echos machen.

    Außerdem:

    Code php:
    1
    2
    3
    
    /* Entwicklermodus: Muss in die ersten Zeilen des Scripts um möchlichst alle Fehler aufzuzeigen. */
    error_reporting( E_ALL | E_STRICT );
    ini_set('display_errors', 1);
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Das Problem ist, damit ich das selbst nicht testen kann, weil ich nur ein PayPal-Account habe.

    Mit dem Sandbox-Account funktioniert alles einwandfrei.


    Da ich bei der "Sofortige Zahlungsbestätigung (IPN)" -> Option 2 verwende...

    "Geben Sie die Adresse des Skriptes zur Auswertung der Sofortige Zahlungsbestätigung (IPN) in der Variablen notify_url bei den entsprechenden Transaktionstypen an. Wenn Sie auf diese Weise die Adresse des Skriptes übergeben, wird diese statt der in Ihrem Profil hinterlegten Adresse verwendet."

    ... muss ich meiner Meinug nach auch keine weiteren Einstellungen im PayPal-Account vornehmen.


    Ich Frag mich, für was PayPal eine Testumgebung hat, wenn diese nicht mit der "echten" übereinstimmt!?


    Gruß Markus
    Geändert von proloser (08.06.11 um 21:57 Uhr)
     

  6. #6
    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
    Du hast die Fragen nicht beantwortet. Wo wird $res befüllt? Was steht da drin?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #7
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    $res wird mit "$res = fgets ($fp, 1024);" befüllt.
     

  8. #8
    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
    Und was steht da drin? Eigentlich sollte laut Dokumentation in etwa so was drin stehen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    TIMESTAMP=2007%2d04%2d04T03%3a35%3a10Z&
    CORRELATIONID=a7cbf2d4d83dc&
    ACK=Failure&
    L_ERRORCODE0=10555&
    L_SHORTMESSAGE0=Filter%20Decline&
    L_LONGMESSAGE0=This%20transaction%20cannot%20be%20processed%2e&
    L_SEVERITYCODE0=Error&
    L_ERRORCODE1=10755&
    L_SHORTMESSAGE1=Unsupported%20Currency%2e&
    L_LONGMESSAGE1=This%20transaction%20cannot%20be%20processed%20due%20to%20an
    %20unsupported%20currency%2e&
    L_SEVERITYCODE1=Error&
    VERSION=2%2e400000&
    BUILD=1%2e0006
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  9. #9
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Wie kann ich das auslesen? Muss ich dazu jemand finden der mir eine echte Transaktion durchführt, oder?
     

  10. #10
    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
    Ich hab dir bereits 3 Möglichkeiten genannt. Entweder, du machst es per Logger-Klasse oder du benutzt trigger_error(). Und ja, dafür musst du eine Transaktion durchführen. Kannst ja einen Cent-Betrag benutzen.

    Du kannst es ja auch in der Sandbox mal loggen, was da eigentlich ankommt. Werden sonst irgendwelche Operationen mit $res gemacht außer das es auf "VERIFIED" geprüft wird? Vermutlich kommt aber eher sowas wie oben, also ein FAILURE.

    Du sollest es eigentlich so implementieren:

    Code php:
    1
    2
    3
    
    parse_str($res, $response_vars);
    trigger_error("Error code was " . $response['L_ERRORCODE1']);
    trigger_error("Error message was " . $response['L_LONGMESSAGE1']);

    Dann schaust du in das Error.log des Apachen.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #11
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Ich hab den Code eingefügt aber kann die Error.log auf meinem Server nicht finden.
     

  12. #12
    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
    Wenn es sich um ein Linux-System handelt, dann versuch mal den Befehl locate:

    Code bash:
    1
    
    $ locate error.log

    Ansonsten liegen die Logs in der Regel in /var/log, häufig ist dort ein Ordner apache oder httpd zu finden. Da liegen die normalerweise drin.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  13. #13
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Es handelt sich um ein Linux-System. Wo soll ich den Befehl einfügen?


    Ich habe folgende Ordner und Dateien:

    backup
    files
    html
    log
    phptmp
    quota.log


    Im "log"-Ordner befinden sich nur:

    access_log
    access_log.1
    access_log.2.gz
    access_log.3.gz
    ....
    ....
    access_log.52.gz
     

  14. #14
    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
    Hast du keinen Shell-Zugriff? Wenn du die error.log nicht finden kannst, bleibt noch die Logger-Klasse. Lade sie auf deinen Webspace hoch, füge ein

    Code php:
    1
    
    include 'Logger.php';

    Dann kannst du in die Datei app.log schreiben lassen:

    Code php:
    1
    
    Logger::log("Fehlercodes usw... Zeichenketten halt");
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    proloser proloser ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    479
    Keine Ahnung wie ich das einbinde, damit ich nützliche Informationen mitlogge.

    Logger::log( $res ) => 20110609-22:18:12 VERIFIED
     

Ä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