2017 © Pedro Peláez
 

cakephp-plugin cakephp-paypal

PayPal plugin

image

robmcvey/cakephp-paypal

PayPal plugin

  • Thursday, November 5, 2015
  • by ajibarra
  • Repository
  • 14 Watchers
  • 65 Stars
  • 37 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 45 Forks
  • 9 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Paypal Plugin for CakePHP 2.x

Build Status, (*1)

A CakePHP plugin to interact with Paypal's "classic" and new REST APIs., (*2)

Requirements

  • CakePHP 2.x
  • A PayPal Website Payments Pro account

Installation

[Manual], (*3)

[GIT Submodule], (*4)

In your app directory type:, (*5)

git submodule add -b master git://github.com/robmcvey/cakephp-paypal.git Plugin/Paypal
git submodule init
git submodule update

[GIT Clone], (*6)

In your Plugin directory type:, (*7)

git clone -b master git://github.com/robmcvey/cakephp-paypal.git Paypal

Usage

Make sure the plugin is loaded in app/Config/bootstrap.php., (*8)

CakePlugin::load('Paypal');

PayPal Classic Methods

Create an instance of the class with your PayPal credentials. For testing purposes, ensure sandboxMode is set to true., (*9)

App::uses('Paypal', 'Paypal.Lib');

$this->Paypal = new Paypal(array(
    'sandboxMode' => true,
    'nvpUsername' => '{username}',
    'nvpPassword' => '{password}',
    'nvpSignature' => '{signature}'
));

SetExpressCheckout

Create an order(s) in the following format. setExpressCheckout will return a string URL to redirect the customer to., (*10)

$order = array(
    'description' => 'Your purchase with Acme clothes store',
    'currency' => 'GBP',
    'return' => 'https://www.my-amazing-clothes-store.com/review-paypal.php',
    'cancel' => 'https://www.my-amazing-clothes-store.com/checkout.php',
    'custom' => 'bingbong',
    'shipping' => '4.50',
    'items' => array(
        0 => array(
            'name' => 'Blue shoes',
            'description' => 'A pair of really great blue shoes',
            'tax' => 2.00,
            'subtotal' => 8.00,
            'qty' => 1,
        ),
        1 => array(
            'name' => 'Red trousers',
            'description' => 'Tight pair of red pants, look good with a hat.',
            'tax' => 1.50,
            'subtotal' => 6.00,
            'qty' => 3,
        ),
    )
);
 try {
    $this->Paypal->setExpressCheckout($order);
} catch (Exception $e) {
    // $e->getMessage();
}   

GetExpressCheckoutDetails

Once the customer has returned to your site (see return URL above) you can request their details with the token returned from the setExpressCheckout method., (*11)

try {
    $this->Paypal->getExpressCheckoutDetails($token);
} catch (Exception $e) {
    // $e->getMessage();
}       

DoExpressCheckoutPayment

Complete the transaction using the same order details. The $token and $payerId will be returned from the setExpressCheckout method., (*12)

This method may throw a PaypalRedirectException if a user's funding method (the credit card or bank account associated with their PayPal account) needs updating. The exception message will contain a URL to redirect the user to where they will be prompted to update their funding method., (*13)

$order = array(
    'description' => 'Your purchase with Acme clothes store',
    'currency' => 'GBP',
    'return' => 'https://www.my-amazing-clothes-store.com/review-paypal.php',
    'cancel' => 'https://www.my-amazing-clothes-store.com/checkout.php',
    'custom' => 'bingbong',
    'shipping' => '4.50',
    'items' => array(
        0 => array(
            'name' => 'Blue shoes',
            'description' => 'A pair of really great blue shoes',
            'tax' => 2.00,
            'subtotal' => 8.00,
            'qty' => 1,
        ),
        1 => array(
            'name' => 'Red trousers',
            'description' => 'Tight pair of red pants, look good with a hat.',
            'tax' => 1.50,
            'subtotal' => 6.00,
            'qty' => 3,
        ),
    )
);

try {
    $this->Paypal->doExpressCheckoutPayment($order, $token, $payerId);  
} catch (PaypalRedirectException $e) {
    $this->redirect($e->getMessage());
} catch (Exception $e) {
    // $e->getMessage();
}   

DoDirectPayment

Charge a credit card. Ensure you are using SSL and following PCI compliance guidelines., (*14)

$payment = array(
    'amount' => 30.00,
    'card' => '4008 0687 0641 8697', // This is a sandbox CC
    'expiry' => array(
        'M' => '2',
        'Y' => '2016',
    ),
    'cvv' => '321',
    'currency' => 'USD' // Defaults to GBP if not provided
);

try {
    $this->Paypal->doDirectPayment($payment);
} catch (Exception $e) {
    // $e->getMessage();
}   

RefundTransaction

Refund a transaction. Transactions can only be refunded up to 60 days after the completion date., (*15)

$refund = array(
    'transactionId' => '96L684679W100181R'  // Original PayPal Transcation ID
    'type' => 'Partial',                    // Full, Partial, ExternalDispute, Other
    'amount' => 30.00,                      // Amount to refund, only required if Refund Type is Partial
    'note' => 'Refund because we are nice', // Optional note to customer
    'reference' => 'abc123',                // Optional internal reference
    'currency' => 'USD'                     // Defaults to GBP if not provided
);

try {
    $this->Paypal->refundTransaction($refund);
} catch (Exception $e) {
    // $e->getMessage();
}   

PayPal REST Methods

Create an instance of the class with your PayPal credentials, including your client ID and secret key For testing purposes, ensure sandboxMode is set to true., (*16)

App::uses('Paypal', 'Paypal.Lib');

$this->Paypal = new Paypal(array(
    'sandboxMode' => true,
    'nvpUsername' => '{username}',
    'nvpPassword' => '{password}',
    'nvpSignature' => '{signature}',
    'oAuthClientId' => '{client ID}',
    'oAuthSecret' => '{secret key}',
));

Store card in vault

You can store a customer's card in the vault, in return for a token which can be used for future transactions., (*17)

$creditCard = array(
    'payer_id' => 186,
    'type' => 'visa',
    'card' => 'xxxxxxxxxxxx8697',
    'cvv2' => 232,
    'expiry' => array(
        'M' => '2',
        'Y' => '2018',
    ),
    'first_name' => 'Joe',
    'last_name' => 'Shopper'
);

try {
    $this->Paypal->storeCreditCard($creditCard);
} catch (Exception $e) {
    // $e->getMessage();
}   

Charge a stored card

Once a card is stored in the vault, you can make a charge(s) on that card using the token issued when it was first stored., (*18)

$cardPayment = array(
    'intent' => 'sale',
    'payer' => array(
        'payment_method' => 'credit_card',
        'funding_instruments' => array(
            0 => array(
                'credit_card_token' => array(
                    'credit_card_id' => 'CARD-39N7854321M2DDC2',
                    'payer_id' => '186'
                )
            )
        )
    ),
    'transactions' => array(
        0 => array(
            'amount' => array(
                'total' => '0.60',
                'currency' => 'GBP',
                "details" => array(
                    "subtotal" => "0.50",
                    "tax" => "0.10",
                    "shipping" => "0.00"
                )
            ),
            'description' => 'This is test payment'
        )
    )
);

try {
    $this->Paypal->chargeStoredCard($cardPayment);
} catch (Exception $e) {
    // $e->getMessage();
}   

PayPal Adaptive Payments

Create an instance of the class with your PayPal credentials, including your Adaptive App ID and Adaptive username. For testing purposes, ensure sandboxMode is set to true., (*19)

App::uses('Paypal', 'Paypal.Lib');

$this->Paypal = new Paypal(array(
    'sandboxMode' => true,
    'nvpUsername' => '{username}',
    'nvpPassword' => '{password}',
    'nvpSignature' => '{signature}',
    'adaptiveAppID' => '{adaptive app id}',
    'adaptiveUserID' => '{adaptive user id}'
));

GetVerifiedStatus

The GetVerifiedStatus API operation lets you determine whether the specified PayPal account's status is verified or unverified., (*20)

```php try { $this->Paypal->getVerifiedStatus('hello@gmail.com') } catch (Exception $e) { // $e->getMessage(); }
````, (*21)

The Versions

05/11 2015

dev-master

9999999-dev

PayPal plugin

  Sources   Download

The Requires

  • php >=5.2.8
  • ext-mcrypt *

 

The Development Requires

13/05 2015

dev-version-2.0

dev-version-2.0

PayPal payments plugin for CakePHP 3.x

  Sources   Download

The Requires

 

The Development Requires

07/05 2015

1.0.3

1.0.3.0

PayPal plugin

  Sources   Download

The Requires

  • php >=5.2.8
  • ext-mcrypt *

 

The Development Requires

23/04 2015

dev-DoCapture

dev-DoCapture

PayPal plugin

  Sources   Download

The Requires

  • php >=5.2.8
  • ext-mcrypt *

 

The Development Requires

13/04 2015

dev-redirectError

dev-redirectError

PayPal plugin

  Sources   Download

The Requires

  • php >=5.2.8
  • ext-mcrypt *

 

The Development Requires