From: Jim R. <jim...@go...> - 2007-02-22 13:30:18
|
Hi I have downloaded some sample code written in perl from the PayPal site, but it appears to handle the POSTed parameters directly rather like in CGI perl. I use mod_perl2 and Apache2 code. Does anyone have a copy of this code already converted for Mason2 / mod_perl2 / Apache2? Jim Rey The free code provided follows: #!/usr/bin/perl #(requires LWP::UserAgent) # read 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','http://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 $item_name = $variable{'item_name'}; $item_number = $variable{'item_number'}; $payment_status = $variable{'payment_status'}; $payment_amount = $variable{'mc_gross'}; $payment_currency = $variable{'mc_currency'}; $txn_id = $variable{'txn_id'}; $receiver_email = $variable{'receiver_email'}; $payer_email = $variable{'payer_email'}; if ($res->is_error) { # HTTP error } elsif ($res->content eq 'VERIFIED') { # check the $payment_status=Completed # check that $txn_id has not been previously processed # check that $receiver_email is your Primary PayPal email # check that $payment_amount/$payment_currency are correct # process payment } elsif ($res->content eq 'INVALID') { # log for manual investigation } else { # error } print "content-type: text/plain\n\n"; -- Jim Rey 48 Laburnum Park Bradshaw Bolton BL2 3BU United Kingdom Tel: 01204 593 222 Mob: 07816 751 874 |