Dancer::Plugin::PaypalExpressRoutes
Version 0.12, April 2014
v 0.12: updated installation files
This is a Dancer interface for Business::PayPal::API::ExpressCheckout. It calls ExpressCheckout with the three requests involved in a transaction, and also makes available the customer data and transaction data returned in hashes from Paypal for possible use on a receipt page or logging.
Your config.yml would contain something like this:
plugins: PaypalExpressRoutes: pp_id: xxx pp_password: xxx pp_signature: xxx pp_returnurl: http://mysite.tld/paypalgetrequest pp_cancelurl: http://mysite.tld
Your site.pm would include:
use Dancer::Plugin::PaypalExpressRoutes;
and the following routes:
post '/paypalsetrequest' => sub { $pptotal = params->{'total_cost'}; # or your method ppsetrequest( $pptotal ); };
This will transfer the customer to the Paypal site. When he hits the 'confirm' button, Paypal will invoke the configured return url which will invoke the next route:
get '/paypalgetrequest' => sub { ppgetrequest(); return redirect '/paypalcheckout'; # or your preferred page };
The paypalcheckout page should include whatever data you want the customer to see before finalising the order. Optionally you may populate the page with the details hash returned from the previous request, eg [% details.FirstName %] and so on, as found in the ppgetrequest() sub above.
get '/paypalcheckout' => sub { template 'checkout/paypalcheckout', { $details = getppdetails(), # customer details # order details } };
The 'finalise order' button should then invoke the following route:
post '/paypaldorequest' => sub { my $ok = ppdorequest( $pp_order_total ); if ($ok eq 'success') { # complete order process return redirect '/paypalreceipt'; } else { # some sort of error message or page } return redirect '/checkout' if ! $ppresult{Token}; };
And this then invokes the final route to display the receipt:
get '/paypalreceipt' => sub { return template 'checkout/paypalreceipt', { $details = getppdetails(), # customer details # other details to display } };
getppdetails();
will access all customer data returned in the details hash from the 'ppgetrequest' upon the customer returning from Paypal
getppresult();
will access all the transaction data in the results hash returned from the 'ppdorequest' finalising the transaction.
Lyn St George, lyn@zolotek.net
Copyright Lyn St George
This module is free software and is published under the same terms as Perl itself.
See http://dev.perl.org/licenses/ for more information.
To install Dancer::Plugin::PaypalExpressRoutes, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Dancer::Plugin::PaypalExpressRoutes
CPAN shell
perl -MCPAN -e shell install Dancer::Plugin::PaypalExpressRoutes
For more information on module installation, please visit the detailed CPAN module installation guide.