PayPal Integration in Laravel 7/6 Example
Hi dev,
In this tutorial, i would like to guide you step by step laravel 7 paypal integration and laravel 6 paypal integration example. we can easily integrate paypal payment gateway in laravel 7/6. i written laravel 7/6 paypal integration so your user can easily payment vie paypal account and credit card information.
we are using integrate paypal api using srmklive laravel paypal package. srmklive/laravel-paypal package provide methods of paypal code api. we will use express checkout method in laravel 7/6 application.
As we know Paypal payment gateway is a more popular gateway in web development. almost client or people prefer to use paypal payment gateway for money transfer in his website. Paypal is a user friendly gateway to transfer word wide.
In this tutorial, we will use srmklive package for laravel paypal integrate in laravel 6. you just need to follow few steps to getting 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 bellow command and get fresh Laravel project.
composer create-project --prefer-dist laravel/laravel blog
Step 2: Install Composer Package
Now we require to install srmklive/paypal package for paypal integration, that way we can use it's method. So Open your terminal and run bellow command.
composer require srmklive/paypal
Now open config/app.php file and add service provider and aliase.
config/app.php
'providers' => [
....
Srmklive\PayPal\Providers\PayPalServiceProvider::class
]
....
We can also custom changes on srmklive/paypal package, so if you also want to changes then you can fire bellow command and get config file in config/paypal.php.
php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider"
You can view paypal.php file like as bellow:
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 resource route for paypal payment gateway. so open your "routes/web.php" file and add 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 new controller as PayPalController. So run bellow command and create new controller. bellow controller for create with some methods.
php artisan make:controller PayPalController
After bellow command you will find 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' => 'ItSolutionStuff.com',
'price' => 100,
'desc' => 'Description for ItSolutionStuff.com',
'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 welcome.blade.php file. in this file we will put one button for 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 - ItSolutionStuff.com</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 - ItSolutionStuff.com</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 value like paypal username, secret and certificate key in .env file.
.env
PAYPAL_MODE=sandbox
PAYPAL_SANDBOX_API_USERNAME=sb-e2n47..
PAYPAL_SANDBOX_API_PASSWORD=XKCGW...
PAYPAL_SANDBOX_API_SECRET=A0EXIz....
PAYPAL_CURRENCY=INR
PAYPAL_SANDBOX_API_CERTIFICATE=
You can see bellow screen shot for getting above details:
Now we are ready to run our this application example with laravel 6 so run bellow command for quick run:
php artisan serve
Now you can open bellow URL on your browser:
http://localhost:8000/
You can download code from git: Download Code from Github
I hope it can help you....
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Laravel 7/6 Import Export Excel & CSV File Tutorial
- Laravel 7/6 Cron Job Task Scheduling Tutorial
- Laravel 7/6 REST API with Passport Tutorial
- Laravel Create Zip File and Download Example
- Laravel 7/6 Ajax CRUD Tutorial
- Laravel 7/6 Resize Image Before Upload Example
- Laravel 6 Generate PDF File Tutorial
- Laravel 6 Authentication Tutorial
- Laravel 6 CRUD Application Tutorial