Jump to content
Larry Ullman's Book Forums

Thomas

Members
  • Posts

    6
  • Joined

  • Last visited

Posts posted by Thomas

  1. Thankyou very much Larry for the reply and guidance. I did try the lowercase and stricmp, but it did not work. I did find a solution though and the reason for the problem. I could not have done it without your help and support! THANKS V. MUCH!

    Problem:

    Now Paypal IPN sends back VERIFIED but with numbers before and after

    Solution:

      Change the function :
    if (strcmp ($res, "VERIFIED") == 0) {

    To

    if (strpos($res,'VERIFIED') !== false) {
  2. Hi Larry:

    Thankyou very much for making the time to look into my log file. I did what you suggested and figured out the problem. If I remove the following 'if' condition, everything works fine.

    if (strcmp ($res, "VERIFIED") == 0)

    Any suggestions as to how I can still use this 'if' condition and keep everything working? Could this be because of the new headers now required by paypal:

        $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";
        $header .= "Connection: Close\r\n";
        $header .= "Host: www.sandbox.paypal.com\r\n\r\n";

    Thankyou once again for your help and support.

  3. Hi Larry,

    Thank you very much for your time. I have got the ipn script working, but it is not making any changes to the database. I have checked everything but don't seem to find the problem. I am stuck badly. Could you please have a look at the log file and my ipn script. Sorry to bother you, but I have tried everything I could...

    Here is my script:

    <?php

    // This page handles the Instant Payment Notification communications with PayPal.
    // Most of the code comes from PayPal's documentation.
    // This script is created in Chapter 6.
    // This is a modified version of ipn.php that logs all transactions to a text file.

    // Require the configuration before any PHP code as the configuration controls error reporting:
    require ('./includes/config.inc.php');
    // The config file also starts the session.

    // Open the text file:
    // Change this path to make it accurate.
    // The text file must be writable by PHP!
    $file = fopen('../ipn.txt', 'a');

    // Write the POST data to the file:
    fwrite($file, "Received:\n");
    fwrite($file, print_r($_POST, true));
    fwrite($file, "\n");

    // Start by creating a request variable:
    $req = 'cmd=_notify-validate';

    // Add each received key=value pair to the request:
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }

    // Open a socket connection to PayPal:
    $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // Test
    //$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); // Live

    if (!$fp) { // If we couldn't connect, send an email:

        trigger_error('Could not connect for the IPN!');
        
    } else { // Send the request to PayPal:
        
    $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";
        $header .= "Connection: Close\r\n";
        $header .= "Host: www.sandbox.paypal.com\r\n\r\n";

    fputs ($fp, $header . $req);

        // Write the PayPal request to the text file:
        fwrite($file, "Sent:\n");
        fwrite($file, "$header\n");
        fwrite($file, "$req\n");
        
        // Read in the response:
        while (!feof($fp)) {

            $res = fgets ($fp, 1024);

            // Write the PayPal response to the text file:
            fwrite($file, "Received:\n");
            fwrite($file, "$res\n");

            if (strcmp ($res, "VERIFIED") == 0) {
                
                // Check for the right values:
                if ( ($_POST['payment_status'] == 'Completed')
                 && ($_POST['receiver_email'] == 'businesstype2@account.com')
                 && ($_POST['mc_gross'] == 2.00)
                 && ($_POST['mc_currency']  == 'USD')
                 && (!empty($_POST['txn_id']))
                ) {
                    
                    // Need the database connection now:
                    require(MYSQL);
                    
                    // Check for this transaction in the database:
                    $txn_id = mysqli_real_escape_string($dbc, $_POST['txn_id']);                
                    $q = "SELECT id FROM orders WHERE transaction_id='$txn_id'";
                    $r = mysqli_query ($dbc, $q);
                    if (mysqli_num_rows($r) == 0) { // Add this new transaction:
                        
                        $uid = (int) $_POST['custom'];
                        $status = mysqli_real_escape_string($dbc, $_POST['payment_status']);
                        $amount = (float) $_POST['mc_gross'];
                        $q = "INSERT INTO orders (user_id, transaction_id, payment_status, payment_amount) VALUES ($uid, '$txn_id', '$status', $amount)";
                        $r = mysqli_query ($dbc, $q);
                        if (mysqli_affected_rows($dbc) == 1) {
                            
                            // Update the users table:
                            $q = "UPDATE users SET date_expires = IF(date_expires > NOW(), ADDDATE(date_expires, INTERVAL 1 YEAR), ADDDATE(NOW(), INTERVAL 1 YEAR)), date_modified=NOW() WHERE id=$uid";
                            $r = mysqli_query ($dbc, $q);
                            if (mysqli_affected_rows($dbc) != 1) {
                                trigger_error('The user\'s expiration date could not be updated!');
                            }
                            
                        } else { // Problem inserting the order!
                            trigger_error('The transaction could not be stored in the orders table!');                        
                        }
                        
                    } // The order has already been stored!
                    
                } // The right values don't exist in $_POST!

            } elseif (strcmp ($res, "INVALID") == 0) {
                // log for manual investigation
            }

        } // End of the WHILE loop.
        
        // Close the connection:
        fclose ($fp);

    } // End of $fp IF-ELSE.

    // Inidicate the end of this transaction in the text file:
    fwrite($file, "--------------\n");
    fclose($file);

    ?>

     

    Here is the log file:

    Received:
    Array
    (
        [mc_gross] => 2.00
        [protection_eligibility] => Eligible
        [payer_id] => LUR52HDDC9QQJ
        [payment_date] => 23:28:28 Nov 04, 2018 PST
        [payment_status] => Completed
        [charset] => windows-1252
        [first_name] => ds
        [option_selection1] => Option 1
        [mc_fee] => 0.36
        [notify_version] => 3.9
        [subscr_id] => I-KHYJ5W4T4WYA
        [custom] => 7
        [payer_status] => verified
        [business] => businesstype2@account.com
        [verify_sign] => AFbtoae17G1snrl8ZQGTOr-6vaYpAOeYDYDiQ1jZwHau1ZceykLAeEqO
        [payer_email] => personaltype@account.com
        [option_name1] => payment options
        [txn_id] => 3MU76381Y5303693J
        [payment_type] => instant
        [btn_id] => 3917566
        [last_name] => dsa
        [receiver_email] => businesstype2@account.com
        [payment_fee] => 0.36
        [receiver_id] => JK68KZ5US2C44
        [txn_type] => subscr_payment
        [item_name] => subscribe1
        [mc_currency] => USD
        [item_number] => 1
        [residence_country] => US
        [test_ipn] => 1
        [transaction_subject] => subscribe1
        [payment_gross] => 2.00
        [ipn_track_id] => 2b0519bf904c2
    )

    Received:
    Array
    (
        [txn_type] => subscr_signup
        [subscr_id] => I-KHYJ5W4T4WYA
        [last_name] => dsa
        [option_selection1] => Option 1
        [residence_country] => US
        [mc_currency] => USD
        [item_name] => subscribe1
        [business] => businesstype2@account.com
        [amount3] => 2.00
        [recurring] => 1
        [verify_sign] => ANc79cx0nOjtjRmd1K0rzvpG.GGCAd5QwZfHVcr7UGVgJ-zLIoUB6vug
        [payer_status] => verified
        [test_ipn] => 1
        [payer_email] => personaltype@account.com
        [first_name] => ds
        [receiver_email] => businesstype2@account.com
        [payer_id] => LUR52HDDC9QQJ
        [option_name1] => payment options
        [reattempt] => 1
        [item_number] => 1
        [subscr_date] => 23:28:24 Nov 04, 2018 PST
        [btn_id] => 3917566
        [custom] => 7
        [charset] => windows-1252
        [notify_version] => 3.9
        [period3] => 1 W
        [mc_amount3] => 2.00
        [ipn_track_id] => 2b0519bf904c2
    )

    Sent:
    POST /cgi-bin/webscr HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 827
    Connection: Close
    Host: www.sandbox.paypal.com


    cmd=_notify-validate&mc_gross=2.00&protection_eligibility=Eligible&payer_id=LUR52HDDC9QQJ&payment_date=23%3A28%3A28+Nov+04%2C+2018+PST&payment_status=Completed&charset=windows-1252&first_name=ds&option_selection1=Option+1&mc_fee=0.36&notify_version=3.9&subscr_id=I-KHYJ5W4T4WYA&custom=7&payer_status=verified&business=businesstype2%40account.com&verify_sign=AFbtoae17G1snrl8ZQGTOr-6vaYpAOeYDYDiQ1jZwHau1ZceykLAeEqO&payer_email=personaltype%40account.com&option_name1=payment+options&txn_id=3MU76381Y5303693J&payment_type=instant&btn_id=3917566&last_name=dsa&receiver_email=businesstype2%40account.com&payment_fee=0.36&receiver_id=JK68KZ5US2C44&txn_type=subscr_payment&item_name=subscribe1&mc_currency=USD&item_number=1&residence_country=US&test_ipn=1&transaction_subject=subscribe1&payment_gross=2.00&ipn_track_id=2b0519bf904c2
    Sent:
    POST /cgi-bin/webscr HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 668
    Connection: Close
    Host: www.sandbox.paypal.com


    cmd=_notify-validate&txn_type=subscr_signup&subscr_id=I-KHYJ5W4T4WYA&last_name=dsa&option_selection1=Option+1&residence_country=US&mc_currency=USD&item_name=subscribe1&business=businesstype2%40account.com&amount3=2.00&recurring=1&verify_sign=ANc79cx0nOjtjRmd1K0rzvpG.GGCAd5QwZfHVcr7UGVgJ-zLIoUB6vug&payer_status=verified&test_ipn=1&payer_email=personaltype%40account.com&first_name=ds&receiver_email=businesstype2%40account.com&payer_id=LUR52HDDC9QQJ&option_name1=payment+options&reattempt=1&item_number=1&subscr_date=23%3A28%3A24+Nov+04%2C+2018+PST&btn_id=3917566&custom=7&charset=windows-1252&notify_version=3.9&period3=1+W&mc_amount3=2.00&ipn_track_id=2b0519bf904c2
    Received:
    HTTP/1.1 200 OK

    Received:
    Date: Mon, 05 Nov 2018 07:29:08 GMT

    Received:
    Server: Apache

    Received:
    X-Frame-Options: SAMEORIGIN

    Received:
    Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=LO3tJK_vhQ0urAXMiTFbbKU5jsfIrhLsApihIGzPgnV-A7XGCS0ndcdsAZOIBFS9ttES675E7f3itp-vWWm87R8ACF9iwFC3ac8wvO0xtFw038VeOZAARcGEuy48j34EuAx0taCviJPKB91QOfjMxdk5U_NPv3Begcop2P8RSuwC39LpsO1bvpm-4EeqxoJ6KIgCfoB1D7kmhCsOpkgIlJbc26VLB256Z0HxCYPM13RswxXTNT_CHgchEnK3eI6nwKisr_BRgIytBRAoSSY0x8KLTmbTLdMtV649FRz_42-aLYuy7MZNk-kiwawytSquHbUmz8uJS_s1S10LtDCj31kOsvFWYZc5lZA2o692Y96s-4fz5B6FJNr6rWGzy0aA7q9VLXAk75NLVW9tdtA59EiIoVEqQLaOe0g1aPI6BF0rfH1yhA22CXnN0lS; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: cookie_check=yes; expires=Thu, 02-Nov-2028 07:29:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: navlns=0.0; expires=Wed, 04-Nov-2020 07:29:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: Apache=10.72.108.11.1541402948045743; path=/; expires=Wed, 28-Oct-48 07:29:08 GMT

    Received:
    Vary: Accept-Encoding,User-Agent

    Received:
    Connection: close

    Received:
    HTTP_X_PP_AZ_LOCATOR: sandbox.slc

    Received:
    Paypal-Debug-Id: 2964235d617f

    Received:
    Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D1880%26app%3Dappdispatcher%26TIME%3D1156702043%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Mon, 05 Nov 2018 07:59:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT

    Received:
    Transfer-Encoding: chunked

    Received:
    Content-Type: text/html; charset=UTF-8

    Received:
    Strict-Transport-Security: max-age=63072000

    Received:


    Received:
    8

    Received:
    VERIFIED

    Received:
    0

    Received:


    --------------
    Received:
    HTTP/1.1 200 OK

    Received:
    Date: Mon, 05 Nov 2018 07:29:08 GMT

    Received:
    Server: Apache

    Received:
    X-Frame-Options: SAMEORIGIN

    Received:
    Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=_9eNJYJ52VW6CeqJZ11MjiesH2txcMDfRML1eFI1xDnK5QjmyplQ-2LiFAwG7GgQ_NRyyNmZEi31xRWVCqHdMZLQA2PhW44bRLUQij-lP268JWCW9QIwmSlnhoCWP2xp3G58fjdj1VPIiGN-QWaNoyM_knolxEFhe8RSjfYJc4Tb1PXHy4QOoT1jyHOLJ3iBb804MloM9AohgxK3Ggfhi9ls2sh_ILHLZmW13-eWW_hqkmN0qGJadk84g7gIn6EfzoA0NwxFn5ioAzrtYAJIA9MR7yPnDN_EyqzFAD-ZwpGDwJ_vNNOH4dNHzs_fFocoH6jA14EGq3ZLAsX1Op_NkyQG5zi3OJdXh6vzMHRegbxPiZjcuViwSmzQFwX7cbh2zhJ73JLqTfXEwzKxmM8fatUJ6VtIAa1TyAPGQBiXqyY8_4FVyzZKw6_tdom; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: cookie_check=yes; expires=Thu, 02-Nov-2028 07:29:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: navlns=0.0; expires=Wed, 04-Nov-2020 07:29:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: Apache=10.72.108.11.1541402948042463; path=/; expires=Wed, 28-Oct-48 07:29:08 GMT

    Received:
    Vary: Accept-Encoding,User-Agent

    Received:
    Connection: close

    Received:
    HTTP_X_PP_AZ_LOCATOR: sandbox.slc

    Received:
    Paypal-Debug-Id: fd4abe3c73e5

    Received:
    Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D1880%26app%3Dappdispatcher%26TIME%3D1156702043%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Mon, 05 Nov 2018 07:59:08 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

    Received:
    Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT

    Received:
    Transfer-Encoding: chunked

    Received:
    Content-Type: text/html; charset=UTF-8

    Received:
    Strict-Transport-Security: max-age=63072000

    Received:


    Received:
    8

    Received:
    VERIFIED

    Received:
    0

    Received:


    --------------


     

  4. On 8/26/2012 at 6:53 PM, Sean Powers said:

    Hi Larry and all, it's me again. I have a problem getting the IPN script to work properly. The IPN request is sent successfully, but the ipn.php script doesn't seem to be updating the database. I've checked my code against the one provided on this site, but I don't seem to be finding anything wrong with mine. Wrote in the function that logs IPN requests, and interestingly it reports back a HTTP 400 error code. Is there something I've missed or done wrong? Or could it be an issue with my host? Thanks for any help offered!

     

    <?php # Script 1.22 - ipn.php

     

    // Include the configuration file:

    require ('includes/config.inc.php');

     

    // Open the text file:

    // Change this path to make it accurate.

    // The text file must be writable by PHP!

    $file = fopen('../../ipn.txt', 'a');

     

    // Write the POST data to the file:

    fwrite($file, "Received:\n");

    fwrite($file, print_r($_POST, true));

    fwrite($file, "\n");

     

    // Create a request variable:

    $req = 'cmd=_notify-validate';

     

    // Add each received key=value pair to the request:

    foreach ($_POST as $key => $value){

    $value = urlencode(stripslashes($value));

    $req .= "&$key=$value";

    }

     

    // Open a socket connection to PayPal:

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

     

    // If no connection was made, trigger an error:

    if (!$fp){

    trigger_error('Could not connect to the IPN!');

     

    // If a connection was made, send the request to PayPal:

    } else {

    $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";

    fputs($fp, $header . $req);

     

    // Write the PayPal request to the text file:

    fwrite($file, "Sent:\n");

    fwrite($file, "$header\n");

    fwrite($file, "$req\n");

     

    // Read in the response:

    while (!feof($fp)){

    $res = fgets($fp, 1024);

     

    // Write the PayPal response to the text file:

    fwrite($file, "Received:\n");

    fwrite($file, "$res\n");

     

    // If the response equals VERIFIED, process the response:

    if (strcmp($res, "VERIFIED") == 0){

     

    // Check for the right values:

    if (isset($_POST['payment_status'])

    && ($_POST['payment_status'] == 'Completed')

    && ($_POST['receiver_email'] == 'seanpw_1345583968_biz@eternalrain.org')

    && ($_POST['mc_gross'] == 10.00)

    && ($_POST['mc_currency'] == 'USD')

    && (!empty($_POST['txn_id']))

    ){

     

    // Check for this transaction in the database:

    require (MYSQL);

    $txn_id = mysqli_real_escape_string($dbc, $_POST['txn_id']);

    $q = "SELECT id FROM t_orders WHERE transaction_id='$txn_id'";

    $r = mysqli_query($dbc, $q);

     

    if (mysqli_num_rows($r) == 0){

     

    // Add this transaction to the t_orders table:

    $uid = (isset($_POST['custom'])) ? (int) $_POST['custom'] : 0;

    $status = mysqli_real_escape_string($dbc, $_POST['payment_status']);

    $amount = (float) $_POST['mc_gross'];

    $q = "INSERT INTO t_orders (user_id, transaction_id, payment_status, payment_amount) VALUES ($uid, '$txn_id', '$status', $amount)";

    $r = mysqli_query($dbc, $q);

     

    if (mysqli_affected_rows($dbc) == 1){

     

    // Update the users table:

    if ($uid > 0){

    $q = "UPDATE t_users SET date_expires = IF(date_expires > NOW(), ADDDATE(date_expires, INTERVAL 1 YEAR), ADDDATE(NOW(), INTERVAL 1 YEAR)), date_modified=NOW() WHERE id=$uid";

    $r = mysqli_query($dbc, $q);

    if (mysqli_affected_rows($dbc) != 1){

    trigger_error('The user\'s expiration date could not be updated!');

    }

    }

     

    // Complete several conditionals:

    } else { // Problem inserting the order!

    trigger_error('The transaction could not be stored in the orders table!');

    }

    } // The order has already been stored!

    }// The right values don't exist in $_POST[

     

    // If the PayPal response is INVALID, log the request:

    } elseif (strcmp ($res, "INVALID") == 0){

    // log for manual investigation

    }

     

    // Complete the remaining control structures and close the socket connection:

    } // End of the WHILE loop.

    fclose ($fp);

    } // End of $fp IF-ELSE.

     

    // Inidicate the end of this transaction in the text file:

    fwrite($file, "--------------\n");

    fclose($file);

     

    // Complete the script.

    ?>

     

    ---

     

    ipn.txt:

     

    Received:

    Array

    (

    [transaction_subject] => Knowledge is Power Membership

    [txn_type] => subscr_payment

    [payment_date] => 18:38:13 Aug 26, 2012 PDT

    [subscr_id] => I-698HUCWVWPU0

    [last_name] => Powers

    [residence_country] => GB

    [pending_reason] => multi_currency

    [item_name] => Knowledge is Power Membership

    [payment_gross] => 10.00

    [mc_currency] => USD

    [business] => seanpw_1345583968_biz@eternalrain.org

    [payment_type] => instant

    [protection_eligibility] => Ineligible

    [verify_sign] => AUaxvSojqajxsiGA9qXfGuCulUctAEX2qAJoWZfhz7EUoXGd1UqkrFNf

    [payer_status] => verified

    [test_ipn] => 1

    [payer_email] => smaug1_1345584245_per@eternalrain.org

    [txn_id] => 85784420FY7236456

    [receiver_email] => seanpw_1345583968_biz@eternalrain.org

    [first_name] => Sean

    [payer_id] => LBG3RR7LYFWJ2

    [receiver_id] => AANK57TL69S8S

    [payment_status] => Pending

    [mc_gross] => 10.00

    [custom] => 14

    [charset] => windows-1252

    [notify_version] => 3.5

    [ipn_track_id] => bee2c1c0e1432

    )

     

    Received:

    Array

    (

    [txn_type] => subscr_signup

    [subscr_id] => I-698HUCWVWPU0

    [last_name] => Powers

    [residence_country] => GB

    [mc_currency] => USD

    [item_name] => Knowledge is Power Membership

    [business] => seanpw_1345583968_biz@eternalrain.org

    [amount3] => 10.00

    [recurring] => 1

    [verify_sign] => AjxZJebk9lejPEV2ML23J4WJKG23AngBmkinZM784XPHRkdshPFK029t

    [payer_status] => verified

    [test_ipn] => 1

    [payer_email] => smaug1_1345584245_per@eternalrain.org

    [first_name] => Sean

    [receiver_email] => seanpw_1345583968_biz@eternalrain.org

    [payer_id] => LBG3RR7LYFWJ2

    [reattempt] => 1

    [subscr_date] => 18:38:08 Aug 26, 2012 PDT

    [btn_id] => 2578773

    [custom] => 14

    [charset] => windows-1252

    [notify_version] => 3.5

    [period3] => 1 Y

    [mc_amount3] => 10.00

    [ipn_track_id] => bee2c1c0e1432

    )

     

    Sent:

    POST /cgi-bin/webscr HTTP/1.0

    Content-Type: application/x-www-form-urlencoded

    Content-Length: 826

     

     

    cmd=_notify-validate&transaction_subject=Knowledge+is+Power+Membership&txn_type=subscr_payment&payment_date=18%3A38%3A13+Aug+26%2C+2012+PDT&subscr_id=I-698HUCWVWPU0&last_name=Powers&residence_country=GB&pending_reason=multi_currency&item_name=Knowledge+is+Power+Membership&payment_gross=10.00&mc_currency=USD&business=seanpw_1345583968_biz%40eternalrain.org&payment_type=instant&protection_eligibility=Ineligible&verify_sign=AUaxvSojqajxsiGA9qXfGuCulUctAEX2qAJoWZfhz7EUoXGd1UqkrFNf&payer_status=verified&test_ipn=1&payer_email=smaug1_1345584245_per%40eternalrain.org&txn_id=85784420FY7236456&receiver_email=seanpw_1345583968_biz%40eternalrain.org&first_name=Sean&payer_id=LBG3RR7LYFWJ2&receiver_id=AANK57TL69S8S&payment_status=Pending&mc_gross=10.00&custom=14&charset=windows-1252&notify_version=3.5&ipn_track_id=bee2c1c0e1432

    Received:

    HTTP/1.0 400 Bad Request

     

    Received:

    Server: BigIP

     

    Received:

    Connection: close

     

    Received:

    Content-Length: 19

     

    Received:

     

     

    Received:

    Invalid Host header

    --------------

    Sent:

    POST /cgi-bin/webscr HTTP/1.0

    Content-Type: application/x-www-form-urlencoded

    Content-Length: 662

     

     

    cmd=_notify-validate&txn_type=subscr_signup&subscr_id=I-698HUCWVWPU0&last_name=Powers&residence_country=GB&mc_currency=USD&item_name=Knowledge+is+Power+Membership&business=seanpw_1345583968_biz%40eternalrain.org&amount3=10.00&recurring=1&verify_sign=AjxZJebk9lejPEV2ML23J4WJKG23AngBmkinZM784XPHRkdshPFK029t&payer_status=verified&test_ipn=1&payer_email=smaug1_1345584245_per%40eternalrain.org&first_name=Sean&receiver_email=seanpw_1345583968_biz%40eternalrain.org&payer_id=LBG3RR7LYFWJ2&reattempt=1&subscr_date=18%3A38%3A08+Aug+26%2C+2012+PDT&btn_id=2578773&custom=14&charset=windows-1252&notify_version=3.5&period3=1+Y&mc_amount3=10.00&ipn_track_id=bee2c1c0e1432

    Received:

    HTTP/1.0 400 Bad Request

     

    Received:

    Server: BigIP

     

    Received:

    Connection: close

     

    Received:

    Content-Length: 19

     

    Received:

     

     

    Received:

    Invalid Host header

    --------------

    Hi:
    I got the same error, but the solution that worked for you is not working anymore because Paypal has phased out HTTP/1.0 . So I am getting no response with the solution you have provided. Paypal now a completely different script which is very different from the one used in your example. I have tried everything but its not working. Could someone please update the ipn script (the ipn_log.php file) in the example so that the example is still usable.
     
    Thanks
    Thomas
  5. Hi Larry:
    I am using your book "Effortless E-commerce with php and mysql 2nd edition" to create a subscription website. When using your example 1 scripts, everything worked fine except that the database was not updating. The log was showing a 400 - Bad request error.The reason I found in one of your forums was a change in paypal's IPN script requirements, however the solution mentioned there is no more valid as paypal has made further changes to the scripts. It is now a completely different script which is very different from the one used in your example. I have tried everything but its not working. Could you please update the ipn script (the ipn_log.php file) in your example so that your example is still usable.
     
    Also would it be possible for you to send me a copy of the updated script by e-mail or a link to the updated script.
     
    I like all your books and commend you on your presentation style, especially the fact that you make extremely complicated things so simple.
     
    Thanks, and waiting for your reply
    Thomas
×
×
  • Create New...