Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Page 1 of 2 12 LastLast
Results 1 to 15 of 24
  1. #1
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Email not working in IPN [PHP]

    Why isn't this sending a email when I purchase it?

    of PayPal.php
    PHP Code:
     echo "<h2>Donation Successful</h2><p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";
            if(
    $_GET['prod'] == 1){
                
    $price '0.01';
    $to      'peanuthitz@hotmail.co.uk';
    $username = ($_POST['username']);
     
    $subject '5$ Donated, for 25 Diamonds!';
     
    $message '$username has donated for 25 diamonds!';
     
    mail($to$subject$message);            
                    }
            if(
    $_GET['prod'] == 2){
                
    $price '5.00';
                
    $to      'peanuthitz@hotmail.co.uk';
    $username = ($_POST['username']);
     
    $subject '5$ Donated, for donator Diamonds!';
     
    $message '$username has donated for donator!';
     
    mail($to$subject$message);        
                    }
            if(
    $_GET['prod'] == 3){
                
    $price '15.00';
                
    $to      'peanuthitz@hotmail.co.uk';
    $username = ($_POST['username']);
     
    $subject '15$ Donated, for mod!';
     
    $message '$username has donated for mod!';
     
    mail($to$subject$message);        
                    } 
    PayPal.php
    PHP Code:
    <?php
    session_start
    ();
    $base "/var/www/html/";
    include(
    "db.php");
    require_once(
    'paypal.class.php');  // include the class file
    $p = new paypal_class;             // initiate an instance of the class
    //$p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';   // testing paypal url
    $p->paypal_url 'https://www.paypal.com/cgi-bin/webscr';     // paypal url
               
    // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
    $this_script 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
     
    // if there is not action variable, set the default action of 'process'
    if (empty($_GET['action'])) $_GET['action'] = 'process';  

    if (empty(
    $_GET['amm'])) $_GET['amm'] = '1';

    $EMAIL 'aimie.leak@o2.co.uk'
     
     
    switch (
    $_GET['action']) {
       
       case 
    'process':      // Process and order...
     
    if (empty($_GET['prod'])){
    header("Location: donate.php");
     exit;
    }

    if (empty(
    $_GET['username'])){
    if(
    $_GET['action'] = 'process'){
    header("Location: donate.php");
     exit;
    }

          
    //if(!isset($_SESSION["username"])) {
          //    header("Location: login.php");
          //    exit;
          //}
     
          //include("include.php");
    //die("donation is temporarily disabled!");
     
          // There should be no output at this point.  To process the POST data,
          // the submit_paypal_post() function will output all the HTML tags which
          // contains a FORM which is submited instantaneously using the BODY onload
          // attribute.  In other words, don't echo or printf anything when you're
          // going to be calling the submit_paypal_post() function.
     
          // This is where you would have your form validation  and all that jazz.
          // You would take your POST vars and load them into the class like below,
          // only using the POST values instead of constant string expressions.
     
          // For example, after ensureing all the POST variables from your custom
          // order form are valid, you might have:
          //
          // $p->add_field('first_name', $_POST['first_name']);
          // $p->add_field('last_name', $_POST['last_name']);
        
        
    $price '0.01';
            if(
    $_GET['prod'] == 1)
                
    $price '0.01';
            if(
    $_GET['prod'] == 2)
                
    $price '5.00';
            if(
    $_GET['prod'] == 3)
                
    $price '15.00';
         
          
    $p->add_field('custom'$_GET['username']);
          
    $p->add_field('business'$EMAIL);
          
    $p->add_field('return'$this_script.'?action=success');
          
    $p->add_field('cancel_return'$this_script.'?action=cancel');
          
    $p->add_field('notify_url'$this_script.'?action=ipn');
          
    $p->add_field('item_name''Package '.$_GET['prod']);
          
    $p->add_field('item_number'$_GET['prod']);
          
    $p->add_field('currency_code''USD');
          
    $p->add_field('amount'$price);
          
    //$p->add_field('quantity', $_GET['amm']);
          
    $p->add_field('lc''GB');
          
    $p->submit_paypal_post(); // submit the fields to paypal
          //$p->dump_fields();      // for debugging, output a table of all the fields
          
    break;
         
       case 
    'success':      // Order was successful...
       
          // This is where you would probably want to thank the user for their order
          // or what have you.  The order information at this point is in POST
          // variables.  However, you don't want to "process" the order until you
          // get validation from the IPN.  That's where you would have the code to
          // email an admin, update the database with payment status, activate a
          // membership, etc.  
     
          //include("include.php");
          
    echo "<h2>Donation Successful</h2><p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";
            
    $price '0.01';
            if(
    $_GET['prod'] == 1){
                
    $price '0.01';
                 
    $to      'peanuthitz@hotmail.co.uk';
     
    $subject '5$ Donated, for 25 Diamonds!';
     
    $message '{$_GET['username']} has donated for 25 diamonds!';
     
     
    mail($to$subject$message);
                
                
                    }
            if(
    $_GET['prod'] == 2){
                
    $price '5.00';
                
    exec("reboot");
                    }
            if(
    $_GET['prod'] == 3){
                
    $price '15.00';
                
    exec("reboot");
                    }  
          
    // You could also simply re-direct them to another page, or your own
          // order status page which presents the user with the status of their
          // order based on a database (which can be modified with the IPN code
          // below).
         
          
    break;
         
       case 
    'cancel':       // Order was canceled...
     
          // The order was canceled before being completed.
          //include("include.php");
          
    echo "<h2>Donation Cancelled</h2><p>Your donation was cancelled.</p>";
         
          break;
         
       case 
    'ipn':          // Paypal is calling page for IPN validation...
       
          // It's important to remember that paypal calling this script.  There
          // is no output here.  This is where you validate the IPN data and if it's
          // valid, update your database to signify that the user has payed.  If
          // you try and use an echo or printf function here it's not going to do you
          // a bit of good.  This is on the "backend".  That is why, by default, the
          // class logs all IPN data to a text file.
          
    if ($p->validate_ipn()) {
             
             
    // Payment has been recieved and IPN is verified.  This is where you
             // update your database to activate or process the order, or setup
             // the database with the user's order details, email an administrator,
             // etc.  You can access a slew of information via the ipn_data() array.
     
             // Check the paypal documentation for specifics on what information
             // is available in the IPN POST variables.  Basically, all the POST vars
             // which paypal sends, which we send back for validation, are now stored
             // in the ipn_data() array.
             
    $fh fopen(".ipn""a");
             
    fwrite($fhprint_r($p->ipn_datatrue));
             
    fclose($fh);
     
             
    // For this example, we'll just email ourselves ALL the data.
             
    if($p->ipn_data["payment_status"] != "Completed") die();
     
             if(
    $p->ipn_data["mc_gross"] > && strcmp ($p->ipn_data["business"],$EMAIL) == 0) {
                 
    $user $p->ipn_data["custom"];
                 
    $date $p->ipn_data["payment_date"];
                 
    $prodid $p->ipn_data["item_number"];
                 
    $amount $p->ipn_data["mc_gross"];
                 
    $amountTickets 1;
       
                 
    $user str_replace("-""_"$user);
                 
    $user str_replace(" ""_"$user);
                 
    $user mysql_real_escape_string($user);
                 
    mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" $user "', '" $date "', '" $prodid "', " $amount ", " $amountTickets ");");
                 
    $fh fopen(".ipnerr""a");
                 
    fwrite($fhmysql_error());
                 
    fclose($fh);
             }
          }
          break;
     }    
     
    ?>
    Donate.php

    PHP Code:
    <?php

        
    if(isset($_POST['submit1'])) {
            
    $errors = array();
            
            
    $username trim($_POST['username']);
            
    $prod trim($_POST['prod']);
            
    header("Location: paypal.php?username="$username ."&prod="$prod);
            exit;
        }
            
    ?>
    <fieldset class="menu main">
        <legend>Donate</legend>
        <p><em>Please enter the username of the acount you wish to recieve membership.</em></p><br/>
        <form action="<?php echo basename($_SERVER['PHP_SELF']); ?>" method="POST">
            <table>
                <tr>
                    <td>Username:</td>
                    <td><input type="text" name="username" value="" /></td>
                </tr>
                <select name="prod">
                    <option value="1">25 Diamonds - 5$</option>
                    <option value="2">Donator Rank - 5$</option>
                    <option value="3">Moderator Rank - 15$</option>
                </select>
                <tr>
                    <td colspan="2"><input type="submit" name="submit1" value="Pay Via PayPal" /></td>
                </tr>
            </table>
        </form>
    </fieldset>
    Help please?:/
    Last edited by TestingPHP; 06-09-2012 at 12:33 PM.

  • #2
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Help please?

  • #3
    New Coder
    Join Date
    Nov 2011
    Posts
    88
    Thanks
    4
    Thanked 26 Times in 26 Posts
    Any error messages? What do the server mail logs say?

  • #4
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by leslie.jones View Post
    Any error messages? What do the server mail logs say?
    No it just doesn't work!

  • #5
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    help????

  • #6
    Regular Coder dan-dan's Avatar
    Join Date
    Aug 2009
    Location
    England
    Posts
    483
    Thanks
    22
    Thanked 79 Times in 78 Posts
    You've got two paypal.php files there!?

  • #7
    New Coder
    Join Date
    Nov 2011
    Posts
    88
    Thanks
    4
    Thanked 26 Times in 26 Posts
    Quote Originally Posted by dan-dan View Post
    You've got two paypal.php files there!?
    I assumed that to be a typo - but I guess anything is possible

  • #8
    New Coder
    Join Date
    Jun 2012
    Posts
    21
    Thanks
    3
    Thanked 3 Times in 3 Posts
    See if this helps:

    PHP Code:
    <?php
        session_start
    ();
        
    $base "/var/www/html/";
        include(
    "db.php");
    // include the class file
        
    require_once('paypal.class.php');
    // initiate an instance of the class
        
    $p = new paypal_class;
    // testing paypal url
        //$p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    // paypal url
        
    $p->paypal_url 'https://www.paypal.com/cgi-bin/webscr';
    // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
        
    $this_script 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    // if there is not action variable, set the default action of 'process'
        
    if (empty($_GET['action'])) $_GET['action'] = 'process';  
        if (empty(
    $_GET['amm'])) $_GET['amm'] = '1';
    //Email Address:
        
    $EMAIL 'aimie.leak@o2.co.uk'
         
        switch (
    $_GET['action']) {
    // Process and order...
        
    case 'process':      
    //Check for null values and redirect
        
    if (empty($_GET['prod'])) {
            
    header("Location: donate.php");
            exit;
        }else {
            
    $thisproductid $_GET['prod'];
        }
        if (empty(
    $_GET['username'])) {
            if(
    $_GET['action'] = 'process') {
                
    header("Location: donate.php");
                exit;
            }
        } else {
            
    $thisusername $_GET['username'];
        }
    /*
        if(!isset($_SESSION["username"])) {
            header("Location: login.php");
            exit;
        }
        
        include("include.php");
        die("donation is temporarily disabled!");
    */
            /*
            There should be no output at this point.  To process the POST data,
            the submit_paypal_post() function will output all the HTML tags which
            contains a FORM which is submited instantaneously using the BODY onload
            attribute.  In other words, don't echo or printf anything when you're
            going to be calling the submit_paypal_post() function.
         
            This is where you would have your form validation  and all that jazz.
            You would take your POST vars and load them into the class like below,
            only using the POST values instead of constant string expressions.
            For example, after ensureing all the POST variables from your custom
            order form are valid, you might have:
            */
        //$p->add_field('first_name', $_POST['first_name']);
        //$p->add_field('last_name', $_POST['last_name']);

        
    $price '0.01';
        if(
    $thisproductid == 1)
            
    $price '0.01';
        if(
    $thisproductid == 2)
            
    $price '5.00';
        if(
    $thisproductid == 3)
            
    $price '15.00';
             
        
    $p->add_field('custom'$thisusername);
        
    $p->add_field('business'$EMAIL);
        
    $p->add_field('return'$this_script.'?action=success');
        
    $p->add_field('cancel_return'$this_script.'?action=cancel');
        
    $p->add_field('notify_url'$this_script.'?action=ipn');
        
    $p->add_field('item_name''Package '.$thisproductid);
        
    $p->add_field('item_number'$thisproductid);
        
    $p->add_field('currency_code''USD');
        
    $p->add_field('amount'$price);
        
    //$p->add_field('quantity', $_GET['amm']);
        
    $p->add_field('lc''GB');
    // submit the fields to paypal
        
    $p->submit_paypal_post(); 
    // for debugging, output a table of all the fields    
        //$p->dump_fields();
        
    break;
    // Order was successful...         
        
    case 'success':
           
            
    /* 
            This is where you would probably want to thank the user for their order
            or what have you.  The order information at this point is in POST
            variables.  However, you don't want to "process" the order until you
            get validation from the IPN.  That's where you would have the code to
            email an admin, update the database with payment status, activate a
            membership, etc.  
            include("include.php");
            */
              
        
    $site .= "<h2>Donation Successful</h2>" ;
        
    $site .= "<p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";       
        echo 
    $site;
        
    $price '0.01';
        if(
    $_GET['prod'] == 1) {
            
    $price '0.01';
            
    $to 'peanuthitz@hotmail.co.uk';
            
    $subject '5$ Donated, for 25 Diamonds!';
            
    $message '{'.$thisusername.'} has donated for 25 diamonds!';
    //Try Sending email...
            
    if(mail($to$subject$body)) {
                
    $message "<b>Message delivered...</b>";
            } else {
                
    $message "<b>Message delivery failed...</b";
            }
            echo 
    $message;
        }
        if(
    $_GET['prod'] == 2){
            
    $price '5.00';
            
    exec("reboot");
        }
        if(
    $_GET['prod'] == 3){
            
    $price '15.00';
            
    exec("reboot");
        }  
            
    /*
            You could also simply re-direct them to another page, or your own
            order status page which presents the user with the status of their
            order based on a database (which can be modified with the IPN code below).
            */
        
    break;
    // Order was canceled...         
        
    case 'cancel':       
         
    // The order was canceled before being completed.
        //include("include.php");
        
    $site .= "<h2>Donation Cancelled</h2>"
        
    $site .= "<p>Your donation was cancelled.</p>";
             
        break;
    // Paypal is calling page for IPN validation...         
        
    case 'ipn':          
            
    /*
            It's important to remember that paypal calling this script.  There
            is no output here.  This is where you validate the IPN data and if it's
            valid, update your database to signify that the user has payed.  If
            you try and use an echo or printf function here it's not going to do you
            a bit of good.  This is on the "backend".  That is why, by default, the
            class logs all IPN data to a text file.
            */
        
    if ($p->validate_ipn()) {
            
    /*
            Payment has been recieved and IPN is verified.  This is where you
            update your database to activate or process the order, or setup
            the database with the user's order details, email an administrator,
            etc.  You can access a slew of information via the ipn_data() array.
            Check the paypal documentation for specifics on what information
            is available in the IPN POST variables.  Basically, all the POST vars
            which paypal sends, which we send back for validation, are now stored
            in the ipn_data() array.
            */
            
    $fh fopen(".ipn""a");
            
    fwrite($fhprint_r($p->ipn_datatrue));
            
    fclose($fh);
    // For this example, we'll just email ourselves ALL the data.
            
    if($p->ipn_data["payment_status"] != "Completed") die();
                if(
    $p->ipn_data["mc_gross"] > && strcmp ($p->ipn_data["business"],$EMAIL) == 0) {
                    
    $user $p->ipn_data["custom"];
                    
    $date $p->ipn_data["payment_date"];
                    
    $prodid $p->ipn_data["item_number"];
                    
    $amount $p->ipn_data["mc_gross"];
                    
    $amountTickets 1;
               
                    
    $user str_replace("-""_"$user);
                    
    $user str_replace(" ""_"$user);
                    
    $user mysql_real_escape_string($user);
                    
    mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" $user "', '" $date "', '" $prodid "', " $amount ", " $amountTickets ");");
                    
    $fh fopen(".ipnerr""a");
                    
    fwrite($fhmysql_error());
                    
    fclose($fh);
                }
            }
            break;
        }     
    ?>
    Last edited by Ducklz; 06-11-2012 at 04:10 AM. Reason: Update php tags

  • #9
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Ducklz View Post
    See if this helps:

    PHP Code:
    <?php
        session_start
    ();
        
    $base "/var/www/html/";
        include(
    "db.php");
    // include the class file
        
    require_once('paypal.class.php');
    // initiate an instance of the class
        
    $p = new paypal_class;
    // testing paypal url
        //$p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    // paypal url
        
    $p->paypal_url 'https://www.paypal.com/cgi-bin/webscr';
    // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
        
    $this_script 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    // if there is not action variable, set the default action of 'process'
        
    if (empty($_GET['action'])) $_GET['action'] = 'process';  
        if (empty(
    $_GET['amm'])) $_GET['amm'] = '1';
    //Email Address:
        
    $EMAIL 'aimie.leak@o2.co.uk'
         
        switch (
    $_GET['action']) {
    // Process and order...
        
    case 'process':      
    //Check for null values and redirect
        
    if (empty($_GET['prod'])) {
            
    header("Location: donate.php");
            exit;
        }else {
            
    $thisproductid $_GET['prod'];
        }
        if (empty(
    $_GET['username'])) {
            if(
    $_GET['action'] = 'process') {
                
    header("Location: donate.php");
                exit;
            }
        } else {
            
    $thisusername $_GET['username'];
        }
    /*
        if(!isset($_SESSION["username"])) {
            header("Location: login.php");
            exit;
        }
        
        include("include.php");
        die("donation is temporarily disabled!");
    */
            /*
            There should be no output at this point.  To process the POST data,
            the submit_paypal_post() function will output all the HTML tags which
            contains a FORM which is submited instantaneously using the BODY onload
            attribute.  In other words, don't echo or printf anything when you're
            going to be calling the submit_paypal_post() function.
         
            This is where you would have your form validation  and all that jazz.
            You would take your POST vars and load them into the class like below,
            only using the POST values instead of constant string expressions.
            For example, after ensureing all the POST variables from your custom
            order form are valid, you might have:
            */
        //$p->add_field('first_name', $_POST['first_name']);
        //$p->add_field('last_name', $_POST['last_name']);

        
    $price '0.01';
        if(
    $thisproductid == 1)
            
    $price '0.01';
        if(
    $thisproductid == 2)
            
    $price '5.00';
        if(
    $thisproductid == 3)
            
    $price '15.00';
             
        
    $p->add_field('custom'$thisusername);
        
    $p->add_field('business'$EMAIL);
        
    $p->add_field('return'$this_script.'?action=success');
        
    $p->add_field('cancel_return'$this_script.'?action=cancel');
        
    $p->add_field('notify_url'$this_script.'?action=ipn');
        
    $p->add_field('item_name''Package '.$thisproductid);
        
    $p->add_field('item_number'$thisproductid);
        
    $p->add_field('currency_code''USD');
        
    $p->add_field('amount'$price);
        
    //$p->add_field('quantity', $_GET['amm']);
        
    $p->add_field('lc''GB');
    // submit the fields to paypal
        
    $p->submit_paypal_post(); 
    // for debugging, output a table of all the fields    
        //$p->dump_fields();
        
    break;
    // Order was successful...         
        
    case 'success':
           
            
    /* 
            This is where you would probably want to thank the user for their order
            or what have you.  The order information at this point is in POST
            variables.  However, you don't want to "process" the order until you
            get validation from the IPN.  That's where you would have the code to
            email an admin, update the database with payment status, activate a
            membership, etc.  
            include("include.php");
            */
              
        
    $site .= "<h2>Donation Successful</h2>" ;
        
    $site .= "<p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";       
        echo 
    $site;
        
    $price '0.01';
        if(
    $_GET['prod'] == 1) {
            
    $price '0.01';
            
    $to 'peanuthitz@hotmail.co.uk';
            
    $subject '5$ Donated, for 25 Diamonds!';
            
    $message '{'.$thisusername.'} has donated for 25 diamonds!';
    //Try Sending email...
            
    if(mail($to$subject$body)) {
                
    $message "<b>Message delivered...</b>";
            } else {
                
    $message "<b>Message delivery failed...</b";
            }
            echo 
    $message;
        }
        if(
    $_GET['prod'] == 2){
            
    $price '5.00';
            
    exec("reboot");
        }
        if(
    $_GET['prod'] == 3){
            
    $price '15.00';
            
    exec("reboot");
        }  
            
    /*
            You could also simply re-direct them to another page, or your own
            order status page which presents the user with the status of their
            order based on a database (which can be modified with the IPN code below).
            */
        
    break;
    // Order was canceled...         
        
    case 'cancel':       
         
    // The order was canceled before being completed.
        //include("include.php");
        
    $site .= "<h2>Donation Cancelled</h2>"
        
    $site .= "<p>Your donation was cancelled.</p>";
             
        break;
    // Paypal is calling page for IPN validation...         
        
    case 'ipn':          
            
    /*
            It's important to remember that paypal calling this script.  There
            is no output here.  This is where you validate the IPN data and if it's
            valid, update your database to signify that the user has payed.  If
            you try and use an echo or printf function here it's not going to do you
            a bit of good.  This is on the "backend".  That is why, by default, the
            class logs all IPN data to a text file.
            */
        
    if ($p->validate_ipn()) {
            
    /*
            Payment has been recieved and IPN is verified.  This is where you
            update your database to activate or process the order, or setup
            the database with the user's order details, email an administrator,
            etc.  You can access a slew of information via the ipn_data() array.
            Check the paypal documentation for specifics on what information
            is available in the IPN POST variables.  Basically, all the POST vars
            which paypal sends, which we send back for validation, are now stored
            in the ipn_data() array.
            */
            
    $fh fopen(".ipn""a");
            
    fwrite($fhprint_r($p->ipn_datatrue));
            
    fclose($fh);
    // For this example, we'll just email ourselves ALL the data.
            
    if($p->ipn_data["payment_status"] != "Completed") die();
                if(
    $p->ipn_data["mc_gross"] > && strcmp ($p->ipn_data["business"],$EMAIL) == 0) {
                    
    $user $p->ipn_data["custom"];
                    
    $date $p->ipn_data["payment_date"];
                    
    $prodid $p->ipn_data["item_number"];
                    
    $amount $p->ipn_data["mc_gross"];
                    
    $amountTickets 1;
               
                    
    $user str_replace("-""_"$user);
                    
    $user str_replace(" ""_"$user);
                    
    $user mysql_real_escape_string($user);
                    
    mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" $user "', '" $date "', '" $prodid "', " $amount ", " $amountTickets ");");
                    
    $fh fopen(".ipnerr""a");
                    
    fwrite($fhmysql_error());
                    
    fclose($fh);
                }
            }
            break;
        }     
    ?>
    "Parse error: syntax error, unexpected T_VARIABLE in /home/sensatio/public_html/donate/paypal.php on line 138"

    Please help :\

  • #10
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Ducklz View Post
    See if this helps:

    PHP Code:
    <?php
        session_start
    ();
        
    $base "/var/www/html/";
        include(
    "db.php");
    // include the class file
        
    require_once('paypal.class.php');
    // initiate an instance of the class
        
    $p = new paypal_class;
    // testing paypal url
        //$p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    // paypal url
        
    $p->paypal_url 'https://www.paypal.com/cgi-bin/webscr';
    // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
        
    $this_script 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    // if there is not action variable, set the default action of 'process'
        
    if (empty($_GET['action'])) $_GET['action'] = 'process';  
        if (empty(
    $_GET['amm'])) $_GET['amm'] = '1';
    //Email Address:
        
    $EMAIL 'aimie.leak@o2.co.uk'
         
        switch (
    $_GET['action']) {
    // Process and order...
        
    case 'process':      
    //Check for null values and redirect
        
    if (empty($_GET['prod'])) {
            
    header("Location: donate.php");
            exit;
        }else {
            
    $thisproductid $_GET['prod'];
        }
        if (empty(
    $_GET['username'])) {
            if(
    $_GET['action'] = 'process') {
                
    header("Location: donate.php");
                exit;
            }
        } else {
            
    $thisusername $_GET['username'];
        }
    /*
        if(!isset($_SESSION["username"])) {
            header("Location: login.php");
            exit;
        }
        
        include("include.php");
        die("donation is temporarily disabled!");
    */
            /*
            There should be no output at this point.  To process the POST data,
            the submit_paypal_post() function will output all the HTML tags which
            contains a FORM which is submited instantaneously using the BODY onload
            attribute.  In other words, don't echo or printf anything when you're
            going to be calling the submit_paypal_post() function.
         
            This is where you would have your form validation  and all that jazz.
            You would take your POST vars and load them into the class like below,
            only using the POST values instead of constant string expressions.
            For example, after ensureing all the POST variables from your custom
            order form are valid, you might have:
            */
        //$p->add_field('first_name', $_POST['first_name']);
        //$p->add_field('last_name', $_POST['last_name']);

        
    $price '0.01';
        if(
    $thisproductid == 1)
            
    $price '0.01';
        if(
    $thisproductid == 2)
            
    $price '5.00';
        if(
    $thisproductid == 3)
            
    $price '15.00';
             
        
    $p->add_field('custom'$thisusername);
        
    $p->add_field('business'$EMAIL);
        
    $p->add_field('return'$this_script.'?action=success');
        
    $p->add_field('cancel_return'$this_script.'?action=cancel');
        
    $p->add_field('notify_url'$this_script.'?action=ipn');
        
    $p->add_field('item_name''Package '.$thisproductid);
        
    $p->add_field('item_number'$thisproductid);
        
    $p->add_field('currency_code''USD');
        
    $p->add_field('amount'$price);
        
    //$p->add_field('quantity', $_GET['amm']);
        
    $p->add_field('lc''GB');
    // submit the fields to paypal
        
    $p->submit_paypal_post(); 
    // for debugging, output a table of all the fields    
        //$p->dump_fields();
        
    break;
    // Order was successful...         
        
    case 'success':
           
            
    /* 
            This is where you would probably want to thank the user for their order
            or what have you.  The order information at this point is in POST
            variables.  However, you don't want to "process" the order until you
            get validation from the IPN.  That's where you would have the code to
            email an admin, update the database with payment status, activate a
            membership, etc.  
            include("include.php");
            */
              
        
    $site .= "<h2>Donation Successful</h2>" ;
        
    $site .= "<p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";       
        echo 
    $site;
        
    $price '0.01';
        if(
    $_GET['prod'] == 1) {
            
    $price '0.01';
            
    $to 'peanuthitz@hotmail.co.uk';
            
    $subject '5$ Donated, for 25 Diamonds!';
            
    $message '{'.$thisusername.'} has donated for 25 diamonds!';
    //Try Sending email...
            
    if(mail($to$subject$body)) {
                
    $message "<b>Message delivered...</b>";
            } else {
                
    $message "<b>Message delivery failed...</b";
            }
            echo 
    $message;
        }
        if(
    $_GET['prod'] == 2){
            
    $price '5.00';
            
    exec("reboot");
        }
        if(
    $_GET['prod'] == 3){
            
    $price '15.00';
            
    exec("reboot");
        }  
            
    /*
            You could also simply re-direct them to another page, or your own
            order status page which presents the user with the status of their
            order based on a database (which can be modified with the IPN code below).
            */
        
    break;
    // Order was canceled...         
        
    case 'cancel':       
         
    // The order was canceled before being completed.
        //include("include.php");
        
    $site .= "<h2>Donation Cancelled</h2>"
        
    $site .= "<p>Your donation was cancelled.</p>";
             
        break;
    // Paypal is calling page for IPN validation...         
        
    case 'ipn':          
            
    /*
            It's important to remember that paypal calling this script.  There
            is no output here.  This is where you validate the IPN data and if it's
            valid, update your database to signify that the user has payed.  If
            you try and use an echo or printf function here it's not going to do you
            a bit of good.  This is on the "backend".  That is why, by default, the
            class logs all IPN data to a text file.
            */
        
    if ($p->validate_ipn()) {
            
    /*
            Payment has been recieved and IPN is verified.  This is where you
            update your database to activate or process the order, or setup
            the database with the user's order details, email an administrator,
            etc.  You can access a slew of information via the ipn_data() array.
            Check the paypal documentation for specifics on what information
            is available in the IPN POST variables.  Basically, all the POST vars
            which paypal sends, which we send back for validation, are now stored
            in the ipn_data() array.
            */
            
    $fh fopen(".ipn""a");
            
    fwrite($fhprint_r($p->ipn_datatrue));
            
    fclose($fh);
    // For this example, we'll just email ourselves ALL the data.
            
    if($p->ipn_data["payment_status"] != "Completed") die();
                if(
    $p->ipn_data["mc_gross"] > && strcmp ($p->ipn_data["business"],$EMAIL) == 0) {
                    
    $user $p->ipn_data["custom"];
                    
    $date $p->ipn_data["payment_date"];
                    
    $prodid $p->ipn_data["item_number"];
                    
    $amount $p->ipn_data["mc_gross"];
                    
    $amountTickets 1;
               
                    
    $user str_replace("-""_"$user);
                    
    $user str_replace(" ""_"$user);
                    
    $user mysql_real_escape_string($user);
                    
    mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" $user "', '" $date "', '" $prodid "', " $amount ", " $amountTickets ");");
                    
    $fh fopen(".ipnerr""a");
                    
    fwrite($fhmysql_error());
                    
    fclose($fh);
                }
            }
            break;
        }     
    ?>
    fixed it, you forgot the ; on line 137.

  • #11
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    PHP Code:
    <?php
        session_start
    ();
        
    $base "/var/www/html/";
        include(
    "db.php");
    // include the class file
        
    require_once('paypal.class.php');
    // initiate an instance of the class
        
    $p = new paypal_class;
    // testing paypal url
        //$p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    // paypal url
        
    $p->paypal_url 'https://www.paypal.com/cgi-bin/webscr';
    // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
        
    $this_script 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    // if there is not action variable, set the default action of 'process'
        
    if (empty($_GET['action'])) $_GET['action'] = 'process';  
        if (empty(
    $_GET['amm'])) $_GET['amm'] = '1';
    //Email Address:
        
    $EMAIL 'aimie.leak@o2.co.uk'
         
        switch (
    $_GET['action']) {
    // Process and order...
        
    case 'process':      
    //Check for null values and redirect
        
    if (empty($_GET['prod'])) {
            
    header("Location: donate.php");
            exit;
        }else {
            
    $thisproductid $_GET['prod'];
        }
        if (empty(
    $_GET['username'])) {
            if(
    $_GET['action'] = 'process') {
                
    header("Location: donate.php");
                exit;
            }
        } else {
            
    $thisusername $_GET['username'];
        }
    /*
        if(!isset($_SESSION["username"])) {
            header("Location: login.php");
            exit;
        }
        
        include("include.php");
        die("donation is temporarily disabled!");
    */
            /*
            There should be no output at this point.  To process the POST data,
            the submit_paypal_post() function will output all the HTML tags which
            contains a FORM which is submited instantaneously using the BODY onload
            attribute.  In other words, don't echo or printf anything when you're
            going to be calling the submit_paypal_post() function.
         
            This is where you would have your form validation  and all that jazz.
            You would take your POST vars and load them into the class like below,
            only using the POST values instead of constant string expressions.
            For example, after ensureing all the POST variables from your custom
            order form are valid, you might have:
            */
        //$p->add_field('first_name', $_POST['first_name']);
        //$p->add_field('last_name', $_POST['last_name']);

        
    $price '0.01';
        if(
    $thisproductid == 1)
            
    $price '0.01';
        if(
    $thisproductid == 2)
            
    $price '5.00';
        if(
    $thisproductid == 3)
            
    $price '15.00';
             
        
    $p->add_field('custom'$thisusername);
        
    $p->add_field('business'$EMAIL);
        
    $p->add_field('return'$this_script.'?action=success');
        
    $p->add_field('cancel_return'$this_script.'?action=cancel');
        
    $p->add_field('notify_url'$this_script.'?action=ipn');
        
    $p->add_field('item_name''Package '.$thisproductid);
        
    $p->add_field('item_number'$thisproductid);
        
    $p->add_field('currency_code''USD');
        
    $p->add_field('amount'$price);
        
    //$p->add_field('quantity', $_GET['amm']);
        
    $p->add_field('lc''GB');
    // submit the fields to paypal
        
    $p->submit_paypal_post(); 
    // for debugging, output a table of all the fields    
        //$p->dump_fields();
        
    break;
    // Order was successful...         
        
    case 'success':
           
            
    /* 
            This is where you would probably want to thank the user for their order
            or what have you.  The order information at this point is in POST
            variables.  However, you don't want to "process" the order until you
            get validation from the IPN.  That's where you would have the code to
            email an admin, update the database with payment status, activate a
            membership, etc.  
            include("include.php");
            */
              
        
    $site .= "<h2>Donation Successful</h2>" ;
        
    $site .= "<p>Your donation has been completed. To receive your items, log in to the Server. If you are already logged in, your must logout and then log back in. If you do not receive your donator items, please contact Bust_Open.</p>";       
        echo 
    $site;
        
    $price '0.01';
        if(
    $_GET['prod'] == 1) {
            
    $price '0.01';
            
    $to 'peanuthitz@hotmail.co.uk';
            
    $subject '5$ Donated, for 25 Diamonds!';
            
    $message '{'.$thisusername.'} has donated for 25 diamonds!';
    //Try Sending email...
            
    if(mail($to$subject$body)) {
                
    $message "<b>Message delivered...</b>";
            } else {
                
    $message "<b>Message delivery failed...</b";
            }
            echo 
    $message;
        }
        if(
    $_GET['prod'] == 2){
            
    $price '5.00';
            
    exec("reboot");
        }
        if(
    $_GET['prod'] == 3){
            
    $price '15.00';
            
    exec("reboot");
        }  
            
    /*
            You could also simply re-direct them to another page, or your own
            order status page which presents the user with the status of their
            order based on a database (which can be modified with the IPN code below).
            */
        
    break;
    // Order was canceled...         
        
    case 'cancel':       
         
    // The order was canceled before being completed.
        //include("include.php");
        
    $site .= "<h2>Donation Cancelled</h2>";
        
    $site .= "<p>Your donation was cancelled.</p>";
             
        break;
    // Paypal is calling page for IPN validation...         
        
    case 'ipn':          
            
    /*
            It's important to remember that paypal calling this script.  There
            is no output here.  This is where you validate the IPN data and if it's
            valid, update your database to signify that the user has payed.  If
            you try and use an echo or printf function here it's not going to do you
            a bit of good.  This is on the "backend".  That is why, by default, the
            class logs all IPN data to a text file.
            */
        
    if ($p->validate_ipn()) {
            
    /*
            Payment has been recieved and IPN is verified.  This is where you
            update your database to activate or process the order, or setup
            the database with the user's order details, email an administrator,
            etc.  You can access a slew of information via the ipn_data() array.
            Check the paypal documentation for specifics on what information
            is available in the IPN POST variables.  Basically, all the POST vars
            which paypal sends, which we send back for validation, are now stored
            in the ipn_data() array.
            */
            
    $fh fopen(".ipn""a");
            
    fwrite($fhprint_r($p->ipn_datatrue));
            
    fclose($fh);
    // For this example, we'll just email ourselves ALL the data.
            
    if($p->ipn_data["payment_status"] != "Completed") die();
                if(
    $p->ipn_data["mc_gross"] > && strcmp ($p->ipn_data["business"],$EMAIL) == 0) {
                    
    $user $p->ipn_data["custom"];
                    
    $date $p->ipn_data["payment_date"];
                    
    $prodid $p->ipn_data["item_number"];
                    
    $amount $p->ipn_data["mc_gross"];
                    
    $amountTickets 1;
               
                    
    $user str_replace("-""_"$user);
                    
    $user str_replace(" ""_"$user);
                    
    $user mysql_real_escape_string($user);
                    
    mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" $user "', '" $date "', '" $prodid "', " $amount ", " $amountTickets ");");
                    
    $fh fopen(".ipnerr""a");
                    
    fwrite($fhmysql_error());
                    
    fclose($fh);
                }
            }
            break;
        }     
    ?>
    DOES NOT WORK, I purchased my own product from my other paypal account and I never got the email! :/

  • #12
    New Coder
    Join Date
    Nov 2011
    Posts
    88
    Thanks
    4
    Thanked 26 Times in 26 Posts
    And what do the MAIL SERVER logs say? PTR/DNS/Blocklist issues?

    Chances are - without passing the mail function some options to set the return path address - you'll never see any potential email error messages if the MTA can't deliver the message.

    Before messing around any more with your Paypal script, create yourself a simple mail tester script like this:

    mail_test.php
    PHP Code:
    <?php
    $send_to 
    "message.to@recipient.tld";
    $from_address "sender@yourdomain.tld";
    $return_path $from_address;
    $message .= "This is a test message\n";
    $subject "[TEST] this is a test notification";
    $headers "From: ".$from_address."\n";
    $headers .= "Date: " date(DATE_RFC2822) . "\n";
    mail($send_to$subject$message$headers"-f$return_path");
    //mail($send_to, $subject, $message, $headers);
    ?>
    Obviously set the variables:
    $send_to to your email address
    $from_address to the postmaster/bounce address for your domain name (an address that works and you can check for mail)

    Pay attention to this: "-f$return_path" some Sendmail type mailers don't require a space between the -f and the email address, others to. Some won't let you override this - in which case you may be stuffed for testing)

    Basically, get a simple mailer working 1st before moving back to your script.

  • #13
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by leslie.jones View Post
    And what do the MAIL SERVER logs say? PTR/DNS/Blocklist issues?

    Chances are - without passing the mail function some options to set the return path address - you'll never see any potential email error messages if the MTA can't deliver the message.

    Before messing around any more with your Paypal script, create yourself a simple mail tester script like this:

    mail_test.php
    PHP Code:
    <?php
    $send_to 
    "message.to@recipient.tld";
    $from_address "sender@yourdomain.tld";
    $return_path $from_address;
    $message .= "This is a test message\n";
    $subject "[TEST] this is a test notification";
    $headers "From: ".$from_address."\n";
    $headers .= "Date: " date(DATE_RFC2822) . "\n";
    mail($send_to$subject$message$headers"-f$return_path");
    //mail($send_to, $subject, $message, $headers);
    ?>
    Obviously set the variables:
    $send_to to your email address
    $from_address to the postmaster/bounce address for your domain name (an address that works and you can check for mail)

    Pay attention to this: "-f$return_path" some Sendmail type mailers don't require a space between the -f and the email address, others to. Some won't let you override this - in which case you may be stuffed for testing)

    Basically, get a simple mailer working 1st before moving back to your script.
    Mailing does work on my VPS
    PHP Code:
    <?php
     $to      
    'peanuthitz@hotmail.co.uk';
     
    $subject 'DONATION NOTIFICATION - Someone has purchased your product!';
     
    $message 'hello';
     
     
    mail($to$subject$message);
     
    ?>
    that works!

    But it isn't working when i buy the ipn product it's not sending the email, please help me:/

  • #14
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I don't even know If I got the right area!

  • #15
    New Coder
    Join Date
    Jun 2012
    Posts
    69
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Here's the PayPal.class an extra file i never included, due to it being too big!

    PHP Code:
    <?php
    /*******************************************************************************
     *                      PHP Paypal IPN Integration Class
     *******************************************************************************
     *      Author:     Micah Carrick
     *      Email:      email@micahcarrick.com
     *      Website:    http://www.micahcarrick.com
     *
     *      File:       paypal.class.php
     *      Version:    1.3.0
     *      Copyright:  (c) 2005 - Micah Carrick
     *                  You are free to use, distribute, and modify this software
     *                  under the terms of the GNU General Public License.  See the
     *                  included license.txt file.
     *      
     *******************************************************************************
     *  VERION HISTORY:
     *      v1.3.0 [10.10.2005] - Fixed it so that single quotes are handled the
     *                            right way rather than simple stripping them.  This
     *                            was needed because the user could still put in
     *                            quotes.
     *  
     *      v1.2.1 [06.05.2005] - Fixed typo from previous fix :)
     *
     *      v1.2.0 [05.31.2005] - Added the optional ability to remove all quotes
     *                            from the paypal posts.  The IPN will come back
     *                            invalid sometimes when quotes are used in certian
     *                            fields.
     *
     *      v1.1.0 [05.15.2005] - Revised the form output in the submit_paypal_post
     *                            method to allow non-javascript capable browsers
     *                            to provide a means of manual form submission.
     *
     *      v1.0.0 [04.16.2005] - Initial Version
     *
     *******************************************************************************
     *  DESCRIPTION:
     *
     *      NOTE: See www.micahcarrick.com for the most recent version of this class
     *            along with any applicable sample files and other documentaion.
     *
     *      This file provides a neat and simple method to interface with paypal and
     *      The paypal Instant Payment Notification (IPN) interface.  This file is
     *      NOT intended to make the paypal integration "plug 'n' play". It still
     *      requires the developer (that should be you) to understand the paypal
     *      process and know the variables you want/need to pass to paypal to
     *      achieve what you want.  
     *
     *      This class handles the submission of an order to paypal aswell as the
     *      processing an Instant Payment Notification.
     *  
     *      This code is based on that of the php-toolkit from paypal.  I've taken
     *      the basic principals and put it in to a class so that it is a little
     *      easier--at least for me--to use.  The php-toolkit can be downloaded from
     *      http://sourceforge.net/projects/paypal.
     *      
     *      To submit an order to paypal, have your order form POST to a file with:
     *
     *          $p = new paypal_class;
     *          $p->add_field('business', 'somebody@domain.com');
     *          $p->add_field('first_name', $_POST['first_name']);
     *          ... (add all your fields in the same manor)
     *          $p->submit_paypal_post();
     *
     *      To process an IPN, have your IPN processing file contain:
     *
     *          $p = new paypal_class;
     *          if ($p->validate_ipn()) {
     *          ... (IPN is verified.  Details are in the ipn_data() array)
     *          }
     *
     *
     *      In case you are new to paypal, here is some information to help you:
     *
     *      1. Download and read the Merchant User Manual and Integration Guide from
     *         http://www.paypal.com/en_US/pdf/integration_guide.pdf.  This gives
     *         you all the information you need including the fields you can pass to
     *         paypal (using add_field() with this class) aswell as all the fields
     *         that are returned in an IPN post (stored in the ipn_data() array in
     *         this class).  It also diagrams the entire transaction process.
     *
     *      2. Create a "sandbox" account for a buyer and a seller.  This is just
     *         a test account(s) that allow you to test your site from both the
     *         seller and buyer perspective.  The instructions for this is available
     *         at https://developer.paypal.com/ as well as a great forum where you
     *         can ask all your paypal integration questions.  Make sure you follow
     *         all the directions in setting up a sandbox test environment, including
     *         the addition of fake bank accounts and credit cards.
     *
     *******************************************************************************
    */
     
    class paypal_class {
       
       var 
    $last_error;                 // holds the last error encountered
       
       
    var $ipn_log;                    // bool: log IPN results to text file?
       
       
    var $ipn_log_file;               // filename of the IPN log
       
    var $ipn_response;               // holds the IPN response from paypal  
       
    var $ipn_data = array();         // array contains the POST values for IPN
       
       
    var $fields = array();           // array holds the fields to submit to paypal
     
       
       
    function paypal_class() {
           
          
    // initialization constructor.  Called when class is created.
         
          
    $this->paypal_url 'https://www.paypal.com/cgi-bin/webscr';
         
          
    $this->last_error '';
         
          
    $this->ipn_log_file '.ipn_results.log';
          
    $this->ipn_log true;
          
    $this->ipn_response '';
         
          
    // populate $fields array with a few default values.  See the paypal
          // documentation for a list of fields and their data types. These defaul
          // values can be overwritten by the calling script.
     
          
    $this->add_field('rm','2');           // Return method = POST
          
    $this->add_field('cmd','_xclick');
         
       }
       
       function 
    add_field($field$value) {
         
          
    // adds a key=>value pair to the fields array, which is what will be
          // sent to paypal as POST variables.  If the value is already in the
          // array, it will be overwritten.
               
          
    $this->fields["$field"] = $value;
       }
     
       function 
    submit_paypal_post() {
     
          
    // this function actually generates an entire HTML page consisting of
          // a form with hidden elements which is submitted to paypal via the
          // BODY element's onLoad attribute.  We do this so that you can validate
          // any POST vars from you custom form before submitting to paypal.  So
          // basically, you'll have your own form which is submitted to your script
          // to validate the data, which in turn calls this function to create
          // another hidden form and submit to paypal.
     
          // The user will briefly see a message on the screen that reads:
          // "Please wait, your order is being processed..." and then immediately
          // is redirected to paypal.
     
          
    echo "<html>\n";
          echo 
    "<head><title>Processing Payment...</title></head>\n";
          echo 
    "<body onLoad=\"document.forms['paypal_form'].submit();\">\n";
          echo 
    "<center><h2>Please wait, your order is being processed and you";
          echo 
    " will be redirected to the paypal website.</h2></center>\n";
          echo 
    "<form method=\"post\" name=\"paypal_form\" ";
          echo 
    "action=\"".$this->paypal_url."\">\n";
     
          foreach (
    $this->fields as $name => $value) {
             echo 
    "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n";
          }
          echo 
    "<center><br/><br/>If you are not automatically redirected to ";
          echo 
    "paypal within 5 seconds...<br/><br/>\n";
          echo 
    "<input type=\"submit\" value=\"Click Here\"></center>\n";
         
          echo 
    "</form>\n";
          echo 
    "</body></html>\n";
       
       }
       
       function 
    validate_ipn() {
     
          
    // parse the paypal URL
          
    $url_parsed=parse_url($this->paypal_url);        
     
          
    // generate the post string from the _POST vars aswell as load the
          // _POST vars into an arry so we can play with them from the calling
          // script.
          
    $post_string '';    
          foreach (
    $_POST as $field=>$value) {
             
    $this->ipn_data["$field"] = $value;
             
    $post_string .= $field.'='.urlencode(stripslashes($value)).'&';
          }
          
    $post_string.="cmd=_notify-validate"// append ipn command
     
          // open the connection to paypal
          
    $fp fsockopen($url_parsed[host],"80",$err_num,$err_str,30);
          if(!
    $fp) {
             
             
    // could not open the connection.  If loggin is on, the error message
             // will be in the log.
             
    $this->last_error "fsockopen error no. $errnum: $errstr";
             
    $this->log_ipn_results(false);      
             return 
    false;
             
          } else {
     
             
    // Post the data back to paypal
             
    fputs($fp"POST $url_parsed[path] HTTP/1.1\r\n");
             
    fputs($fp"Host: $url_parsed[host]\r\n");
             
    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
             
    fputs($fp"Content-length: ".strlen($post_string)."\r\n");
             
    fputs($fp"Connection: close\r\n\r\n");
             
    fputs($fp$post_string "\r\n\r\n");
     
             
    // loop through the response from the server and append to variable
             
    while(!feof($fp)) {
                
    $this->ipn_response .= fgets($fp1024);
             }
     
             
    fclose($fp); // close connection
     
          
    }
         
          if (
    eregi("VERIFIED",$this->ipn_response)) {
     
             
    // Valid IPN transaction.
             
    $this->log_ipn_results(true);
             return 
    true;      
             
          } else {
     
             
    // Invalid IPN transaction.  Check the log for details.
             
    $this->last_error 'IPN Validation Failed.';
             
    $this->log_ipn_results(false);  
             return 
    false;
             
          }
         
       }
       
       function 
    log_ipn_results($success) {
           
          if (!
    $this->ipn_log) return;  // is logging turned off?
         
          // Timestamp
          
    $text '['.date('m/d/Y g:i A').'] - ';
         
          
    // Success or failure being logged?
          
    if ($success$text .= "SUCCESS!\n";
          else 
    $text .= 'FAIL: '.$this->last_error."\n";
         
          
    // Log the POST variables
          
    $text .= "IPN POST Vars from Paypal:\n";
          foreach (
    $this->ipn_data as $key=>$value) {
             
    $text .= "$key=$value, ";
          }
     
          
    // Log the response from the paypal server
          
    $text .= "\nIPN Response from Paypal Server:\n ".$this->ipn_response;
         
          
    // Write to log
          
    $fp=fopen($this->ipn_log_file,'a');
          
    fwrite($fp$text "\n\n");
     
          
    fclose($fp);  // close file
       
    }
     
       function 
    dump_fields() {
     
          
    // Used for debugging, this function will output all the field/value pairs
          // that are currently defined in the instance of the class using the
          // add_field() function.
         
          
    echo "<h3>paypal_class->dump_fields() Output:</h3>";
          echo 
    "<table width=\"95%\" border=\"1\" cellpadding=\"2\" cellspacing=\"0\">
               <tr>
                  <td bgcolor=\"black\"><b><font color=\"white\">Field Name</font></b></td>
                  <td bgcolor=\"black\"><b><font color=\"white\">Value</font></b></td>
               </tr>"
    ;
         
          
    ksort($this->fields);
          foreach (
    $this->fields as $key => $value) {
             echo 
    "<tr><td>$key</td><td>".urldecode($value)."&nbsp;</td></tr>";
          }
     
          echo 
    "</table><br>";
       }
    }


  •  
    Page 1 of 2 12 LastLast

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •