---
name: "Business::PayPal::API::ExpressCheckout"
section: "3pm"
platform: "linux"
package: "libbusiness-paypal-api-perl"
version: "0.77-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Business::PayPal::API::ExpressCheckout"
---

# Business::PayPal::API::ExpressCheckout(3pm)

PayPal Express Checkout API

## 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.
