Hi guys!
I'm going to use paypal with my site, and they have a cool "instant
notification" feature which sends, to a page I preassign, information
about a transaction as it happens. My script is supposed to:
a) receive this information (as a "post")
b) send it back to them with a sort of "is this really coming from
you?" message
c) get a confirmation from them, "yes, this came from us"
d) take the post and insert it into my database or whatever else I'd
like to do with it.
They have provided a perl sample script (see below).
Mostly I'm just trying to figure out how to replicate the whole
"receiving", "sending", and "receiving again" thing in PHP. This is
especially tricky since I apparently can't test my work without
actually going through a transaction on paypal (and spending money).
I sorta have to get it right the first time.
Anyone done this before?
Thanks again!
Sondra
sample perl script:
# read the post from PayPal system and add 'cmd'
read (STDIN, $query, $ENV{'CONTENT_LENGTH'});
$query .= '&cmd=_notify-validate';
# post back to PayPal system to validate
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$req = new HTTP::Request 'POST','https://www.paypal.com/cgi-bin/webscr';
$req->content_type('application/x-www-form-urlencoded');
$req->content($query);
$res = $ua->request($req);
# split posted variables into pairs
@pairs = split(/&/, $query);
$count = 0;
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$variable{$name} = $value;
$count++;
}
# assign posted variables to local variables
$receiver_email = $variable{'receiver_email'};
$item_name = $variable{'item_name'};
$item_number = $variable{'item_number'};
$custom = $variable{'custom'};
$payment_status = $variable{'payment_status'};
$payment_date = $variable{'payment_date'};
$payment_gross = $variable{'payment_gross'};
$payment_fee = $variable{'payment_fee'};
$txn_id = $variable{'txn_id'};
$first_name = $variable{'first_name'};
$last_name = $variable{'last_name'};
$address_street = $variable{'address_street'};
$address_city = $variable{'address_city'};
$address_state = $variable{'address_state'};
$address_zip = $variable{'address_zip'};
$address_country = $variable{'address_country'};
$payer_email = $variable{'payer_email'};
if ($res->content eq 'VERIFIED') {
# check transaction for uniqueness
# process payment
}
elsif ($res->content eq 'INVALID') {
# possible fraud
}
else {
# error
}
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]