Skip to content

ITwrx/laravel-shop-gateway-paypal

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PAYPAL GATEWAY (for ITwrx/laravel-shop)

PayPal Gateway solution for ITwrx/laravel-shop.

Gateways

This package comes with:

  • Direct Credit Card payments

  • PayPal Express payments

Contents

Installation

To install, add

"ITwrx/laravel-shop-gateway-paypal": "v1.0.3"

to the require block of your composer.json as well as adding

"repositories": [        
        {
            "type": "vcs",
            "url": "https://github.com/ITwrx/laravel-shop-gateway-paypal.git"
        }
    ]

to the bottom of composer.json. Or, if you already have the repositories block, just add the part in curly braces that represents this package's repo.

Then run composer update.

Then in your config/shop.php add

'paypal'            =>  Amsgames\LaravelShopGatewayPaypal\GatewayPayPal::class,
'paypalExpress'     =>  Amsgames\LaravelShopGatewayPaypal\GatewayPayPalExpress::class,

in the gateways array.

Configuration

Authentication

Set your PayPal app authentication credentials in config/services.php, like:

    'paypal' => [
        'client_id' => env('PAYPAL_CLIENT_ID', ''),
        'secret' => env('PAYPAL_SECRET', ''),
        'sandbox' => env('PAYPAL_SANDBOX', true),
    ],

NOTE: Change sandbox to false when going live.

Gateway Usage

Direct Credit Card

The only additional step needed for this to work is to add the credit card information before checkout and before order placement, like:

// (1) - Set gateway
Shop::setGateway('paypal');

// (2) - Add credit card for validation
Shop::gateway()->setCreditCard(
  $cartType   = 'visa',
  $cardNumber = '4111111111111111',
  $month      = '1',
  $year       = '2019',
  $cvv        = '123',
  $firstname  = 'John',
  $lastname   = 'Doe'
);

// (3) - Call checkout
if (!Shop::checkout()) {
  echo Shop::exception()->getMessage(); // echos: card validation error.
}

// (4) - Create order
$order = Shop::placeOrder();

// (5) - Review payment
if ($order->hasFailed) {

  echo Shop::exception()->getMessage(); // echos: payment error.

}

NOTE: If you are calling Shop::checkout() in a different controller or view than Shop::placeOrder, be sure to recall setCreditCard() before calling Shop::placeOrder() in your second controller. This package does not stores credit card data.

RECOMMENDATION: Use SSL to secure you checkout flow when dealing with credit cards.

PayPal Express

If you don't want to deal with credit card forms and SSL, you can us PayPal Express instead. PayPal Express handles the payment process outside your website and returns with the results.

Look at PayPal's documentation for more information about this process.

Configuration

PayPal will callback Laravel Shop and this gateway with the results. Laravel Shop will then redirect the customer to the route name set in config/shop.php and will pass by as parameter the Order Id. Set up this route before using this gateway.

    /*
    |--------------------------------------------------------------------------
    | Redirect route after callback
    |--------------------------------------------------------------------------
    |
    | Which route to call after the callback has been processed.
    |
    */
    'callback_redirect_route' => 'home',

Usage

// (1) - Set gateway
Shop::setGateway('paypalExpress');

// (2) - Call checkout / OPTIONAL
// You can call this to keep a standard flow
// Although this step for this gateway is not needed.
Shop::checkout();

// (3) - Create order
$order = Shop::placeOrder();

// (4) - Review order and redirect to payment
if ($order->isPending) {

  // PayPal URL to redirect to proceed with payment
  $approvalUrl = Shop::gateway()->getApprovalUrl();

  // Redirect to url
  return redirect($approvalUrl);
}

// (5) - Callback
// You don't have to do anything.
// Laravel Shop will handle the callback and redirect the customer to the configured route.

License

Amsgames\laravel-shop-gateway-paypal is free software distributed under the terms of the MIT license. Any changes in this fork (ITwrx\laravel-shop-gateway-paypal) are Free Software released under the AGPL.

Additional Information

This package uses the official PayPal PHP SDK.

About

PayPal Gateway for Laravel Shop.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%