/    Sign up×
Community /Pin to ProfileBookmark

Paypal IPN : Custom Fields ?

I’m using the Paypal Integration class my Micah Carrick from [URL=”http://www.micahcarrick.com/04-19-2005/php-paypal-ipn-integration-class.html”]here[/URL]

However, i’m foxed as to how to update my database about user information in the validate_ipn() part of the code.

I’m looking to add the following fields to my database, am i doing anything wrong ?

[CODE]<?php

/* PHP Paypal IPN Integration Class Demonstration File
* 4.16.2005 – Micah Carrick, [email protected]
*
* This file demonstrates the usage of paypal.class.php, a class designed
* to aid in the interfacing between your website, paypal, and the instant
* payment notification (IPN) interface. This single file serves as 4
* virtual pages depending on the “action” varialble passed in the URL. It’s
* the processing page which processes form data being submitted to paypal, it
* is the page paypal returns a user to upon success, it’s the page paypal
* returns a user to upon canceling an order, and finally, it’s the page that
* handles the IPN request from Paypal.
*
* I tried to comment this file, aswell as the acutall class file, as well as
* I possibly could. Please email me with questions, comments, and suggestions.
* See the header of paypal.class.php for additional resources and information.
*/

// Setup class
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’;

switch ($_GET[‘action’]) {

case ‘process’: // Process and order…

// 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(‘business’, ‘[email protected]’);
$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’, ‘Paypal Test Transaction’);

[COLOR=”Blue”] $p->add_field(‘xyz’, “$_POST[xyz]”);
$p->add_field(‘abc’, “$_POST[abc]”);[/COLOR]

$p->add_field(‘amount’, 600);

$p->submit_paypal_post(); // submit the fields to paypal
$p->dump_fields(); // for debugging, output a table of all the fields

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.

echo “<html><head><title>Success</title></head><body><h3>Thank you for your order.</h3>”;
foreach ($_POST as $key => $value) { echo “$key: $value<br>”; }
echo “</body></html>”;

// 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.

echo “<html><head><title>Canceled</title></head><body><h3>The order was canceled.</h3>”;
echo “</body></html>”;

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.

[COLOR=”Blue”] include(‘./config.php’);

$field1 = $p->ipn_data[‘xyz’];
$field2 = $p->ipn_data[‘abc’];

mysql_query(“insert into mytable(xyz,abc) values(‘$field1′,’$field1’)”);[/COLOR]

}

}

?>[/CODE]

to post a comment
PHP

0Be the first to comment 😎

×

Success!

Help @WarDoGG spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.15,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...