Modern, fast, and user-friendly REST API and Python Desktop Application developed for PrestaShop e-commerce platform.
- Features
- Technologies
- Installation
- Usage
- API Documentation
- Python Application
- Security
- Troubleshooting
- Contributing
- License
- β RESTful Architecture: Standard HTTP methods (GET, POST, PUT, DELETE)
- β Product Management: Full CRUD operations
- β Order Management: View orders and update status
- β Secure: API Key authentication, IP restriction
- β CORS Support: Cross-origin resource sharing
- β JSON Format: All responses in standard JSON format
- β Pagination: Automatic pagination for large datasets
- β Filtering: Flexible search and filtering options
- β SQL Optimization: High performance with direct SQL queries
- β Error Handling: Detailed and clear error messages
- β Modern Interface: User-friendly GUI with Tkinter
- β Product Management: Add, edit, delete, search products
- β Order Management: View orders, update status
- β Detailed View: View product and order details
- β Context Menus: Right-click menus for quick access
- β Async Operations: Non-blocking UI with threading
- β Auto Connection Test: API status monitoring
- β Multi-language: Supports internationalization
- PHP 7.2+
- PrestaShop 1.7.x / 8.x
- MySQL / MariaDB
- Apache / Nginx
- Python 3.8+
- Tkinter (GUI)
- Requests (HTTP Client)
- python-dotenv (Configuration)
- PrestaShop installed web server
- PHP 7.2 or higher
- Python 3.8 or higher
- MySQL/MariaDB database
Create a folder in your PrestaShop root directory:
/your-prestashop/
βββ prestapi/ # API folder
β βββ api.php
β βββ config.php
β βββ .htaccess
β βββ test.php
β βββ classes/
β βββ ApiHandler.php
β βββ Response.php
β βββ ProductManager.php
β βββ OrderManager.php
Open config.php and configure your settings:
<?php
// PrestaShop root directory
define('PS_ROOT_DIR', dirname(__FILE__) . '/../');
// Generate a secure API key
define('API_KEY', 'your_secret_api_key_here');
// Allowed IP addresses (empty array = public access)
define('ALLOWED_IPS', []);
// Database settings
define('DB_SERVER', 'localhost');
define('DB_USER', 'your_db_user');
define('DB_PASSWD', 'your_db_password');
define('DB_NAME', 'your_db_name');
define('DB_PREFIX', 'ps_');
// API Settings
define('API_DEBUG', true); // Development: true, Production: false
define('API_CORS_ENABLED', true);Open the test page in your browser:
https://yourstore.com/prestapi/test.php
or test the API directly:
https://yourstore.com/prestapi/api.php?resource=products&api_key=your_api_key
β If you get a successful response, PHP API is ready!
# Navigate to project directory
cd prestapi
# Install required packages
pip install -r requirements.txtEdit the config.env file:
# PrestaShop API Configuration
API_URL=https://yourstore.com/prestapi/api.php
API_KEY=your_secret_api_key_hereconfig.php)!
python app.pyβ Application opens and API connection is automatically tested!
List Products:
- Select "π¦ Products" from left menu
- All products displayed in table
Search Products:
- Type product name in search box
- Click "Search" button
Add New Product:
- Click "β New Product" button
- Fill the form:
- Product Name (required)
- Price (required)
- Reference, EAN13, Stock Quantity
- Short Description
- Status (Active/Inactive)
- Click "Save" button
Edit Product:
- Right-click on product β "βοΈ Edit"
- or select product and click edit button
View Product Details:
- Double-click on product
- or right-click β "ποΈ View Details"
Delete Product:
- Right-click β "ποΈ Delete" β Confirm
List Orders:
- Select "π Orders" from left menu
- Recent orders displayed in table
View Order Details:
- Double-click on order
- 3 tabs open:
- General Info: Order summary
- Customer Info: Customer and address
- Products: Products in order
Update Order Status:
- Right-click β "βοΈ Update Status"
- Select new status:
- Awaiting Payment (1)
- Payment Accepted (2)
- Processing (3)
- Shipped (4)
- Delivered (5)
- Canceled (6)
- Refunded (7)
- Click "Update" button
API key must be sent with all requests:
Method 1: Header (Recommended)
curl -H "X-API-Key: your_api_key" https://yourstore.com/prestapi/api.php?resource=productsMethod 2: Query String
curl https://yourstore.com/prestapi/api.php?resource=products&api_key=your_api_keyGET /api.php?resource=productsParameters:
page- Page number (default: 1)limit- Products per page (default: 50, max: 100)active- Status filter (0 or 1)category- Category IDsearch- Search in product name
Example:
curl -H "X-API-Key: your_api_key" \
"https://yourstore.com/prestapi/api.php?resource=products&page=1&limit=10&search=tshirt"Response:
{
"success": true,
"message": "Products retrieved successfully",
"data": {
"items": [
{
"id_product": "1",
"name": "Sample T-Shirt",
"price": "29.99",
"stock_quantity": "100",
"active": "1",
"price_formatted": "29.99 βΊ"
}
],
"pagination": {
"total": 150,
"page": 1,
"limit": 10,
"pages": 15
}
}
}GET /api.php?resource=products&id=1POST /api.php?resource=products
Content-Type: application/json
{
"name": "New Product",
"price": 49.99,
"reference": "REF123",
"quantity": 100,
"active": 1
}PUT /api.php?resource=products&id=1
Content-Type: application/json
{
"price": 59.99,
"quantity": 150
}DELETE /api.php?resource=products&id=1GET /api.php?resource=ordersParameters:
page- Page numberlimit- Orders per pagecustomer- Customer IDstatus- Order statusdate_from- Start date (YYYY-MM-DD)date_to- End date (YYYY-MM-DD)
GET /api.php?resource=orders&id=1PUT /api.php?resource=orders&id=1
Content-Type: application/json
{
"current_state": 3
}Success:
{
"success": true,
"message": "Operation successful",
"data": { ... }
}Error:
{
"success": false,
"message": "Error message",
"errors": null
}200- OK201- Created400- Bad Request401- Unauthorized (Invalid API key)403- Forbidden (IP restriction)404- Not Found500- Internal Server Error
Generate a strong API key:
// Generate random key with PHP
define('API_KEY', bin2hex(random_bytes(32)));Allow access only from specific IPs:
define('ALLOWED_IPS', [
'192.168.1.100', // Office
'203.0.113.50' // Server
]);Disable debug mode in production:
define('API_DEBUG', false);Problem: "Cannot connect to API"
Solution:
- Check URL in
config.env - Verify API key is correct
- Ensure server is accessible
Problem: "Kernel Container is not available"
Solution: β This issue is resolved! API no longer depends on PrestaShop Kernel.
Problem: SQL syntax error
Solution: Check database prefix (config.php β DB_PREFIX)
Problem: ModuleNotFoundError: No module named 'tkinter'
Solution:
Ubuntu/Debian:
sudo apt-get install python3-tkmacOS: Reinstall Python (includes Tkinter)
Windows: Ensure "tcl/tk" option is checked during Python installation
Problem: ModuleNotFoundError: No module named 'requests'
Solution:
pip install -r requirements.txtprestapi/
βββ π PHP API (Backend)
β βββ api.php # Main endpoint
β βββ config.php # Configuration
β βββ test.php # Test interface
β βββ .htaccess # URL rewriting
β βββ classes/
β βββ ApiHandler.php # Request handler
β βββ Response.php # Response handler
β βββ ProductManager.php # Product operations
β βββ OrderManager.php # Order operations
β
βββ π Python Desktop (Frontend)
β βββ app.py # Main application
β βββ api_client.py # API client
β βββ config.env # Configuration
β βββ requirements.txt # Python dependencies
β
βββ π Documentation
βββ README.md # This file
βββ README_PYTHON.md # Python app details
- REST API
- Product CRUD operations
- Order management
- Python desktop application
- API security
- Pagination and filtering
- HTML sanitization
- SQL optimization
- Category management
- Customer management
- Stock tracking
- Bulk operations
- Excel export
- Charts and reports
- Product image upload
- Dark mode
- Multi-language support
- Real-time updates with WebSocket
We welcome contributions!
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project is licensed under the MIT License. See LICENSE file for details.
PrestaShop API & Desktop Manager
- PrestaShop community
- Python Tkinter developers
- All contributors
For questions or suggestions, please open an issue.
- Modern and clean design
- Colorful status indicators
- Easy navigation
- Table view
- Search functionality
- Context menus
- Quick editing
- Detailed order view
- Customer information
- Product list
- Status updates
- Automatic API tests
- Visual result display
- Error details
# Clone repository
git clone https://github.com/yourusername/prestapi.git
# Install PHP API
cd prestapi
# Upload to PrestaShop server
# Install Python app
pip install -r requirements.txt
python app.py- Download latest release
- Follow installation guide above
- Configure
config.phpandconfig.env - Run
python app.py
- Quick Search: Use product search for fast lookup
- Context Menu: Right-click for quick operations
- Double Click: View details quickly
- Keyboard Shortcuts: Enter to save, Escape to cancel
- Multi-select: Planned for future versions
- Fast API: Direct SQL queries for optimal performance
- Efficient Pagination: Handle large datasets smoothly
- Async Operations: Non-blocking UI operations
- Optimized Queries: Minimized database calls
PS_ROOT_DIR- PrestaShop root directoryAPI_KEY- API authentication keyALLOWED_IPS- IP whitelistDB_PREFIX- Database table prefixAPI_DEBUG- Debug modeAPI_CORS_ENABLED- CORS support
API_URL- API endpoint URLAPI_KEY- Authentication key
Currently supports:
- Turkish (tr)
- English (en)
Want to add more languages? Contributions welcome!
- PrestaShop 1.7+
- PHP 7.2+
- MySQL/MariaDB
- Python 3.8+
- requests
- python-dotenv
- tkinter (included with Python)
# Future feature
api.bulk_update_products([
{'id': 1, 'price': 29.99},
{'id': 2, 'price': 39.99}
])// Future feature
$api->registerWebhook('order.created', 'https://yourapp.com/webhook');β If you like this project, please give it a star!
Made with β€οΈ for PrestaShop community