NAME
WebService::PayPal::NVP - PayPal NVP API
DESCRIPTION
A pure object oriented interface to PayPal's NVP API (Name-Value Pair).
A lot of the logic in this module was taken from Business::PayPal::NVP.
I re-wrote it because it wasn't working with Catalyst adaptors and I
couldn't save instances of it in Moose-type accessors. Otherwise it
worked fine. So if you don't need that kind of support you should visit
Business::PayPal::NVP!. Currently supports "do_direct_payment",
"do_express_checkout_payment", "get_express_checkout_details" and
"set_express_checkout". Another difference with this module compared to
Business::PayPal::NVP is that the keys may be passed as lowercase. Also,
a response will return a WebService::PayPal::NVP::Response object where
the response values are methods. Timestamps will automatically be
converted to DateTime objects for your convenience.
SYNTAX
my $nvp = WebService::PayPal::NVP->new(
user => 'user.tld'
pwd => 'xxx',
sig => 'xxxxxxx',
branch => 'sandbox',
);
my $res = $nvp->set_express_checkout({
DESC => 'Payment for something cool',
AMT => 25.00,
CURRENCYCODE => 'GBP',
PAYMENTACTION => 'Sale',
RETURNURL => "http://returnurl.tld",
CANCELURL => 'http//cancelurl.tld",
LANDINGPAGE => 'Login',
ADDOVERRIDE => 1,
SHIPTONAME => "Customer Name",
SHIPTOSTREET => "7 Customer Street",
SHIPTOSTREET2 => "",
SHIPTOCITY => "Town",
SHIPTOZIP => "Postcode",
SHIPTOEMAIL => "customer\@example.com",
SHIPTOCOUNTRYCODE => 'GB',
});
if ($res->success) {
# timestamps turned into DateTime objects
say "Response received at "
. $res->timestamp->dmy . " "
. $res->timestamp->hms(':');
say $res->token;
for my $arg ($res->args) {
if ($res->has_arg($arg)) {
say "$arg => " . $res->$arg;
}
}
# get a redirect uri to paypal express checkout
# the Response object will automatically detect if you have
# live or sandbox and return the appropriate url for you
if (my $redirect_user_to = $res->express_checkout_uri) {
$web_framework->redirect( $redirect_user_to );
}
}
else {
say $_
for @{$res->errors};
}
AUTHOR
Brad Haywood <brad@geeksware.com>
CREDITS
A lot of this module was taken from Business::PayPal::NVP by Scott
Wiersdorf. It was only rewritten in order to work properly in
Catalyst::Model::Adaptor.
LICENSE
You may distribute this code under the same terms as Perl itself.