composer require olimortimer/laravelshoppingcart

config
Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class

       'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class


web route
Route::get('cart/add/{any}/{any2}', 'ShoppingCartController@add')->name('shoppingCart.add');
Route::get('cart/update/{id}', 'ShoppingCartController@update')->name('shoppingCart.update');
Route::get('cart/destroy/{id}', 'ShoppingCartController@destroy')->name('shoppingCart.destroy');
Route::post('cart/chooseDelivery', 'ShoppingCartController@chooseDelivery');
Route::get('cart/info', 'ShoppingCartController@getInfo');

plugin category - ShoppingCart

product
       <a href="{{ action("Frontend\ShoppingCartController@add", [$pageItem->id, 1]) }}" class="btn btn-info" data-cart-add>Pirkti</a>


frontend views copy

to layout
@include('frontend.shoppingCart.info')

//cart js
$('[data-cart-add]').click(function () {
    $('.cart-info').show();
    var link = $(this).attr('href');
    $.ajax(link).done(function () {
        $('[data-cart-message]').show().addClass('core-alert');
        $.get('/cart/info', function( data ) {
            $('[data-cart-info-count]').text(data.count);
            $('[data-cart-info-total]').text(data.total);
        });
    });
    return false;
});
$('.core-alert .close').click(function () {
    $(this).parent().hide();
});

//css
#ajax-cart-view {
    font-size: 120%;

    th {
        color: $color-main;
        text-transform: uppercase;
    }
    td {
        a {
            color: $color-black;
            border-radius: 0;
        }
        input {
            width: 50px;
            height: 31px;
            position: relative;
            top: 2px;
        }
        img {
            width: 150px;
        }
        .btn:hover {
            background: $color-black;
            color: $color-white;
        }
    }
    table tr td:last-child {
        width: 150px;
    }
}