How to integrate stripe payment gateway in Laravel 6 Applicaion

How to integrate stripe payment gateway in Laravel 6 Applicaion

In this article, you'll learn how to integrate stripe payment in your Laravel 6 applicaion.

What is stripe ?

Stripe is a one of the online payment processing company and it's provide too many online payment service like online card payment, online checkout payment service, online subscription base payment service etc...

We will share with you in this article how to integrate stripe payment integration in your Laravel 6 applicaion. it can be helped you in integration payment system in your Laravel application. Stripe is provice very easy payment integration payment API and also have large or rich documentation about API or integration any other services.

If you before never integrate Stripe payment gateway in your Laravel application then don't worry we will share with you all things here step by step and very easy way. so, you can understand all the things. so, let's start and following all the steps.

Into the github and packages.org many packages are available related stripe integration but we are here user cartalyst/stripe-laravel. it is one of the best package for integration stripe payment gatway in laravel.

In laravel 6 The package requires PHP 7.2 and follows the FIG standard PSR-1, PSR-2 and PSR-4 to ensure a high level of interoperability between shared PHP code.

Step - 1 Install package

First we need to install cartalyst/stripe-laravel package using run following command in your terminal. we need "cartalyst/stripe-laravel": "11.0.*" version for Laravel 6.

composer require "cartalyst/stripe-laravel": "11.0.*"

Step - 2 Set the Service Provider and Facade alias

After installing the package, open your Laravel config file located at config/app.php and add the following lines.

In the $providers array add the following service provider for this package.

Cartalyst\Stripe\Laravel\StripeServiceProvider::class,

In the $aliases array add the following facade for this package.

'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class,

Step - 3 Set the Api Key

SignIn/signUp in your stripe payment dashboard clicking on this link Stripe Dashboard. and get your APIs key first.

How to integrate stripe payment gateway integration in Laravel 6 App

Now you need to setup the Stripe API key, to do this open or create the config/services.php file, and add or update the 'stripe' array:

<?php

return [

    'stripe' => [
        'secret' => 'your-stripe-key-here',
    ],

];

Step - 4 Set the Api Version (optional)

This step is not necessary, but in case you need to use a previous version of Stripe you can do same process as above and add a 'version' key on the array:

<?php

return [

    'stripe' => [
        'secret'  => 'your-stripe-key-here',
        'version' => '2019-02-19',
    ],

];

Step - 5 Create route

After installed package and configure all the set up then next things is make following two route in routes/web.php file.

// Route for stripe payment form.
Route::get('stripe', '[email protected]')->('stripform');
// Route for stripe post request.
Route::post('stripe', '[email protected]')->('paywithstripe');

Step - 6 Create controller

After, done above two routes then we neet to create StripeController.php file help of following artisan command.

php artisan make:controller StripeController

After run this commant your StripeController.php file automatic created on app/Http/Controllers folder. just open it and write following code into that file.

<?php

namespace App\Http\Controllers;

use Validator;
use Illuminate\Http\Request;
use Cartalyst\Stripe\Laravel\Facades\Stripe;
use Stripe\Error\Card;

class StripeController extends Controller
{
    public function payWithStripe(Request $request)
    {
        return view('stripe-payment-form');
    }

    public function postPaymentWithStripe(Request $request)
    {
        $validator = Validator::make($request->all(), [
        ]);
        $input = $request->all();

        $validation = [
            'card_no' => 'required',
            'exp_month' => 'required',
            'exp_year' => 'required',
            'cvv' => 'required',
            'amount' => 'required',
        ];

        $this->validate($request, $validation);           
        $stripe = Stripe::make('your-stripe-key-here');
        try {
            $token = $stripe->tokens()->create([
                'card' => [
                    'number'    => $request->get('card_no'),
                    'exp_month' => $request->get('exp_month'),
                    'exp_year'  => $request->get('exp_year'),
                    'cvc'       => $request->get('cvv'),
                ],
            ]);
            if (!isset($token['id'])) {
                \Session::put('error','The Stripe Token was not generated correctly');
                return redirect()->route('stripform');
            }
            $charge = $stripe->charges()->create([
                'card' => $token['id'],
                'currency' => 'USD',
                'amount'   => $request->get('amount'),
                'description' => 'Add in wallet',
            ]);
            if($charge['status'] == 'succeeded') {
                /**
                * Write Here Your Database insert logic.
                */
                \Session::put('success','Money add successfully in wallet');
                return redirect()->route('stripform');
            } else {
                \Session::put('error','Money not add in wallet!!');
                return redirect()->route('stripform');
            }
        } catch (Exception $e) {
            \Session::put('error',$e->getMessage());
            return redirect()->route('stripform');
        } catch(\Cartalyst\Stripe\Exception\CardErrorException $e) {
            \Session::put('error',$e->getMessage());
            return redirect()->route('stripform');
        } catch(\Cartalyst\Stripe\Exception\MissingParameterException $e) {
            \Session::put('error',$e->getMessage());
            return redirect()->route('stripform');
        }
    }
}

Step - 7 Create blade file

After done controller file then we create one laravel blade HTML file which simple card payment design. Now we are create one simple blade file in resources/views/stripe-payment-form.blade.php file and here we are make very simple html layout for make card payment.

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-4">
            <div class="card">
                <div class="card-header">{{ __('Stripe Payment') }}</div>

                <div class="card-body">
                    @if ($message = Session::get('success'))
                    <div class="custom-alerts alert alert-success">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
                        {!! $message !!}
                    </div>
                    <?php Session::forget('success');?>
                    @endif
                    @if ($message = Session::get('error'))
                    <div class="custom-alerts alert alert-danger">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
                        {!! $message !!}
                    </div>
                    <?php Session::forget('error');?>
                    @endif
                    <form method="POST" action="{{ route('paywithstripe') }}">
                        @csrf
                        <div class="form-group row">
                            <div class="col-md-12">
                                <input id="card_no" type="text" class="form-control @error('card_no') is-invalid @enderror" name="card_no" value="{{ old('card_no') }}" required autocomplete="card_no" placeholder="Card No." autofocus>
                                @error('card_no')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                        <div class="form-group row">
                            <div class="col-md-6">
                                <input id="exp_month" type="text" class="form-control @error('exp_month') is-invalid @enderror" name="exp_month" value="{{ old('exp_month') }}" required autocomplete="exp_month" placeholder="Exp. Month (Eg. 02)" autofocus>
                                @error('exp_month')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                            <div class="col-md-6">
                                <input id="exp_year" type="text" class="form-control @error('exp_year') is-invalid @enderror" name="exp_year" value="{{ old('exp_year') }}" required autocomplete="exp_year" placeholder="Exp. Year (Eg. 2020)" autofocus>
                                @error('exp_year')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                        <div class="form-group row">
                            <div class="col-md-12">
                                <input id="cvv" type="password" class="form-control @error('cvv') is-invalid @enderror" name="cvv" required autocomplete="current-password" placeholder="CVV">
                                @error('cvv')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                        <div class="form-group row">
                            <div class="col-md-12">
                                <input id="amount" type="text" class="form-control @error('amount') is-invalid @enderror" name="amount" required autocomplete="current-password" placeholder="Amount">
                                @error('amount')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col-md-12">
                                <button type="submit" class="btn btn-primary btn-block">
                                    {{ __('PAY NOW') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Test card data

Card No : 4242424242424242 / 4012888888881881
Month : any future month
Year : any future Year
CVV : any 3 digit No.

Conclusion

As you can see, stripe payment gateway integration is very easy to use in laravel application help of cartalyst/stripe-laravel payckage.

We are hope this tutorials help everyone. if you have any issues or question reagarding stripe payment integration so please comment bellow. Thanks..

laravel php web-development

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

PHP Web Application Development Company

As a top **PHP Web Application Development Company in USA**[https://www.dataeximit.com/php-development-services/](https://www.dataeximit.com/php-development-services/ "https://www.dataeximit.com/php-development-services/"), we at Data EximIT have...

PHP Website Development

Skenix Infotech is a leading PHP Web Development Company that helps companies get results with industry best practices. Get affordable PHP Development Services.

Laravel Development Company

Skenix Infotech is a top Laravel Website Development Company with Expert Laravel Developers that provides robust Laravel Development Services at fair costs.

Hire Dedicated PHP Developer

Looking to hire affordable yet experienced PHP developers? **[Hire Dedicated PHP Developer](https://hourlydeveloper.io/hire-dedicated-php-developer/ "Hire Dedicated PHP Developer")**, who can convert your idea to reality, within the stipulated...

Hire PHP Developer

Looking to develop a PHP based website from scratch or revamp your existing website? **[HourlyDeveloper.io](https://hourlydeveloper.io/ "HourlyDeveloper.io")** has always been an industry leader for companies and business owners looking to hire...