PayPal IPN后置变量''txn_id“未设置

时间:2017-09-02 14:58:54

标签: php paypal paypal-ipn

当IPN被验证为已完成时,我的代码将txn_id放入数据库但未设置。我正在使用的所有其他PayPal变量都已设置,但这不是。我需要一种方法来唯一地标识事务,这就是我使用该变量的原因,这是我用来获取id的代码:

$txn_id = $_POST['txn_id'];

我检查了PayPal的变量列表,并在那里列出了txn_id,但我没有收到任何/它没有设置。

付款不是订阅付款,只是正常的一次性购买付款。

1 个答案:

答案 0 :(得分:0)

您收到数据的方式/地点?向我们展示您的HTML。

我最近在从PayPal接收POST数据时遇到了麻烦。但是,IPN.php仍然有效。您可以在IPN /返回页面上进行一些调试。

将此添加到您的PayPal文件中,以确切了解您收到的内容。如果POST部分为空,那将是您的问题,您可能需要使用GET数据。

选项1)将收到的所有内容转储到文件中

                    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); 

选项2)将所有错误记录到此目录中

                      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');

选项3)如果在success.php或页面中你可以看到

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