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

Last update: Aug 3, 2022
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.

GitHub

https://github.com/aimeos/aimeos-core
Comments
  • 1. 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?

    Reviewed by nvindice at 2019-05-07 16:19
  • 2. [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.

    Reviewed by AndreasA at 2016-08-23 21:24
  • 3. 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.

    Reviewed by AndreasA at 2017-02-15 10:58
  • 4. 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.

    Reviewed by jonaseberle at 2021-12-02 14:06
  • 5. 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?

    Reviewed by nvindice at 2019-04-29 17:06
  • 6. 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.

    Reviewed by nvindice at 2019-10-07 11:03
  • 7. 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

    Reviewed by nvindice at 2019-04-29 14:46
  • 8. 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.

    Reviewed by nvindice at 2022-01-06 12:22
  • 9. 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()

    Reviewed by gilbertsoft at 2017-02-15 08:53
  • 10. 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.

    Reviewed by nvindice at 2019-04-30 16:36
  • 11. Always index lowest price

    Sorry I have to bring up this topic again, but currenty the 2019.x branch behaves different than the 2018.10 branch.

    When indexing prices, the lowest price should be indexed, to mimic 2018.x's behaviour. This is important in certain use cases, see my last comment in the original PR #140.

    Reviewed by nvindice at 2019-04-02 16:30
  • 12. Postgresql index Error after setup

    Hi aimeos, I use : PostgreSQL 14 "laravel/framework": "^9.2",

    "php": "^7.3|^8.0", "aimeos/aimeos-laravel": "~2022.04", "aimeos/ai-cms-grapesjs": "2022.04.1", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "laravel/framework": "^9.2", "laravel/jetstream": "^2.2", "laravel/sanctum": "^2.6", "laravel/tinker": "^2.5", "livewire/livewire": "^2.0", "phing/phing": "^2.16"

    After update to the version 2022.04 : when i run php artisan aimeos:setup i get :

      Checking table "mshop_index_attribute": 
      Checking table "mshop_index_catalog": 
      Checking table "mshop_index_price": 
      Checking table "mshop_index_supplier": 
      Checking table "mshop_index_text": 
    Remove old indexes from mshop_index_* tables
    Creating index schema
    In ExceptionConverter.php line 78:                                                                                                                                       
      An exception occurred while executing a query: SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "idx_msindte_content" already    
      exists 
    In Exception.php line 30:
      SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "idx_msindte_content" already exists  
    In Connection.php line 34:
      SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "idx_msindte_content" already exists  
    

    Thank you

    Reviewed by MahmoudDevo at 2022-04-12 00:14
  • 13. 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.

    Reviewed by nvindice at 2021-11-18 16:18
  • 14. 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

    Reviewed by iammart at 2021-09-28 09:52
  • 15. [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

    Reviewed by nvindice at 2018-09-21 06:08
Aimeos is THE professional, full-featured and high performance e-commerce package for Laravel
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

Jul 10, 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

Aug 8, 2022
PrestaShop is a fully scalable open source e-commerce solution.
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.

Aug 15, 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.

Aug 8, 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.

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

Dec 12, 2021
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

Jun 26, 2022
Laravel eCommerce headless APIs allow you to experience seamless and easily scalable storefront performance.
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

Apr 21, 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

Aug 3, 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

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

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

Jun 19, 2022
E-commerce web application using php routing
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

Jul 2, 2022
Drag and Drop Website Builder and CMS with E-commerce
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 |

Aug 7, 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

May 10, 2021
Laravel FREE E-Commerce Software

Laravel FREE E-Commerce Software

Aug 7, 2022
Zen Cart® is a full-function e-commerce application for your website.
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

Aug 3, 2022
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

Nov 1, 2021
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.

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

Jun 8, 2021