by paypal

PHP SDK for integrating with PayPal's Express Checkout / MassPay / Web Payments Pro APIs

214 Stars 170 Forks Last release: about 3 years ago (v3.12.0) Other 302 Commits 23 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

PayPal PHP Merchant SDK

The merchant SDK can be used for integrating with the Express Checkout, Mass Pay, Web Payments Pro APIs.

TLSv1.2 Update

The Payment Card Industry (PCI) Council has mandated that early versions of TLS be retired from service. All organizations that handle credit card information are required to comply with this standard. As part of this obligation, PayPal is updating its services to require TLS 1.2 for all HTTPS connections. At this time, PayPal will also require HTTP/1.1 for all connections. Click here for more information

A new

has been created to test if your server/machine handles TLSv1.2 connections. Please use
mode instead of
to verify. You can return back to
mode once you have verified. Please have a look at this Sample Configuration.


  • Because of the Poodle vulnerability, PayPal has disabled SSLv3.
  • To enable TLS encryption, the changes were made to PPHttpConfig.php in SDK Core to use a cipher list specific to TLS encryption.
     * Some default options for curl
     * These are typically overridden by PPConnectionManager
    public static $DEFAULT_CURL_OPTS = array(
        CURLOPT_TIMEOUT        => 60,   // maximum number of seconds to allow cURL functions to execute
        CURLOPT_USERAGENT      => 'PayPal-PHP-SDK',
        CURLOPT_HTTPHEADER     => array(),
  • There are two primary changes done to curl options:
    • CURLOPT_SSLVERSION is set to 1 . See here for more information
    • CURLOPTSSLCIPHER_LIST was set to TLSv1, See here for more information

All these changes are included in the recent release, along with many other bug fixes.


Please contact PayPal Technical Support for any live or account issues.


PayPal's PHP Merchant SDK requires

  • PHP 5.3 and above
  • curl/openssl PHP extensions

Running the sample

To run the bundled sample, first copy the samples folder to your web server root. You will then need to install the SDK as a dependency using composer (PHP V5.3+ only).

Using the SDK

To use the SDK,

  • Create a
    file with the following contents.
    "name": "me/shopping-cart-app",
    "require": {
  • Install the SDK as a dependency using
    . To download
    , follow installation instructions provided in Composer documentation.
  • Require
    in your application.
  • Choose how you would like to configure the SDK - You can either
    • Create a hashmap containing configuration parameters and pass it to the service object OR
    • Create a
      file and set the PPCONFIGPATH constant to point to the directory where this file exists.
  • Instantiate a service wrapper object and a request object as per your project's needs.
  • Invoke the appropriate method on the service object.

For example,

    // Sets config file path(if config file is used) and registers the classloader

// Array containing credentials and confiuration parameters. (not required if config file is used)
$config = array(
   'mode' => 'sandbox',
   'acct1.UserName' => '',
   'acct1.Password' => 'WX4WTU3S8MY44S7F'

// Create request details
$itemAmount = new BasicAmountType($currencyId, $amount);
$setECReqType = new SetExpressCheckoutRequestType();
$setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails;

// Create request
$setECReq = new SetExpressCheckoutReq();
$setECReq->SetExpressCheckoutRequest = $setECReqType;

// Perform request
$paypalService = new PayPalAPIInterfaceServiceService($config);
$setECResponse = $paypalService->SetExpressCheckout($setECReq);

// Check results
if(strtoupper($setECResponse->Ack) == 'SUCCESS') {
    // Success


The SDK provides multiple ways to authenticate your API call.

    $paypalService = new PayPalAPIInterfaceServiceService($config);

// Use the default account (the first account) configured in sdk_config.ini
$response = $paypalService->SetExpressCheckout($setECReq);

// Use a specific account configured in sdk_config.ini
$response = $paypalService->SetExpressCheckout($setECReq, '');

// Pass in a dynamically created API credential object
$cred = new PPCertificateCredential("username", "password", "path-to-pem-file");
$cred->setThirdPartyAuthorization(new PPTokenAuthorization("accessToken", "tokenSecret"));
$response = $paypalService->SetExpressCheckout($setECReq, $cred);

SDK Configuration

The SDK allows you to configure the following parameters-

  • Integration mode (sandbox / live)
  • (Multiple) API account credentials.
  • HTTP connection parameters
  • Logging

Dynamic configuration values can be set by passing a map of credential and config values (if config map is passed the config file is ignored)

    $config = array(
       'mode' => 'sandbox',
       'acct1.UserName' => '',
       'acct1.Password' => 'WX4WTU3S8MY44S7F'
    $service  = new PayPalAPIInterfaceServiceService($config); 

Alternatively, you can configure the SDK via the sdkconfig.ini file. ```php define('PPCONFIGPATH', '/directory/that/contains/sdkconfig.ini'); $service = new PayPalAPIInterfaceServiceService(); ```

You can refer full list of configuration parameters in wiki page.

Instant Payment Notification (IPN)

Please refer to the IPN-README in 'samples/IPN' directory.


  • API Reference -
  • If you need help using the SDK, a new feature that you need or have a issue to report, please visit

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.