SYNOPSIS

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

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

  my %resp = $pp->SetExpressCheckout
               ( OrderTotal => '55.43',   ## defaults to USD
                 ReturnURL  => 'http://site.tld/return.html',
                 CancelURL  => 'http://site.tld/canceltation.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 \s-1API\s0 using SOAP::Lite to make direct \s-1API\s0 calls to PayPal's \s-1SOAP\s0 \s-1API\s0 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 \*(L"Website Payment Pro\*(R" SetExpressCheckout \s-1API\s0 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 \*(L"Web Services \s-1API\s0 Reference\*(R" document. The default currency setting is '\s-1USD\s0' 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 \s-1WPP\s0 SetExpressCheckout \s-1API\s0 call. Supported parameters include:

Token

as described in the PayPal \*(L"Web Services \s-1API\s0 Reference\*(R" 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 \s-1WPP\s0 SetExpressCheckout \s-1API\s0 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 \*(L"Web Services \s-1API\s0 Reference\*(R" 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

\s-1ERROR\s0 \s-1HANDLING\s0

See the \s-1ERROR\s0 \s-1HANDLING\s0 section of Business::PayPal::API for information on handling errors.

EXAMPLES

Andy Spiegl <[email protected]> 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.

\s-1EXPORT\s0

None by default.

RELATED TO Business::PayPal::API::ExpressCheckout…

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

AUTHOR

Scott Wiersdorf, <[email protected]>

COPYRIGHT AND LICENSE

Copyright (C) 2006 by Scott Wiersdorf

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.