|
NAMEBusiness::PayPal - Perl extension for automating PayPal transactionsABSTRACTBusiness::PayPal makes the automation of PayPal transactions as simple as doing credit card transactions through a regular processor. It includes methods for creating PayPal buttons and for validating the Instant Payment Notification that is sent when PayPal processes a payment.SYNOPSISTo generate a PayPal button for use on your site Include something like the following in your CGIuse Business::PayPal; my $paypal = Business::PayPal->new; my $button = $paypal->button( business => 'dr@dursec.com', item_name => 'CanSecWest Registration Example', return => 'http://www.cansecwest.com/return.cgi', cancel_return => 'http://www.cansecwest.com/cancel.cgi', amount => '1600.00', quantity => 1, notify_url => http://www.cansecwest.com/ipn.cgi ); my $id = $paypal->id; Store $id somewhere so we can get it back again later Store current context with $id. Print button to the browser. Note, button is an HTML form, already enclosed in <form></form> tags To validate the Instant Payment Notification from PayPal for the button used above include something like the following in your 'notify_url' CGI. use CGI; my $query = CGI->new; my %query = $query->Vars; my $id = $query{custom}; my $paypal = Business::PayPal->new(id => $id); my ($txnstatus, $reason) = $paypal->ipnvalidate(\%query); die "PayPal failed: $reason" unless $txnstatus; my $money = $query{payment_gross}; my $paystatus = $query{payment_status}; Check if paystatus eq 'Completed'. Check if $money is the amount you expected. Save payment status information to store as $id. To tell the user if their payment succeeded or not, use something like the following in the CGI pointed to by the 'return' parameter in your PayPal button. use CGI; my $query = CGI->new; my $id = $query{custom}; #get payment status from store for $id #return payment status to customer In order to use the sandbox provided by PayPal, you can provide the address of the sandbox in the constructor: my $pp = Business::PayPal->new( address => 'https://www.sandbox.paypal.com/cgi-bin/webscr' ); DESCRIPTIONnew()Creates a new Business::PayPal object, it can take the following parameters:
id()Returns the id for the Business::PayPal object.button()Returns the HTML for a PayPal button. It takes a large number of parameters, which control the look and function of the button, some of which are required and some of which have defaults. They are as follows:
ipnvalidate()Takes a reference to a hash of name value pairs, such as from a CGI query object, which should contain all the name value pairs which have been posted to the script by PayPal's Instant Payment Notification posts that data back to PayPal, checking if the ssl certificate matches, and returns success or failure, and the reason.postpaypal()This method should not normally be used unless you need to test, or if you are overriding the behaviour of ipnvalidate. It takes a reference to a hash containing the query, posts to PayPal with the data, and returns success or failure, as well as PayPal's response.MAINTAINERGabor Szabo, <http://szabgab.com/>, <http://perlmaven.com/>phred, <fred@redhotpenguin.com> AUTHORmock, <mock@obscurity.org>SEE ALSOCGI, perl, Apache::Session.Explanation of the fields: <http://www.paypalobjects.com/en_US/ebook/subscriptions/html.html> See also in the pdf here: <https://www.paypal.com/cgi-bin/webscr?cmd=p/xcl/rec/subscr-manual-outside> LICENSECopyright (c) 2010, phred <fred@redhotpenguin.com>. All rights reserved.Copyright (c) 2002, mock <mock@obscurity.org>. All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Visit the GSP FreeBSD Man Page Interface. |