NAME

Business::PayPal::API::ExpressCheckout - PayPal Express Checkout API

VERSION

version 0.77

SYNOPSIS

use Business::PayPal::API::ExpressCheckout;

## see Business::PayPal::API documentation for parameters
my $pp = Business::PayPal::API::ExpressCheckout->new( ... );

my %resp = $pp->SetExpressCheckout
             ( OrderTotal => '55.43',   ## defaults to USD
               ReturnURL  => 'http://site.tld/return.html',
               CancelURL  => 'http://site.tld/cancellation.html', );

... time passes, buyer validates the token with PayPal ...

my %details = $pp->GetExpressCheckoutDetails($resp{Token});

## now ask PayPal to xfer the money
my %payinfo = $pp->DoExpressCheckoutPayment( Token => $details{Token},
                                             PaymentAction => 'Sale',
                                             PayerID => $details{PayerID},
                                             OrderTotal => '55.43' );

DESCRIPTION

Business::PayPal::API::ExpressCheckout implements PayPal's Express Checkout API using SOAP::Lite to make direct API calls to PayPal's SOAP API server. It also implements support for testing via PayPal's sandbox. Please see Business::PayPal::API for details on using the PayPal sandbox.

SetExpressCheckout

Implements PayPal's "Website Payment Pro" SetExpressCheckout API call. Supported parameters include:

Token
OrderTotal
currencyID
MaxAmount
OrderDescription
Custom
InvoiceID
ReturnURL
CancelURL
Address
ReqConfirmShipping
NoShipping
AddressOverride
LocaleCode
PageStyle
'cpp-header-image'
'cpp-header-border-color'
'cpp-header-back-color'
'cpp-payflow-color'
PaymentAction
BuyerEmail
BillingType
BillingAgreementDescription
PaymentType
BillingAgreementCustom

as described in the PayPal "Web Services API Reference" document. The default currency setting is 'USD' if not otherwise specified.

Returns a hash containing a 'Token' key, whose value represents the PayPal transaction token.

Required fields:

OrderTotal, ReturnURL, CancelURL.

  my %resp = $pp->SetExpressCheckout();
  my $token = $resp{Token};

Example (courtesy Ollie Ready):

my $address = {
      Name            =>      'Some Customer',
      Street1         =>      '888 Test St.',
      Street2         =>      'Suite 9',
      CityName        =>      'San Diego',
      StateOrProvince =>      'CA',
      PostalCode      =>      '92111',
      Country         =>      'US',
      Phone           =>      '123-123-1234',
};

my %response = $pp->SetExpressCheckout(
      OrderTotal      =>      '11.01',
      ReturnURL       =>      '<![CDATA[http://example.com/p?cmd=checkout]]>',
      CancelURL       =>      'http://example.com',
      PaymentAction   =>      'Authorization',
      AddressOverride =>      1,
      Address         =>      $address,
);

GetExpressCheckoutDetails

Implements PayPal's WPP SetExpressCheckout API call. Supported parameters include:

Token

as described in the PayPal "Web Services API Reference" document. This is the same token you received from SetExpressCheckout.

Returns a hash with the following keys:

Token
Custom
InvoiceID
ContactPhone
Payer
PayerID
PayerStatus
FirstName
LastName
PayerBusiness
AddressStatus
Name
Street1
Street2
CityName
StateOrProvince
PostalCode
Country

Required fields:

Token

DoExpressCheckoutPayment

Implements PayPal's WPP SetExpressCheckout API call. Supported parameters include:

Token
PaymentAction (defaults to 'Sale' if not supplied)
PayerID
currencyID (defaults to 'USD' if not supplied)

OrderTotal
OrderDescription
ItemTotal
ShippingTotal
HandlingTotal
TaxTotal
Custom
InvoiceID
ButtonSource
NotifyURL

ST_Name
ST_Street1
ST_Street2
ST_CityName
ST_StateOrProvince
ST_Country
ST_PostalCode

PDI_Name
PDI_Amount
PDI_Number
PDI_Quantity
PDI_Tax

as described in the PayPal "Web Services API Reference" document.

Returns a hash with the following keys:

Token
TransactionID
TransactionType
PaymentType
PaymentDate
GrossAmount
FeeAmount
SettleAmount
TaxAmount
ExchangeRate
PaymentStatus
PendingReason
BillingAgreementID (if BillingType 'MerchantInitiatedBilling'
                    was specified during SetExpressCheckout)

Required fields:

Token, PayerID, OrderTotal

ERROR HANDLING

See the ERROR HANDLING section of Business::PayPal::API for information on handling errors.

EXAMPLES

Andy Spiegl <paypalcheckout.Spiegl@kascada.com> has kindly donated some example code (in German) which may be found in the eg directory of this archive. Additional code examples may be found in the t test directory.

EXPORT

None by default.

SEE ALSO

SOAP::Lite, Business::PayPal::API, https://www.paypal.com/IntegrationCenter/ic_expresscheckout.html, https://developer.paypal.com/en_US/pdf/PP_APIReference.pdf

AUTHORS

  • Scott Wiersdorf <scott@perlcode.org>

  • Danny Hembree <danny@dynamical.org>

  • Bradley M. Kuhn <bkuhn@ebb.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2006-2017 by Scott Wiersdorf, Danny Hembree, Bradley M. Kuhn.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.