Laravel with Packages | PayPal Integration in Laravel 7/6 Example

Raviya Technical
4 min readAug 24, 2022

In this tutorial, I would like to guide you step by step through laravel 7 PayPal integration and laravel 6 PayPal integration examples. we can easily integrate the PayPal payment gateway in laravel 7/6. I wrote laravel 7/6 PayPal integration so your user can easily payments via PayPal account and credit card information.

we are using integrate PayPal API using the srmklive laravel PayPal package. skive/laravel-PayPal package provides methods of PayPal code API. we will use the express checkout method in the laravel 7/6 application.

As we know Paypal payment gateway is a more popular gateway in web development. almost clients or people prefer to use the PayPal payment gateway for money transfers on his website. Paypal is a user-friendly gateway to transfer word wide.

In this tutorial, we will use srmklive package for laravel PayPal integrate into laravel 6. you just need to follow a few steps to get done payment integration in PHP laravel 6.

Step 1: Install Laravel 7/6

We are going from scratch so, If you haven’t installed laravel in your system then you can run the bellow command and get a fresh Laravel project.

composer create-project --prefer-dist laravel/laravel blog

Step 2: Install Composer Package

Now we require to install the srmklive/PayPal package for PayPal integration, that way we can use its method. So Open your terminal and run the below command.

composer require srmklive/paypal

Now open the config/app.php file and add the service provider and alias.

config/app.php

'providers' => [....Srmklive\PayPal\Providers\PayPalServiceProvider::class]....

We can also custom changes on the srmklive/PayPal package, so if you also want to changes then you can fire the bellow command and get the config file in config/paypal.php.

php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider"

You can view the paypal.php file below:

config/paypal.php

<?php/*** PayPal Setting & API Credentials* Created by Raza Mehdi .*/return ['mode'    => env('PAYPAL_MODE', 'sandbox')'sandbox' => ['username'    => env('PAYPAL_SANDBOX_API_USERNAME', ''),'password'    => env('PAYPAL_SANDBOX_API_PASSWORD', ''),'secret'      => env('PAYPAL_SANDBOX_API_SECRET', ''),'certificate' => env('PAYPAL_SANDBOX_API_CERTIFICATE', ''),'app_id'      => 'APP-80W284485P519543T',],'live' => ['username'    => env('PAYPAL_LIVE_API_USERNAME', ''),'password'    => env('PAYPAL_LIVE_API_PASSWORD', ''),'secret'      => env('PAYPAL_LIVE_API_SECRET', ''),'certificate' => env('PAYPAL_LIVE_API_CERTIFICATE', ''),'app_id'      => '',],'payment_action' => 'Sale','currency'       => env('PAYPAL_CURRENCY', 'USD'),'billing_type'   => 'MerchantInitiatedBilling','notify_url'     => '','locale'         => '','validate_ssl'   => false,];

Step 3: Add Routes

Here, we need to add a resource route for the PayPal payment gateway. so open your “routes/web.php” file and add the following route.

routes/web.php

Route::get('payment', 'PayPalController@payment')->name('payment');
Route::get('cancel', 'PayPalController@cancel')->name('payment.cancel');
Route::get('payment/success', 'PayPalController@success')->name('payment.success');

Step 4: Create Controller

In this step, now we should create a new controller as PayPalController. So run the below command and create a new controller. bellow controller for creating with some methods.

php artisan make:controller PayPalController

After the bellow command, you will find a new file in this path “app/Http/Controllers/PayPalController.php”.

app/Http/Controllers/PayPalController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Srmklive\PayPal\Services\ExpressCheckout;

class PayPalController extends Controller
{
/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Http\Response
*/
public function payment()
{
$data = [];
$data['items'] = [
[
'name' => 'raviyatechnical',
'price' => 100,
'desc' => 'Description for raviyatechnical',
'qty' => 1
]
];

$data['invoice_id'] = 1;
$data['invoice_description'] = "Order #{$data['invoice_id']} Invoice";
$data['return_url'] = route('payment.success');
$data['cancel_url'] = route('payment.cancel');
$data['total'] = 100;

$provider = new ExpressCheckout;

$response = $provider->setExpressCheckout($data);

$response = $provider->setExpressCheckout($data, true);

return redirect($response['paypal_link']);
}

/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Http\Response
*/
public function cancel()
{
dd('Your payment is canceled. You can create cancel page here.');
}

/**
* Responds with a welcome message with instructions
*
* @return \Illuminate\Http\Response
*/
public function success(Request $request)
{
$response = $provider->getExpressCheckoutDetails($request->token);

if (in_array(strtoupper($response['ACK']), ['SUCCESS', 'SUCCESSWITHWARNING'])) {
dd('Your payment was successfully. You can create success page here.');
}

dd('Something is wrong.');
}
}

Step 5: Create View File

In this step, we need to update the welcome.blade.php file. in this file, we will put one button for the PayPal payment gateway. so let’s put bellow code:

resources/views/products/welcome.blade.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Laravel 6 PayPal Integration Tutorial - raviyatechnical</title>

<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha256-YLGeXaapI0/5IgZopewRJcFXomhRMlYYjugPLSyNjTY=" crossorigin="anonymous" />

<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.content {
margin-top: 100px;
text-align: center;
}
</style>
</head>
<body>
<div class="flex-center position-ref full-height">

<div class="content">
<h1>Laravel 6 PayPal Integration Tutorial - raviyatechnical</h1>

<table border="0" cellpadding="10" cellspacing="0" align="center"><tr><td align="center"></td></tr><tr><td align="center"><a href="https://www.paypal.com/in/webapps/mpp/paypal-popup" title="How PayPal Works" onclick="javascript:window.open('https://www.paypal.com/in/webapps/mpp/paypal-popup','WIPaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=1060, height=700'); return false;"><img src="https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-200px.png" border="0" alt="PayPal Logo"></a></td></tr></table>

<a href="{{ route('payment') }}" class="btn btn-success">Pay $100 from Paypal</a>

</div>
</div>
</body>
</html>

Step 6: Add Configuration

In this step, we will set configuration values like PayPal username, secret and certificate key in the .env file.

.env

PAYPAL_MODE=sandboxPAYPAL_SANDBOX_API_USERNAME=sb-e2n47..PAYPAL_SANDBOX_API_PASSWORD=XKCGW...PAYPAL_SANDBOX_API_SECRET=A0EXIz....PAYPAL_CURRENCY=INRPAYPAL_SANDBOX_API_CERTIFICATE=

You can see the below screenshot for getting the above details:

Now we are ready to run this application example with laravel 6 so run the bellow command for a quick run:

php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/

I hope it can help you….

--

--