2017-09-02 3 views
0

Wenn ein IPN als abgeschlossen verifiziert wird, setzt mein Code die txn_id in eine Datenbank, aber es wird nicht gesetzt.Alle anderen PayPal-Variablen, die ich verwende, sind gesetzt, aber dieser ist . nicht brauche ich eine Möglichkeit, die Transaktion eindeutig Identität ist also, warum ich diese Variable verwende, hier ist mein Code, dass ich die id greifen verwenden:PayPal IPN Beitrag Variable '' txn_id 'wird nicht gesetzt

$txn_id = $_POST['txn_id']; 

I PayPal-Liste von Variablen und txn_id geprüft auf aufgeführt wird dort aber ich empfange nichts/es ist nicht festgelegt

Die Zahlung ist keine Abonnementzahlung, es ist nur eine normale einmalige Kaufzahlung.

Antwort

0

Wie/wo erhalten Sie die Daten? Zeigt uns dein HTML.

Ich hatte kürzlich Schwierigkeiten, POST-Daten von PayPal zu erhalten. Die IPN.php funktioniert jedoch weiterhin. Sie können ein Debugging auf Ihrer IPN/Return-Seite durchführen.

Fügen Sie diese zu Ihrer PayPal-Datei hinzu, um genau zu sehen, was Sie erhalten. Wenn der POST-Abschnitt leer ist, ist das Ihr Problem, und Sie müssen möglicherweise stattdessen mit GET-Daten arbeiten. Dump

Option 1) erhielt alles in eine Datei

    function test_file_dump2($msg) { 
         $filename = dirname(__FILE__).'-IPN-dump.log'; 
         $f = fopen($filename, 'a'); 
         fwrite($f, var_export($msg, true) . "\n"); 
         fclose($f); 
        } 
        test_file_dump2($_POST); 
        test_file_dump2($_GET); 

Option 2) Melden Sie alle Fehler in diesem Verzeichnis

     ini_set('error_reporting', E_ALL); // everything. Change to E_ALL & ~E_NOTICE); to remove notices 
         error_reporting(E_ALL); 
         ini_set('html_errors',TRUE); 
         ini_set('log_errors', TRUE); 
         ini_set('display_errors',TRUE); 
         ini_set('error_log', dirname(__FILE__) . '/-errors-ipn.log'); 

Option 3), wenn in success.php oder eine Seite können Sie siehe

 echo "<pre> GET contents<br><br>"; print_r($_GET); echo "</pre>"; 
     echo "<pre> POST contents<br><br>"; print_r($_POST); echo "</pre>";