Laravel Shopping Cart Package

Overview

LaraCart - Laravel Shopping Cart Package (http://laracart.lukepolo.com)

Build Status Latest Stable Version Test Coverage Total Downloads License

Features

  • Coupons
  • Session Based System
  • Cross Device Support
  • Multiple cart instances
  • Fees such as a delivery fee
  • Taxation on a the item level
  • Prices display currency and locale
  • Endless item chaining for complex systems
  • Totals of all items within the item chains
  • Item Model Relation at a global and item level
  • Quickly insert items with your own item models

Laravel compatibility

Laravel laracart
5.1 | 5.2 | 5.3 1.1 | 1.2
5.4+ 1.*

Installation

Install the package through Composer. Edit your project's composer.json file by adding:

{
    "require": {
        ........,
        "lukepolo/laracart": "1.11.*"
    }
}

If using 5.4 you will need to include the service providers / facade in app/config/app.php:

	LukePOLO\LaraCart\LaraCartServiceProvider::class,

Include the Facade :

	'LaraCart' => LukePOLO\LaraCart\Facades\LaraCart::class,

Copy over the configuration file by running the command:

    php artisan vendor:publish --provider='LukePOLO\LaraCart\LaraCartServiceProvider'

Documentation

http://laracart.lukepolo.com

To Contribute to documentation use this repo :

https://github.com/lukepolo/laracart-docs

License

MIT

Comments
  • Issues rounding total & subtotal on taxation of items

    Issues rounding total & subtotal on taxation of items

    Hey, thanks for the awesome package! Great work.

    I'm not sure if it is something I am doing or not, but I think there may be an issue with the rounding of the totals.

    I have item prices in the DB without tax.

    The item price should be 10.00 with tax included - in my DB it is 8.33 with 0.2 set as tax (20%).

    $cart = LaraCart::add('sku', 'product name', 1, 8.33, [], true);
    
    LaraCart::total($format = false, $withDiscount = true, $withTax = true, $withFees = true)
    // 10.00
    

    However if I then add two items

    $cart = LaraCart::add('sku', 'product name', 2, 8.33, [], true);
    
    LaraCart::total($format = false, $withDiscount = true, $withTax = true, $withFees = true)
    // 19.99
    

    The latter example should obviously be 20.00.

    Am I doing something wrong?

    Thanks

    bug 
    opened by t2thec 24
  • Laracart getItems returns empty array even though session has content

    Laracart getItems returns empty array even though session has content

    LaraCart::getItems() returns an empty array, even though items are added. Printing the session from the $request variable returns a 'laracart' key though (see screenshot).

    image

    What's going on here?

    invalid question 
    opened by mjanssen 23
  • Middleware issue continues...

    Middleware issue continues...

    Hmmm....still not getting correct result. I'm trying this:

    `public function handle($request, Closure $next)
    {
        LaraCart::get();
    
        if (LaraCart::count($withItemQty = false) == 0) {
            return redirect()->action('HomeController@index');
        }
    
        return $next($request);
    }`
    
    opened by spaceageliving 20
  • Discount problems

    Discount problems

    Version: Laravel 5.5.14 + Laracart 1.3.8

    Hi, I have an issue with coupons (both fixed and percentage). I have this:

    PERCENTAGE Coupon

    1. Product costs € 121,00 (incl tax) € 100 (ex tax)
    2. Tax percentage is 21%
    3. When adding a discount (5%) = € 5 (subtotal should be € 95)
    4. I get this tax: € 16,00 (should be € 19,95)
    5. Total: € 111,00
    LaraCart::add(1, 'Test Product', 1, 100, ['tax' => 0.21]);
    
    $coupon = new LukePOLO\LaraCart\Coupons\Percentage('test', 0.05, [
        'name'        => '5% off',
        'description' => '5% off test',
    ]);
    
    LaraCart::addCoupon($coupon);
    
    $cart = LaraCart::get();
    
    $cart->subTotal(false) => 100
    $cart->totalDiscount(false)  => 5
    
    $cart->taxTotal(false) => 16.00
    $cart->total(false) => 111.00
    

    FIXED Coupon

    1. Product costs € 121,00 (incl tax) € 100 (ex tax)
    2. Tax percentage is 21%
    3. When adding a discount € 30 (subtotal should be € 70)
    4. I get this tax: € -9,00 (should be € 14,70)
    5. Total: € 61.00 (should be € 84.70)
    LaraCart::add(1, 'Test Product', 1, 100, ['tax' => 0.21]);
    
    $coupon = new LukePOLO\LaraCart\Coupons\Fixed('test', 30, [
        'name'        => '30 off',
        'description' => '30 off test',
    ]);
    
    LaraCart::addCoupon($coupon);
    
    $cart = LaraCart::get();
    
    $cart->subTotal(false) => 100.00
    $cart->totalDiscount(false)  => 30.00
    
    $cart->taxTotal(false) => -9.00
    $cart->total(false) => 61.00
    
    bug 
    opened by it-can 18
  • losing session data on redirects

    losing session data on redirects

    I am sure I am just missing a set-up step, but I continue to lose my session data when redirecting. Happening specifically on a couple of routes. I noticed I am not persisting my cart_session_id into the database and assume this is the issue.

    adding items to cart is working, I can dump the items and see them there. My cart.review route has the items and displays the total from this point everything is correct. Any redirection from this point I am losing all of my cart data.

    random note: Still working with PatronPath?

    bug 
    opened by jbowm2 17
  • Question about Coupons!!!

    Question about Coupons!!!

    Why when a discount sum of coupon exceeds the total amount in the card whe have zero discount? Example: if total of cart is 400$ and discount of fixed coupon is 600$ , then we have 0 of totalDiscount.

    I think that is not a totaDiscount should be zero, and the cart LaraCart::total.

    bug 
    opened by davodavodavo3 17
  • Destroy / empty cart when cross browser is enabled

    Destroy / empty cart when cross browser is enabled

    Executing any of the following commands do not clear my cart. $cart = LaraCart::get(); $cart->emptyCart(); $cart->destroyCart(); LaraCart::emptyCart(); LaraCart::destroyCart();

    If I delete the files in the sessions folder obv. I get a clean cart. Am I missing any instruction? Or doing something wrong?

    bug 
    opened by umbertix 15
  • Tax incorrect in version 1.4.1

    Tax incorrect in version 1.4.1

    In 1.4.0 this works correct, but in 1.4.1 it doesn't... The tax is incorrect when using coupons...

    // Add to cart
    LaraCart::add(
        1,
        'test',
        52,
        107.44,
        [
            'tax' => 0.21,
        ]
    );
    
    $this->assertEquals(5586.88, LaraCart::subTotal(false));
    $this->assertEquals(0, LaraCart::totalDiscount(false));
    $this->assertEquals(1173.24, LaraCart::taxTotal(false));
    $this->assertEquals(6760.12, LaraCart::total(false));
    
    // Test discount %
    $coupon = new Percentage('7,5%', 0.075);
    LaraCart::addCoupon($coupon);
    
    $this->assertEquals(5586.88, LaraCart::subTotal(false));
    $this->assertEquals(419.02, LaraCart::totalDiscount(false));
    $this->assertEquals(1085.25, LaraCart::taxTotal(false)); // 1.4.1 outputs 1173.24
    $this->assertEquals(6253.11, LaraCart::total(false));
    
    LaraCart::removeCoupons();
    
    // Test discount fixed
    $coupon = new Fixed('100 euro', 100);
    LaraCart::addCoupon($coupon);
    
    $this->assertEquals(5586.88, LaraCart::subTotal(false));
    $this->assertEquals(100, LaraCart::totalDiscount(false));
    $this->assertEquals(1152.24, LaraCart::taxTotal(false)); // 1.4.1 outputs 1173.24
    $this->assertEquals(6639.12, LaraCart::total(false));
    

    this is my config:

    <?php
    
    return [
    
        /*
        |--------------------------------------------------------------------------
        | The caching prefix used to lookup the cart
        |--------------------------------------------------------------------------
        |
        */
        'cache_prefix'           => 'laracart',
    
        /*
        |--------------------------------------------------------------------------
        | Locale is used to convert money into a readable format for the user,
        | please note the UTF-8 , helps to make sure its encoded correctly
        |
        | Common Locales
        |
        | English - United States (en_US): 123,456.00
        | English - UNITED KINGDOM (en_GB) 123,456.00
        | Spanish - Spain (es_ES): 123.456,000
        | Dutch - Netherlands (nl_NL): 123 456,00
        | German - Germany (de_DE): 123.456,00
        | French - France (fr_FR): 123 456,00
        | Italian - Italy (it_IT): 123.456,00
        |
        | This site is pretty useful : http://lh.2xlibre.net/locales/
        |
        |--------------------------------------------------------------------------
        |
        */
        'locale'                 => 'nl_NL.UTF-8',
    
        /*
        |--------------------------------------------------------------------------
        | If true displays the international format rather thant he national format
        |--------------------------------------------------------------------------
        |
        */
        'international_format'   => false,
    
        /*
        |--------------------------------------------------------------------------
        | Sets the tax for the cart and items , you can change per item
        | via the object later if  needed
        |--------------------------------------------------------------------------
        |
        */
        'tax'                    => null,
    
        /*
        |--------------------------------------------------------------------------
        | Calculate tax per item, rather than subtotal
        | https://github.com/lukepolo/laracart/issues/180
        |
        | This will vary , please investigate to follow the rules of your local laws
        | https://money.stackexchange.com/questions/15051/sales-tax-rounded-then-totaled-or-totaled-then-rounded
        |--------------------------------------------------------------------------
        |
        */
        'tax_by_item'            => false,
    
        /*
        |--------------------------------------------------------------------------
        | Allows you to choose if the discounts applied are taxable
        |--------------------------------------------------------------------------
        |
        */
        'discountTaxable'        => true,
    
        /*
        |--------------------------------------------------------------------------
        | Allows you to choose if the discounts applied to fees
        |--------------------------------------------------------------------------
        |
        */
        'discountOnFees'         => false,
    
        /*
        |--------------------------------------------------------------------------
        | Allows you to configure if a user can apply multiple coupons
        |--------------------------------------------------------------------------
        |
        */
        'multiple_coupons'       => false,
    
        /*
        |
        |                     **** DEPRECATED IN 1.3 ****
        |
        |--------------------------------------------------------------------------
        | Applied message when using getMessage on a coupon
        |--------------------------------------------------------------------------
        |
        */
        'coupon_applied_message' => 'Coupon Applied',
    
        /*
        |--------------------------------------------------------------------------
        | The default item model for your relations
        |--------------------------------------------------------------------------
        |
        */
        'item_model'             => null,
    
        /*
        |--------------------------------------------------------------------------
        | Binds your data into the correct spots for LaraCart
        |--------------------------------------------------------------------------
        |
        */
        'item_model_bindings'    => [
            \LukePOLO\LaraCart\CartItem::ITEM_ID      => 'id',
            \LukePOLO\LaraCart\CartItem::ITEM_NAME    => 'name',
            \LukePOLO\LaraCart\CartItem::ITEM_PRICE   => 'price',
            \LukePOLO\LaraCart\CartItem::ITEM_TAXABLE => 'taxable',
            \LukePOLO\LaraCart\CartItem::ITEM_OPTIONS => [
                // put columns here for additional options,
                // these will be merged with options that are passed in
                // e.x
                // tax => .07
            ],
        ],
    
        /*
        |--------------------------------------------------------------------------
        | The default item relations to the item_model
        |--------------------------------------------------------------------------
        |
        */
        'item_model_relations'   => [],
    
        /*
        |--------------------------------------------------------------------------
        | This allows you to use multiple devices based on your logged in user
        |--------------------------------------------------------------------------
        |
        */
        'cross_devices'          => false,
    
        /*
        |--------------------------------------------------------------------------
        | This allows you to use custom guard to get logged in user
        |--------------------------------------------------------------------------
        |
        */
        'guard'                  => null,
    ];
    
    opened by it-can 14
  • Subitem not beeing saved

    Subitem not beeing saved

    I have the following code from your examples:

        $item = Cart::add(2, 'Shirt', 1, 15.99, [
            'size' => 'XXL'
        ]);
    
        $item->addSubItem([
            'description' => 'Extra Cloth Cost', // this line is not required!
            'price' => 3.00
        ]);
    

    The problem is that the subitem 'Extra Cloth Cost' is not added to the item itself:

    CartItem {#603 ▼
      #itemHash: "46c1b28fcfdaec4e8796943cc5a39a4e"
      #itemModel: null
      #itemModelRelations: []
      +locale: null
      +lineItem: false
      +discount: 0
      +subItems: []
      +couponInfo: []
      +internationalFormat: null
      +options: array:7 [▶]
    }
    

    What am I doing wrong?

    bug 
    opened by Cannonb4ll 14
  • Questions re: coupons

    Questions re: coupons

    Hi Luke, I'm implementing coupons on my checkout code, have a few questions about usage.

    It looks to me like I have to implement:

    --the discount code checking (ie. if I have a discount code in effect in my checkout process, I have to do the comparison to determine if user has entered a valid value that I am honoring),

    --the valid start date and end date, both of which would be used to determine if a code should be attached to the cart?

    Then when these conditions are met, I would instantiate the appropriate coupon per my desired implementation and attach to the cart?

    Is this accurate, or am I missing some aspect of the functionality?

    TIA, David

    opened by spaceageliving 14
  • Session issues

    Session issues

    Hi,

    I have a checkout screen where I show my cart and calculate fees like this:

    /**
         * Show checkout
         *
         * @param Request $request
         * @return \Illuminate\View\View
         */
        public function getCheckout(Request $request)
        {
            $cart = LaraCart::setInstance('cart1');
    
            // remove fee and add again
            LaraCart::removeFee('shipping');
    
            if ($request->input('test') == 'USA')
            {
                    LaraCart::addFee('shipping', 25, false, [
                        'code'    => 'USA',
                        'country' => 'United States of America',
                    ]);
            }
    
            $items = LaraCart::getItems();
    
            return view('cart.checkout', compact('cart', 'items'));
        }
    

    When the checkout form is posted, the old_input in my session in gone... When I comment the removeFee and addFee stuff, it works again...

    bug 
    opened by it-can 13
  • Unable to apply several percentage coupons

    Unable to apply several percentage coupons

    Hi,

    I can apply several Percentage coupons on the cart (not on the item). Only one is supported despite the fact I have config('laracart.multiple_coupons') to true. How can I achieve to have multiple coupons like this ?

    $couponType = '\LukePOLO\LaraCart\Coupons\\'.$discount->getDiscountType();
    $coupon = new $couponType($discount->code, $discount->discount_percent / 100, [
        'description' => $discount->code.' '.$discount->discount_percent.' %'
    ]);
    LaraCart::addCoupon($coupon);
    

    Thanks for your help

    opened by t-prod 5
  • Return this cart item (when adding associate model).

    Return this cart item (when adding associate model).

    Hi I started trying to use your package in my application. Thanks.

    I would like that when linking the model:

    LaraCart::add($product-> id, $product->name,1, $product->price, $cart['options'])->setModel(Product::class); the currently added item to the cart was returned to us, but this does not happen since setModel () returns null.

    Why you need to do a similar design

    $cart = LaraCart::add($product-> id, $product->name,1, $product->price, $cart['options'])->setModel(Product::class);
    $cart->setModel(Product::class);
    

    Thanks

    enhancement 
    opened by Augen2203 2
  • Using Model relations , adding a new item it should use its options to override whats coming from the DB

    Using Model relations , adding a new item it should use its options to override whats coming from the DB

    For example

    LaraCart::add(
                'itemID',
                'Testing Item',
                $qty,
                $price,
                $options,
                $taxable
            );
    

    should search the DB, then options should override any of the set defaults from the DB.

    enhancement 
    opened by lukepolo 0
  • item_model_bindings relation.name not working

    item_model_bindings relation.name not working

    Hey there.

    I have a product and an item Model. My config.item_model = \App\Models\Item::class;

    My Item Model have a related Product Model Item->Product->name.

    I'm trying to set up Item_model_bindings. I tried to set: \LukePOLO\LaraCart\CartItem::ITEM_NAME => 'Product.name', sadly it's still null. if i set \LukePOLO\LaraCart\CartItem::ITEM_NAME => 'Product', i got the Full Product Array in the name field.

    Any suggestions. Also Price is not working. Thank you in advance!

    bug 
    opened by DevRaeph 2
Releases(2.2.0)
  • 2.2.0(Feb 10, 2022)

  • 2.1(Jul 21, 2021)

    Rounding sucks, and most of its caused when we round too early.

    To fix this I've removed most of the formatting options to LaraCart except on totals.

    This fixes tons of issues and gives us better results.

    Source code(tar.gz)
    Source code(zip)
  • 2.0(Jul 8, 2021)

    Hey All!

    I want to start off with, I'm sorry. LaraCart has been needing some love lately, as they are numerous (but minor) bugs that made some significant changes on how taxes / discounts work in tandem.

    That being said, I've started on a new version of the package that should solve the broad cases of taxation / discount issues.

    To Summarize what has changed:

    Totals / SubTotals

    The sub totals / totals / net totals were filled with passable arguments to have tax / formatting and more. This cause maintablity issues as they weren't turley sub totals in some ways.

    These have been revamped to only be singular. They will only show the proper sub totals etc. If a function needed an extra param those were removed and renamed

    Item / Sub Items

    Price use to be the sub total and now has been converted just to be the actual price (silly of me right?) .

    Taxation / Discounts

    Firstly, based on the most used practice taxation happens AFTER discounts. This has become the default and currently the only way in 2.0.

    The reason behind this is complicated, but to put shortly each item should be its own line item that correctly tracks it's own discount / taxation.

    Items QTY's are now Line Itemed

    There has been massive problems when it comes to rounding / discounts / taxation when laracart was using the sub total function with the QTY. This would lead to improper rounding and wrong taxation in some cases.

    Now, each item is a line item to calculate the proper taxation / discounts etc.

    Features Missing

    There are some features missing (sorry...) , eventually can be put back if there was an actual need for it.

    • tax_by_item (done by default now)
    • tax_item_before_discount (taxes should be applied AFTER discounts in MOST cases) .. this is one that may need to go back in~
    • discountTaxable (yes it was different cased....) was removed in favor of taxation happens after discounts (so discounts cant be taxed)
    • discountsAlreadyTaxed refer to above

    There are other changes that may not be listed here , such as signature changes. A upgrade guide will be put out before full release.

    Thanks for reading if you've made it this far.

    Also would like to thank

    @dennisoderwald for sponsoring LaraCart!

    Upgrade Guide https://github.com/lukepolo/laracart/blob/2.0/upgrade-1.0-2.0.md

    -- Docs will be updated this week!

    Source code(tar.gz)
    Source code(zip)
  • 1.12.0-RC-1(Feb 23, 2021)

  • 1.11.0(Jul 9, 2020)

  • 1.10.0(May 1, 2020)

    This should solve PHP7.4 depreciating of money_fomrat. Also it should solve windows not being able to use LaraCart at all.

    BREAKING CHANGES

    International Formatting

    International formatting has been replaced with currency code in the config.

        /*
        |--------------------------------------------------------------------------
        | The currency code changes how you see the actual amounts.
        |--------------------------------------------------------------------------
        | This is the list of all valid currency codes
        | https://www2.1010data.com/documentationcenter/prod/1010dataReferenceManual/DataTypesAndFormats/currencyUnitCodes.html
        |
        */
        'currency_code' => 'USD',
    
    

    The Format Money Function

    formatMoney signature has changed

    public static function formatMoney($number, $locale = null, $internationalFormat = false, $format = true)
    
    public static function formatMoney($number, $locale = null, $currencyCode = null, $format = true)
    

    So please look through your code and replace anytime that you are using the $internationalFormat.

    Source code(tar.gz)
    Source code(zip)
  • 1.9.1(Apr 3, 2020)

    We have fixed an issue where you would have a multi qty item and the discount would not be applied to that item itself.

    https://github.com/lukepolo/laracart/issues/265

    Source code(tar.gz)
    Source code(zip)
  • 1.7.0(Mar 25, 2019)

  • 1.6.3(Jan 15, 2019)

  • 1.6.0(Oct 15, 2018)

  • 1.5.13(May 29, 2018)

    You can now just do :

    $coupon = new \LukePOLO\LaraCart\Coupons\Percentage('10OFF', .1, [
                'description' => '10%OFF'
     ]);
    
    $coupon->setDiscountOnItem($item, .1);
    
    Source code(tar.gz)
    Source code(zip)
AvoRed an Open Source Laravel Shopping Cart

AvoRed is commin up as a headless graphql version. AvoRed is a free open-source e-commerce platform written in PHP based on Laravel. Its an ingenuous

AvoRed Laravel E commerce 1.4k Dec 28, 2022
A simple shopping cart implementation for Laravel

LaravelShoppingcart A simple shoppingcart implementation for Laravel. Installation Install the package through Composer. Run the Composer require comm

Rob Gloudemans 3.5k Jan 7, 2023
Shopping Cart Implementation for Laravel Framework

Shopping Cart Implementation for Laravel Framework

darryl fernandez 1.2k Jan 4, 2023
A simple shopping cart implementation for Laravel

LaravelShoppingcart This is a fork of Crinsane's LaravelShoppingcart extended with minor features compatible with Laravel 8+. An example integration c

Patrick 453 Jan 2, 2023
LiteCart - Free Shopping Cart Platform - Built with PHP, jQuery HTML 5 and CSS 3

LiteCart is a lightweight e-commerce platform for online merchants. Developed in PHP, HTML 5, and CSS 3. LiteCart is a registered trademark, property

LiteCart 153 Dec 28, 2022
A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

OpenCart is a free open source ecommerce platform for online merchants. OpenCart provides a professional and reliable foundation from which to build a successful online store.

OpenCart 6.6k Dec 31, 2022
Benefit PHP Shopping Cart Class (Simple Lightweight)

Benefit-PHP-Shopping-Cart-Class Benefit PHP Shopping Cart Class (Simple Lightweight) Table of Contents Initialization Get All Get Item Get Item Child

Osman Cakmak 8 Sep 6, 2022
PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

PrestaShop is an Open Source e-commerce web application, committed to providing the best shopping cart experience for both merchants and customers. It is written in PHP, is highly customizable, supports all the major payment services, is translated in many languages and localized for many countries, has a fully responsive design (both front and back office), etc. See all the available features.

PrestaShop 6.9k Dec 31, 2022
A robust session-based shopping bag for Laravel

Shopping Bag A robust session-based shopping bag for Laravel Go to documentation Documentation Documentation for Shopping Bag can be found in the docs

Laraware 30 Dec 13, 2021
Topshop offers its customers a modern shopping experience by bringing computers, appliances, clothing and many other items at their fingertips.

Topshop offers its customers a modern shopping experience by bringing computers, appliances, clothing and many other items at their fingertips. With just a few clicks, users can create an account, add products to their cart and place their order.

Abhijeet Pitumbur 2 Aug 8, 2022
The Online Shopping System in PHP using XAMPP as virtual Server.

Online shopping is a form of electronic commerce which allows consumers to directly buy goods or services from a seller over the Internet using a web browser or a mobile app.

Magesh Surya Ambikapathi 5 Sep 15, 2022
(Live Link) Extensive ecommerce site with vendors, mods & ability to add to cart without being logged in. Upgraded to Laravel 8.x

(Live Link) Extensive ecommerce site with vendors, mods & ability to add to cart without being logged in. Upgraded to Laravel 8.x

null 14 Dec 21, 2022
Magento 2 module to only allow checkout when the number of items in the cart are a multiple of X.

Cart Quantity Multiple - Magento 2 Module Introduction This module allows to limit checkout only when the contents of the cart are a multiple of X

ADVOCODO 3 Apr 7, 2022
Zen Cart® is a full-function e-commerce application for your website.

Zen Cart® - The Art of E-Commerce Zen Cart® was the first Open Source e-Commerce web application to be fully PA-DSS Certified. Zen Cart® v1.5.8 is an

Zen Cart 304 Jan 6, 2023
Magento 2 Share Cart extension Free

Mageplaza Share Cart Extension helps customers in sharing their shopping cart with friends and family as well. This is a supportive method to promote store’s conversion rate via the existing users, and this can significantly contribute to the revenue of the store.

Mageplaza 12 Jul 22, 2022
Commerce GrappQL Package for Laravel

Sailwork Commerce Package for Laravel Document Please read document in here: Document Installation You can install the package via composer: composer

Sail Work 6 May 10, 2021
Laravel paypal payment package , help you process credit card payment using paypal api

Important :The use of the PayPal REST /payments APIs to accept credit card payments is restricted by paypal and they recomand to use Braintree Direct

Anouar Absslm 328 Oct 31, 2022
An E-Commerce package for Laravel with Grafite CMS. Take control of your content and how you sell it! Products, subscriptions, shipping, downloading and more!

Grafite Commerce Grafite has archived this project and no longer supports or develops its code. We recommend using only as a source of ideas for your

Grafite Inc 45 Jun 8, 2021
GetCandy is a package that brings functionality akin to Shopify and other e-commerce platforms to Laravel.

GetCandy is a set of Laravel packages that bring functionality akin to Shopify and other e-commerce platforms to Laravel. You have complete freedom to

GetCandy 7 Oct 27, 2022