1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

Paypal IPN : Custom Fields ?

Discussion in 'PHP' started by domainsurfer, Nov 28, 2008.

  1. #1
    I'm using the Paypal integration class my micah carrick.

    I can't get the code in blue to work. Where am i going wrong ?

    What i aim to accomplish is :

    User will buy hits from my website, and after validating the IPN , the hits will be added to the database.

    Code (Text):
    1. <?php
    2.  
    3. /*  PHP Paypal IPN Integration Class Demonstration File
    4.  *  4.16.2005 - Micah Carrick, email@micahcarrick.com
    5.  *
    6.  *  This file demonstrates the usage of paypal.class.php, a class designed  
    7.  *  to aid in the interfacing between your website, paypal, and the instant
    8.  *  payment notification (IPN) interface.  This single file serves as 4
    9.  *  virtual pages depending on the "action" varialble passed in the URL. It's
    10.  *  the processing page which processes form data being submitted to paypal, it
    11.  *  is the page paypal returns a user to upon success, it's the page paypal
    12.  *  returns a user to upon canceling an order, and finally, it's the page that
    13.  *  handles the IPN request from Paypal.
    14.  *
    15.  *  I tried to comment this file, aswell as the acutall class file, as well as
    16.  *  I possibly could.  Please email me with questions, comments, and suggestions.
    17.  *  See the header of paypal.class.php for additional resources and information.
    18. */
    19.  
    20. // Setup class
    21. require_once('paypal.class.php');  // include the class file
    22. $p = new paypal_class;             // initiate an instance of the class
    23. $p->paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';   // testing paypal url
    24. //$p->paypal_url = 'https://www.paypal.com/cgi-bin/webscr';     // paypal url
    25.            
    26. // setup a variable for this script (ie: 'http://www.micahcarrick.com/paypal.php')
    27. $this_script = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    28.  
    29. // if there is not action variable, set the default action of 'process'
    30. if (empty($_GET['action'])) $_GET['action'] = 'process';  
    31.  
    32. switch ($_GET['action']) {
    33.    
    34.    case 'process':      // Process and order...
    35.  
    36.       // There should be no output at this point.  To process the POST data,
    37.       // the submit_paypal_post() function will output all the HTML tags which
    38.       // contains a FORM which is submited instantaneously using the BODY onload
    39.       // attribute.  In other words, don't echo or printf anything when you're
    40.       // going to be calling the submit_paypal_post() function.
    41.  
    42.       // This is where you would have your form validation  and all that jazz.
    43.       // You would take your POST vars and load them into the class like below,
    44.       // only using the POST values instead of constant string expressions.
    45.  
    46.       // For example, after ensureing all the POST variables from your custom
    47.       // order form are valid, you might have:
    48.       //
    49.        
    50.       $p->add_field('business', 'EMAIL');
    51.       $p->add_field('return', $this_script.'?action=success');
    52.       $p->add_field('cancel_return', $this_script.'?action=cancel');
    53.       $p->add_field('notify_url', $this_script.'?action=ipn');
    54.       $p->add_field('item_name', 'Paypal Test Transaction');
    55.      
    56.     [COLOR="Blue"]  $p->add_field('hitsbought', "$_GET[hits]");
    57.       $p->add_field('linkid', "$_GET[linkid]");
    58.       $p->add_field('userid', "$_GET[uid]");[/COLOR]
    59.      
    60.    
    61.          $p->add_field('amount', 700);
    62.    
    63.          $p->submit_paypal_post(); // submit the fields to paypal
    64.          $p->dump_fields();      // for debugging, output a table of all the fields
    65.           break;
    66.      
    67.    case 'success':      // Order was successful...
    68.    
    69.       // This is where you would probably want to thank the user for their order
    70.       // or what have you.  The order information at this point is in POST
    71.       // variables.  However, you don't want to "process" the order until you
    72.       // get validation from the IPN.  That's where you would have the code to
    73.       // email an admin, update the database with payment status, activate a
    74.       // membership, etc.  
    75.  
    76.       echo "<html><head><title>Success</title></head><body><h3>Thank you for your order.</h3>";
    77.       foreach ($_POST as $key => $value) { echo "$key: $value<br>"; }
    78.       echo "</body></html>";
    79.      
    80.       // You could also simply re-direct them to another page, or your own
    81.       // order status page which presents the user with the status of their
    82.       // order based on a database (which can be modified with the IPN code
    83.       // below).
    84.      
    85.       break;
    86.      
    87.    case 'cancel':       // Order was canceled...
    88.  
    89.       // The order was canceled before being completed.
    90.  
    91.       echo "<html><head><title>Canceled</title></head><body><h3>The order was canceled.</h3>";
    92.       echo "</body></html>";
    93.      
    94.       break;
    95.      
    96.    case 'ipn':          // Paypal is calling page for IPN validation...
    97.    
    98.       // It's important to remember that paypal calling this script.  There
    99.       // is no output here.  This is where you validate the IPN data and if it's
    100.       // valid, update your database to signify that the user has payed.  If
    101.       // you try and use an echo or printf function here it's not going to do you
    102.       // a bit of good.  This is on the "backend".  That is why, by default, the
    103.       // class logs all IPN data to a text file.
    104.      
    105.       if ($p->validate_ipn()) {
    106.          
    107.          // Payment has been recieved and IPN is verified.  This is where you
    108.          // update your database to activate or process the order, or setup
    109.          // the database with the user's order details, email an administrator,
    110.          // etc.  You can access a slew of information via the ipn_data() array.
    111.  
    112.          // Check the paypal documentation for specifics on what information
    113.          // is available in the IPN POST variables.  Basically, all the POST vars
    114.          // which paypal sends, which we send back for validation, are now stored
    115.          // in the ipn_data() array.
    116.  
    117.          // For this example, we'll just email ourselves ALL the data.
    118.        
    119.          include('./config.php');
    120.    
    121.         [COLOR="Blue"] $adhits = $p->ipn_data['hits'];
    122.          $uid = $p->ipn_data['userid'];
    123.          mysql_query("insert into ads(target,hits_bought,owner) values('test','$adhits','$uid')");[/COLOR]
    124.          
    125.  
    126.       }
    127.      
    128.  }    
    129.  
    130. ?>
     
    domainsurfer, Nov 28, 2008 IP
  2. harrisunderwork

    harrisunderwork Well-Known Member

    Messages:
    1,007
    Likes Received:
    21
    Best Answers:
    0
    Trophy Points:
    135
    #2
    These are the custom fields send back by paypal so that u can process it.
     
    harrisunderwork, Nov 28, 2008 IP
  3. lucassoberano

    lucassoberano Peon

    Messages:
    29
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Hi!

    I have the same problem! Could you fix it?

    Yours,
    Lucas
     
    lucassoberano, Jan 26, 2010 IP
  4. feha

    feha Active Member

    Messages:
    1,005
    Likes Received:
    7
    Best Answers:
    0
    Trophy Points:
    80
    #4
    you can pass just one custom field value to IPN

    it is named "custom" ...
     
    feha, Jan 27, 2010 IP