Aimeos PHP e-commerce framework for ultra fast online shops, scalable marketplaces, complex B2B applications

Overview
Aimeos logo

Aimeos core - high performance e-commerce

Total Downloads Build Status Coverage Status Scrutinizer Code Quality License

Star us on GitHub — it helps!

Aimeos demo

What is Aimeos core?

Aimeos is an Open Source e-commerce framework for online shops consisting of the e-commerce library, the administration interface and different front-ends. It's a modular stack that offers an unmatched combination of flexibility and speed.

Contrary to other shop systems, Aimeos is no monolithic application. Instead, you have the choice between several user front-ends and you can adapt them to your needs or write one of your own one.

Who uses Aimeos?

Whether you (or your customer if you are a developer seeking for a solution) would like to run a high performance online shop, wish to publish a product catalog online or would like to create your own portal – you design your own individual sales channel with Aimeos.

It's is suited for medium to large size businesses which needs a seamless integration into existing systems, like content management, customer relationship management or enterprise resource planning systems. Additionally, Aimeos perfectly fits as base for portals or market places.

Links

License

Aimeos is licensed under the terms of the LGPLv3 Open Source license and is available for free.

Comments
  • Logout does not clear personal information

    Logout does not clear personal information

    Hi @aimeos,

    when I am logged in and start the checkout process, my address is automatically added to the basket, which is good.

    When I return to the main page and log out, my address, billing details, etc are still part of the basket. Is this intended behaviour? When a user logs out, IMHO he wants his personal information to be "forgotten".

    Should we clear the address and all service providers when a user logs out?

    opened by nvindice 25
  • [FEATURE] rename classes / interfaces to include information about the class

    [FEATURE] rename classes / interfaces to include information about the class

    Currently all classes are called like Standard, Base, Factory, Iface. That makes working with an IDE way more complicated, e.g. with PhpStorm there is a good autocomplete that checks for class names and even a search by classname option. It would also automatically add corresponding use statements.

    So if the the class for the Order would be called OrderStandard (or depending if it is used in aimeos-typo3 OrderTypo3) one could easily find the correct class by searching for "Order". That, however, is not so simple with only the namespaces.

    In regards to backwards compatibility it would be relatively simple to achieve by adding corresponding class_aliases.

    opened by AndreasA 25
  • Question: js based payment provider with 2017 - howto?

    Question: js based payment provider with 2017 - howto?

    Some payment providers include the whole payment credit card form by inserting some hrml code and javascript. In 2016 version I had to overwrite the whole form by using a decorator but with 2017 this should have been improved. When updating to 2017 I want to make use of this, so I would like to know how I would do this.

    Thanks for answers in advance.

    opened by AndreasA 20
  • PayPalExpress response: Invalid total

    PayPalExpress response: Invalid total

    It seems PayPal has gotten more strict in the last week or so.

    https://github.com/aimeos/aimeos-core/blob/94d09cacf6e7973916d9b23c2e75ccca33152712/lib/mshoplib/src/MShop/Service/Provider/Payment/PayPalExpress.php#L751-L754

    can result in

    "MAXAMT":221.75,
    "PAYMENTREQUEST_0_AMT":"221.74",
    "PAYMENTREQUEST_0_ITEMAMT":"214.01",
    "PAYMENTREQUEST_0_SHIPPINGAMT":"7.74",
    

    It seems that earlier individual items were not checked and the MAXAMT field was fine for rounding errors in the total.

    We get "Total mismatch. See additional message for details. / The totals of the cart item amounts do not match order amounts." back from PayPalExpress now.

    opened by jonaseberle 17
  • Scale method option for preview images

    Scale method option for preview images

    Adds an option for crop thumbnail generation with Imagick. When square thumbnails are used in the product catalog list (e.g. with background-size: cover CSS code), unproportinal images cause either very large preview images or very blurry scaled ones. This configuration option adds a possibility to choose between scaling and scale-cropping thumbnails.

    No breaking changes, fully backwards compatible, all documented.

    What do you think?

    opened by nvindice 16
  • Bugfixes for order base manager

    Bugfixes for order base manager

    2 Bugfixes:

    • in getCoupons() matching products to coupon codes would not work, because the products are stored by their position index in $products[$baseId] but matched by their product ids.

    • in loadFresh() coupon codes were not loaded, even when with \Aimeos\MShop\Order\Item\Base\Base::PARTS_COUPON bit set in the $parts bitmask. There are some extra steps required in order to get this task done, but everything should work as intended and documented now.

    opened by nvindice 15
  • 2018.x release

    2018.x release

    Hi @aimeos Team,

    may I ask for when the next 2018.10.x release is scheduled? We would like to launch our new shop in a couple of weeks and need the latest bug fixes / features - if possible on the stable branch..?

    Best regards, Nils

    opened by nvindice 15
  • Register order plugins earlier when loading an order

    Register order plugins earlier when loading an order

    When loading an order with the order base manager as a fresh order, the order elements (address, products, services, coupons) are added successively. However, the order plugins are not registered yet. Because of this behaviour, coupons are not added properly, as the coupon item is not added and therefore the rebate is not considered in the basket. Other plugins cannot provide their functionality, too, eg. address based order manipulation etc.

    opened by nvindice 13
  • Bug fix on stock

    Bug fix on stock

    We found a bug this night on selections if stock of the product is set to null. Here the exception:

    Executing statement " INSERT INTO "mshop_stock" ( "productcode", "siteid", "typeid", "stocklevel", "backdate", "mtime", "editor", "ctime" ) VALUES ( 'fb-b-einfach', 1, 1, NULL, NULL, '2017-02-15 00:05:28', '', '2017-02-15 00:05:28' ) " failed: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-fb-b-einfach-1' for key 'unq_mssto_sid_pcode_tid' #0 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mshoplib/src/MShop/Stock/Manager/Standard.php(258): Aimeos\MW\DB\Statement\PDO\Simple->execute() #1 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mshoplib/src/MShop/Common/Manager/Decorator/Base.php(187): Aimeos\MShop\Stock\Manager\Standard->saveItem(Object(Aimeos\MShop\Stock\Item\Standard), false) #2 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/lib/mshoplib/src/MShop/Common/Manager/Decorator/Sitecheck.php(42): Aimeos\MShop\Common\Manager\Decorator\Base->saveItem(Object(Aimeos\MShop\Stock\Item\Standard), false) #3 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/controller/common/src/Controller/Common/Order/Standard.php(454): Aimeos\MShop\Common\Manager\Decorator\Sitecheck->saveItem(Object(Aimeos\MShop\Stock\Item\Standard), false) #4 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/controller/common/src/Controller/Common/Order/Standard.php(340): Aimeos\Controller\Common\Order\Standard->updateStockSelection('352', 'default') #5 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/controller/common/src/Controller/Common/Order/Standard.php(298): Aimeos\Controller\Common\Order\Standard->updateStock(Object(Aimeos\MShop\Order\Item\Standard), -1) #6 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Libraries/aimeos/aimeos-core/controller/common/src/Controller/Common/Order/Standard.php(58): Aimeos\Controller\Common\Order\Standard->updateStatus(Object(Aimeos\MShop\Order\Item\Standard), 'stock-update', 1, -1) #7 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Private/Extensions/ai-controller-frontend/controller/frontend/src/Controller/Frontend/Order/Standard.php(77): Aimeos\Controller\Common\Order\Standard->block(Object(Aimeos\MShop\Order\Item\Standard)) #8 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Private/Extensions/ai-client-html/client/html/src/Client/Html/Checkout/Standard/Order/Standard.php(273): Aimeos\Controller\Frontend\Order\Standard->block(Object(Aimeos\MShop\Order\Item\Standard)) #9 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Private/Extensions/ai-client-html/client/html/src/Client/Html/Base.php(150): Aimeos\Client\Html\Checkout\Standard\Order\Standard->process() #10 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Resources/Private/Extensions/ai-client-html/client/html/src/Client/Html/Checkout/Standard/Standard.php(354): Aimeos\Client\Html\Base->process() #11 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Classes/Controller/AbstractController.php(167): Aimeos\Client\Html\Checkout\Standard\Standard->process() #12 /var/www/clients/client15/web7/web/typo3conf/ext/aimeos/Classes/Controller/CheckoutController.php(32): Aimeos\Aimeos\Controller\AbstractController->getClientOutput(Object(Aimeos\Client\Html\Checkout\Standard\Standard)) #13 [internal function]: Aimeos\Aimeos\Controller\CheckoutController->indexAction()

    opened by gilbertsoft 13
  • Retrieving custom config values for sub-sites

    Retrieving custom config values for sub-sites

    I am trying to retrieve the config value for

    controller/jobs/product/import/csv/location
    

    from within an admin panel, but using

    $view->config('controller/jobs/product/import/csv/location', false); 
    

    returns false. If I set the value in shop.php then the value set there is retrieved rather than the config override set in locales > sites > subsite.

    Should the config helper return overridden values or is there another function to do this?

    opened by defive 12
  • Handle unavailable coupon codes

    Handle unavailable coupon codes

    Current behaviour: When an active coupon code becomes unavailable - e.g. because a price condition is not met anymore after a product was deleted from the basket -, the coupon just disappears without a notice. It is still stored (but invisible), so when the user tries to enter it again, he recieves a cryptic error message saying the maximum limit was reached.

    This PR fixes the described behaviour: When a coupon becomes unavailable, an exception is thrown. Furthermore, the coupon code is entirely removed from the basket. This is way more intuitive IMO and is standard behaviour in major online shops like Amazon.

    Last but not least, the coupon provider catches the exception and integrates it into other error messages regarding unavailable coupons.

    opened by nvindice 11
  • Coupon is not removed when invalid, no error message

    Coupon is not removed when invalid, no error message

    When a coupon code is entered but invalid (eg. because the basket decorator does not fit requirements), no error message is displayed. The code just becomes part of the basket but does not have any effect on the basket value.

    IMHO it would make more sense to explain the problem to the user like it happened in 2018.10 so the user can enter another coupon code or change his basket contents.

    Same thing happens when the coupon code gets invalid because the basket content changed - the user may not even recognize the coupon is no longer valid. The invalid coupon code should be removed from the basket (IMHO) or at least the user should see a note explaning to problem.

    opened by nvindice 5
  • Add variant support to PropertyAdd plugin

    Add variant support to PropertyAdd plugin

    Following on from the discussion on the below thread, I have updated the plugin to query on product code(s) not product ID.

    This enables product attributes to be stored on order products that have types of selection or bundle.

    https://aimeos.org/help/viewtopic.php?p=15713#p15713

    opened by iammart 9
  • [Feature] Intelligent supplier selection in checkout

    [Feature] Intelligent supplier selection in checkout

    Hi everyone,

    the 'Supplier' provider allows the customer to choose a supplier during the checkout process, when 'Pickup' was chosen as the delivery option. Downside: Every supplier is listed here, regarless if the product is available at this specific supplier or not.

    We are discussing to implement a new decorator, which checks if the supplier can supply all products in the basket first (getting this information from the 'Products' tab at the supplier backend) and removes it from the selection list in the checout area if not.

    Not sure yet if we are going to provide the 'Pickup' method at all, but IF we do - are you guys interested in adding this feature to the core or shall I implement it only for our own usage?

    Regards, Nils

    help wanted 
    opened by nvindice 1
Owner
Aimeos
Ultra fast, Open Source e-commerce framework for building custom online shops, market places and complex B2B applications #gigacommerce
Aimeos
Aimeos is THE professional, full-featured and high performance e-commerce package for Laravel

Aimeos Slim package ⭐ Star us on GitHub — it helps! Aimeos is THE professional, full-featured and high performance e-commerce package for Laravel! You

Aimeos 101 Sep 14, 2022
An eCommerce website is an online store where you can buy or sell products online. An eCommerce offers a professional online store builder that helps you launch your eCommerce business quickly and successfully.

An eCOMMERCE-SITE An eCommerce website is an online store where you can buy or sell products online. An eCommerce offers a professional online store b

UTTKARSH PARMAR 2 Aug 8, 2022
PrestaShop is a fully scalable open source e-commerce solution.

PrestaShop is an Open Source e-commerce web application, committed to providing the best shopping cart experience for both merchants and customers.

PrestaShop 6.9k Jan 9, 2023
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
A free open source e-commerce platform for online merchants based on customised version of Laravel.

A free open source e-commerce platform for online merchants based on customised version of Laravel.

Ace Vinayak 58 Oct 19, 2022
AbanteCart is a free PHP based eCommerce solution for merchants to provide ability creating online business and sell products online quick and efficient.

AbanteCart is a free PHP based eCommerce solution for merchants to provide ability creating online business and sell products online quick and efficient. AbanteCart application is built and supported by experienced enthusiasts that are passionate about their work and contribution to rapidly evolving eCommerce industry. AbanteCart is more than just a shopping cart, it is rapidly growing eCommerce platform

AbanteCart 129 Nov 15, 2022
Laravel eCommerce headless APIs allow you to experience seamless and easily scalable storefront performance.

Bagisto GraphQL API Laravel eCommerce headless APIs allow you to experience seamless and easily scalable storefront performance. An open-source and Gr

Bagisto 30 Dec 29, 2022
The truly Laravel E-commerce Framework

Vanilo The Truly Laravel E-commerce Framework Vanilo's aim is that Laravel developers can rapidly create E-commerce applications with pleasure. Curren

Vanilo E-commerce 650 Dec 28, 2022
PHP payment library to easily integrate Baltic banklinks (supports old and new iPizza protocol), E-commerce gateaway (Estcard, Nets Estonia), Liisi Payment Link and Pocopay.

PHP Payment library PHP payment library to easily integrate Baltic banklinks, E-commerce gateaway (Estcard, Nets Estonia), Liizi Payment Link and Poco

Rene Korss 34 Apr 27, 2022
Full-featured e-commerce platform with multi-domain and multi-language support for PHP 8

Surikata.io Full-featured e-commerce platform with multi-domain and multi-language support for PHP 8. Free to use for both commercial and personal pro

null 8 Apr 5, 2022
Begining of an e-commerce website using PHP and the MVC Pattern

Begining of an e-commerce website using PHP and the MVC Pattern

Ulysse Valdenaire 5 Dec 25, 2022
E-commerce web application using php routing

E-commerce Website E-commerce web application built using php routing. Instead of relying on the web server to map the request path to a file, all req

Olorunfemi-Ojo Tomiwa 13 Dec 26, 2022
Drag and Drop Website Builder and CMS with E-commerce

Microweber: Drag-and-Drop CMS Current version: 1.2 running on Laravel 8! Download | What is Microweber? | Core features of Microweber | Requirements |

Microweber 2.6k Dec 28, 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 FREE E-Commerce Software

Laravel FREE E-Commerce Software

Jeff Simons Decena 1.7k Dec 24, 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
E-Commerce Laravel Project

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Mohamed Fadl 2 Dec 10, 2022
A e-commerce website with Laravel, Vue

A eCommerce using Laravel Version: 1.0 Release of the Laravel eCommerce. Technologies and libraries Laravel 7+, PHP 7+. JavaScript & VueJS Framework.

Jackson Zhang 1 Nov 4, 2021
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