Einfache Rückgabe – keine Fragen
Installieren, einrichten und profitieren
Priorität für Hilfe & Zufriedenheit
Digitale Revolution
Digitale Produkte verkaufen — Lizenzschlüssel + Domainregistrierung + sichere Downloads
Sell digital products professionally with Digital Revolution — an advanced module for managing software licenses, domain-restricted downloads, watermarked files, and support subscriptions. Perfect for selling PrestaShop modules, themes, software, digital media, or any downloadable product that needs licensing and access control.
Go beyond PrestaShop's basic virtual product support with per-domain licensing, automatic license key generation, download watermarking, expiration management, and tiered support plans with renewal tracking.
Key Benefits
- License Management: Generate and validate license keys with domain restrictions.
- Watermarked Downloads: Automatically watermark files with customer-specific identifiers.
- Support Subscriptions: Tiered support plans with expiration and renewal management.
- Domain Registration: Customers register domains for license activation and validation.
- Download Control: Expiring links, download limits, and version management.
Professional Digital Product Sales
PrestaShop's built-in virtual product support is minimal — attach a file, set a download limit, done. If you sell software, modules, themes, or any digital product that requires licensing, Digital Revolution gives you the tools you need.
License Key System
Automatically generate unique license keys on purchase. Validate keys against registered domains via API. Set maximum domain activations per license. Revoke or transfer licenses from the admin panel.
Domain Registration
Customers register the domain(s) where they'll use your product. The license validation API checks the reqüsting domain against registered domains. This prevents unauthorized use while giving legitimate customers a smooth experience.
Watermarked Downloads
Automatically embed customer-specific identifiers into downloadable files. If a file appears on a piracy site, you can trace it back to the source. Supports PDF watermarking and ZIP file marking.
Support Subscriptions
Offer tiered support plans (e.g., 3 months free, 6/9/12 month paid options). Track expiration dates, send renewal reminders, and manage support access based on active subscription status.
Version Management
- Upload multiple versions of a product
- Customers always get the latest version
- Changelog management per version
- Selective access based on license tier
- Automatic update notifications
Warum ist dieses Modul einzigartig?
- License key generation with domain registration and validation API.
- Watermarked downloads that embed customer information in delivered files.
- Support subscription management with configurable duration and pricing.
- Version management with release channels (stable, beta, development).
Anwendungsfälle
- Software developers selling modules, plugins, or themes with license protection.
- Digital content creators selling downloadable assets with watermark protection.
- SaaS-like businesses selling software with ongoing support subscriptions.
-
Referencemprdigitalrevolution
-
In stock4 Items
-
PrestaShop-KompatibilitätPS 1.7 – 9.x
-
PreismodellEinmalkauf
-
ModultypFront & Back-office
-
DSGVO-relevantNein
-
GeschäftszielAbläufe optimieren
-
Externes Konto erforderlichNein
-
Modul-KomplexitätKomplettlösung
-
Phase der Customer JourneyShop verwalten
-
Funktioniert mit PlattformKeine externe Plattform
MPR Digital Products
Ein PrestaShop-Modul für den Verkauf und die Verteilung digitaler Produkte (Module, Themes, Addons) mit Lizenzverwaltung, Domain-Binding, personalisierten Downloads mit Wasserzeichen und Auto-Updates per Mausklick.
Funktionen
Lizenzverwaltung
- Lizenztypen: Unbefristete Lizenzen, Abonnement- oder Testlizenzen
- Domain-Binding: Installationen pro Lizenz begrenzen (z.B. 1 Domain pro Lizenz)
- Dev-Domain-Erkennung: localhost, Staging- und Dev-Domains werden nicht mitgezaehlt
- Lizenzstatus-Verfolgung: Aktiv, gesperrt, abgelaufen, widerrufen
- Karenzzeit: Konfigurierbare Karenzzeit für fehlgeschlagene Validierungen (Standard: 7 Tage)
Produktverteilung
- Versionsverwaltung: Releases mit Versionsnummern, Changelogs und Kompatibilitätsinformationen verfolgen
- Branch-Unterstützung: stable, beta, dev, legacy Branches pro Produkt
- Personalisierte Downloads: Jeder Download wird mit Lizenzinformationen als Wasserzeichen versehen zur Piraterie-Verfolgung
- Sichere Tokens: Zeitlich begrenzte Download-Tokens verhindern unbefugtes Teilen
Kundenportal
- Meine Lizenzen: Kunden können ihre Lizenzen unter
/licenseseinsehen und verwalten - Domain-Registrierung: Domains direkt über das Portal registrieren
- Download-Verlauf: Alle Downloads pro Lizenz verfolgen
- Support-Status: Ablauf des Supports und Verlängerungsoptionen einsehen
Auto-Update-System
- Updates per Mausklick: Module können automatisch nach Updates suchen und diese installieren
- Pre-flight-Prüfungen: Validiert Speicherplatz, Berechtigungen und PHP-Erweiterungen vor dem Update
- Atomic Swap: Altes Modul wird gesichert, bevor die neue Version installiert wird
- Rollback-Unterstützung: Automatische Wiederherstellung bei fehlgeschlagenem Update
- Upgrade-Scripts: Datenbank-Migrationen zwischen Versionen ausführen
Vorbestellung / Demnaechst verfügbar
- Nicht bestellbare Produkte: Produkte als "demnaechst verfügbar" markieren mit erwartetem Erscheinungsdatum
- Release-Benachrichtigungen: Kunden können sich benachrichtigen lassen, wenn ein Produkt veröffentlicht wird
- Warenkorb-Warnungen: Informationen anzeigen, wenn nicht bestellbare Produkte im Warenkorb sind
Preissystem
- Lizenzlaufzeiten: Verschiedene Lizenzlaufzeiten anbieten (1 Monat, 1 Jahr, unbefristet usw.)
- Support-Zeiträume: Separate Preisgestaltung für die Support-Dauer
- Produktvarianten: Lizenz + Support + Dienstleistungen zu Paketen kombinieren
- Dynamische Preisgestaltung: Warenkorbspezifische Preise über PrestaShops SpecificPrice-System
Dienstleistungen & Add-ons
- Gebundelte Dienstleistungen: Installation, Anpassung, Prioritäts-Support
- Einzelpreise pro Dienstleistung: Jede Dienstleistung hat einen eigenen Preis, der zum Gesamtbetrag hinzugefügt wird
Support-Abonnements (Stripe)
- Wiederkehrende Zahlungen: Stripe-Integration für Abonnement-Abrechnung
- Support-Verlängerungen: Kunden können den Support nach Ablauf verlängern
- Maximale Support-Obergrenze: Pro-Produkt-Limit, wie weit im Voraus Support erworben werden kann (z.B. max. 3 Jahre)
- Webhook-Verarbeitung: Automatische Statusaktualisierungen von Stripe
Analysen & Protokollierung
- Download-Logs: Jeden Download mit IP, User Agent, Wasserzeichen-ID verfolgen
- API-Logs: Alle Lizenzvalidierungsanfragen werden protokolliert
- Shop-Validierungsverlauf: Domain-Validierungsversuche und Ergebnisse verfolgen
Installation
- Ordner
mprdigitalproductsnach/modules/hochladen - Install from PrestaShop back office → Modules
- Stripe API-Schlüssel in den Einstellungen konfigurieren (für Support-Abonnements)
- PrestaShop Cache leeren
Voraussetzungen
- PrestaShop 1.7.0 - 8.x
- PHP 7.4+
- ZipArchive-Erweiterung (für Downloads)
Back-Office-Struktur
Das Modul fügt ein Digital Products-Menue unter VERKAUF hinzu mit:
Digital Products
├── Dashboard
├── Catalog
│ ├── Products - Digital products catalog
│ ├── Releases - Version releases and ZIPs
│ └── Services - Add-on services (installation, etc.)
├── Licensing
│ ├── Licenses - Customer licenses
│ └── Domains - Registered domains/shops
├── Support
│ ├── Subscriptions - Active support subscriptions
│ └── Support Plans - Subscription plan configuration
├── Analytics
│ ├── Downloads - Download history
│ └── API Logs - License validation logs
├── Settings - Module configuration
└── System Check - Integrity verification
Datenbanktabellen
| Tabelle | Zweck |
|---|---|
mprdigitalproducts_product |
Katalog digitaler Produkte |
mprdigitalproducts_release |
Versions-Releases mit Dateiinformationen |
mprdigitalproducts_license |
Kundenlizenzen |
mprdigitalproducts_shop |
Registrierte Domains/Installationen |
mprdigitalproducts_license_shop |
Lizenz-Domain-Zuordnungen |
mprdigitalproducts_download_token |
Temporäre Download-Tokens |
mprdigitalproducts_download_log |
Download-Verlauf |
mprdigitalproducts_support_plan |
Support-Abonnement-Plaene |
mprdigitalproducts_support_subscription |
Aktive Abonnements |
mprdigitalproducts_support_payment |
Abonnement-Zahlungen |
mprdigitalproducts_validation_log |
API-Validierungsanfragen |
mprdigitalproducts_shop_validation_log |
Shop-Validierungsverlauf |
mprdigitalproducts_variant |
Produktvarianten-Pakete |
mprdigitalproducts_license_price |
Lizenzlaufzeit-Preise |
mprdigitalproducts_support_price |
Support-Zeitraum-Preise |
mprdigitalproducts_service |
Zusatzdienstleistungen |
mprdigitalproducts_cart_variant |
Warenkorb-Variantenauswahl |
mprdigitalproducts_notify |
Release-Benachrichtigungs-Abonnenten |
mprdigitalproducts_banned_domain |
Gesperrte Domains |
mprdigitalproducts_rate_limit |
API-Rate-Limiting |
API-Endpunkte
Basis-URL: https://yoursite.com/api/license/{action}
Lizenzvalidierung
POST /api/license/validate
Headers: X-License-Key: YOUR-LICENSE-KEY
Body: { "domain": "example.com", "module": "yourmodule" }
Nach Updates suchen
POST /api/license/check
Headers: X-License-Key: YOUR-LICENSE-KEY
Body: { "module": "yourmodule", "version": "1.0.0" }
Download-Token erhalten
POST /api/license/download
Headers: X-License-Key: YOUR-LICENSE-KEY
Body: { "id_release": 123, "id_shop": 456 }
Datei herunterladen
GET /download/{token}
Konfigurationsoptionen
| Einstellung | Beschreibung | Standard |
|---|---|---|
module_enabled |
Modul aktivieren/deaktivieren | true |
api_rate_limit |
Anfragen pro Stunde | 100 |
default_support_months |
Inkludierter kostenloser Support | 3 |
default_max_domains |
Domains pro Lizenz | 1 |
allow_domain_change |
Domain-Neuzuweisung erlauben | true |
dev_domains_free |
Dev-Domains zaehlen nicht | true |
grace_period_days |
Karenzzeit für fehlgeschlagene Validierungen | 7 |
watermark_downloads |
Lizenzinformationen in Downloads einbetten | true |
stripe_mode |
test oder live | test |
Produktspezifische Einstellungen
| Feld | Beschreibung | Standard |
|---|---|---|
support_months |
Kostenloser Support beim Kauf inklusive | 3 |
max_support_months |
Maximal erwerbbare Support-Monate (-1 = unbegrenzt) | 36 |
max_domains |
Erlaubte Domains pro Lizenz | 1 |
Verwendete Hooks
| Hook | Zweck |
|---|---|
displayBackOfficeHeader |
Admin-CSS/JS laden |
actionAdminControllerSetMedia |
Admin-Assets |
displayCustomerAccount |
"Meine Lizenzen"-Link im Kundenkonto |
actionValidateOrder |
Lizenz bei Bestellabschluss generieren |
actionOrderStatusPostUpdate |
Bestellstatusänderungen verarbeiten |
moduleRoutes |
Freundliche URLs registrieren |
actionFrontControllerSetMedia |
Frontend-CSS/JS laden |
displayProductAdditionalInfo |
Variantenauswahl auf der Produktseite |
actionCartUpdateQuantityBefore |
Variante beim Hinzufügen zum Warenkorb speichern |
displayShoppingCartFooter |
Warnungen für nicht bestellbare Produkte |
actionMPRCheckoutValidateOrder |
Checkout für nicht bestellbare Artikel blockieren |
Geplante Funktionen / TODO
- Ticketsystem-Integration (Support-Tickets pro Lizenz)
- Mehrwährungsunterstützung für Lizenzpreise
- Massenlizenzgenerierung für Wiederverkäufer
- Lizenzübertragung zwischen Kunden
- Nutzungsanalyse-Dashboard
- Webhook-Benachrichtigungen für Lizenzereignisse
- Integration mit dem PrestaShop Addons Marktplatz
Modul-Release-Workflow
Dieser Abschnitt behandelt die praktischen Schritte zur Veröffentlichung eines neuen Moduls über das MPR Digital Products System.
Voraussetzungen
- Modul-Quellcode bereit zur Verteilung
- Zugang zum MPR Digital Products Back Office
- Datenbankzugang für die Release-Verwaltung
Schritt 1: Modul vorbereiten
Erforderliche Dateien
Ihr Modul muss die UpdateChecker.php-Klasse für Auto-Update-Unterstützung enthalten:
yourmodule/
├── yourmodule.php # Main module file
├── classes/
│ └── UpdateChecker.php # Copy from mprdigitalproducts/src/Classes/Protection/
├── views/
├── controllers/
└── ...
UpdateChecker kopieren
cp modules/mprdigitalproducts/src/Classes/Protection/UpdateChecker.php \
modules/yourmodule/classes/
Update Checker in das Modul integrieren
Fügen Sie Folgendes zur getContent()-Methode Ihres Moduls hinzu:
public function getContent()
{
$output = '';
// Handle auto-update AJAX reqüst
if (Tools::getValue('ajax') && Tools::getValue('action') === 'mpr_auto_update') {
$this->handleAutoUpdate();
}
// Check for updates and show notification
$output .= $this->checkForUpdates();
// ... rest of your configuration
return $output . $this->renderConfigurationForm();
}
private function checkForUpdates()
{
$checkerPath = dirname(__FILE__) . '/classes/UpdateChecker.php';
if (!file_exists($checkerPath)) {
return '';
}
require_once $checkerPath;
$checker = \MPRDigitalProducts\Classes\Protection\UpdateChecker::fromModule(
$this->name,
$this->version
);
if (!$checker) {
return '';
}
return $checker->getUpdateNotification();
}
private function handleAutoUpdate()
{
require_once dirname(__FILE__) . '/classes/UpdateChecker.php';
$checker = \MPRDigitalProducts\Classes\Protection\UpdateChecker::fromModule(
$this->name,
$this->version
);
if (!$checker) {
header('Content-Type: application/json');
die(json_encode(['success' => false, 'error' => 'License configuration not found']));
}
header('Content-Type: application/json');
die(json_encode($checker->handleAjaxUpdate()));
}
Schritt 2: Release-ZIP erstellen
Verzeichnisstruktur
Release-ZIPs werden gespeichert in:
modules/mprdigitalproducts/releases/{module_name}/
ZIP-Strukturanforderungen
Das ZIP muss das Modul in einem Ordner enthalten, der dem Modulnamen entspricht:
yourmodule-1.0.0.zip
└── yourmodule/
├── yourmodule.php
├── classes/
│ └── UpdateChecker.php
└── ...
Build-Script-Beispiel
Erstellen Sie build_release.php in Ihrem Modul:
<?php
/**
* Build release ZIP for yourmodule
* Usage: php build_release.php [version]
*/
$moduleName = 'yourmodule';
$modulePath = dirname(__FILE__);
$version = $argv[1] ?? null;
if (!$version) {
die("Usage: php build_release.php <version>\n");
}
// Update version in main file
$mainFile = file_get_contents("$modulePath/$moduleName.php");
$mainFile = preg_replace(
'/\$this->version\s*=\s*\'[^\']+\';/',
"\$this->version = '$version';",
$mainFile
);
file_put_contents("$modulePath/$moduleName.php", $mainFile);
// Output directory
$outputDir = dirname($modulePath) . "/mprdigitalproducts/releases/$moduleName";
if (!is_dir($outputDir)) {
mkdir($outputDir, 0755, true);
}
// Create ZIP
$zip = new ZipArchive();
$zipPath = "$outputDir/$moduleName-$version.zip";
if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($modulePath, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::LEAVES_ONLY
);
$excludePatterns = [
'node_modules', '.git', 'build_release.php', '_releases',
'.mpr_license.json', 'yarn.lock', 'package-lock.json',
'package.json', 'Gruntfile.js', 'gulpfile.js', '.env'
];
foreach ($iterator as $file) {
$filePath = $file->getRealPath();
$relativePath = "$moduleName/" . substr($filePath, strlen($modulePath) + 1);
// Skip excluded files
$skip = false;
foreach ($excludePatterns as $pattern) {
if (strpos($relativePath, $pattern) !== false) {
$skip = true;
break;
}
}
if ($skip) continue;
$zip->addFile($filePath, $relativePath);
}
$zip->close();
$hash = hash_file('sha256', $zipPath);
$size = filesize($zipPath);
echo "Created: $zipPath\n";
echo "Hash: $hash\n";
echo "Size: $size bytes\n";
echo "\n--- SQL to insert release ---\n";
echo "INSERT INTO ps_mprdigitalproducts_release
(id_digital_product, version, file_path, file_hash, file_size, is_latest, active, date_add)
VALUES (
(SELECT id_digital_product FROM ps_mprdigitalproducts_product WHERE module_name = '$moduleName'),
'$version',
'$moduleName/$moduleName-$version.zip',
'$hash',
$size,
1,
1,
NOW()
);\n";
} else {
die("Failed to create ZIP\n");
}
Ausführen:
php modules/yourmodule/build_release.php 1.0.0
Schritt 3: Produkt in der Datenbank registrieren
Digitalen Produkteintrag erstellen
INSERT INTO ps_mprdigitalproducts_product (
id_product, -- PrestaShop product ID (for shop integration)
type, -- 'module', 'theme', or 'addon'
module_name, -- Technical name (folder name)
display_name, -- Human-readable name
current_version, -- Latest version
min_ps_version, -- Minimum PrestaShop version
max_ps_version, -- Maximum PrestaShop version
min_php_version, -- Minimum PHP version
support_months, -- Support duration
max_domains, -- Domains per license
active,
orderable,
date_add,
date_upd
) VALUES (
NULL, -- Or link to PrestaShop product
'module',
'yourmodule',
'Your Module Name',
'1.0.0',
'1.7.0.0',
'8.99.99',
'7.4',
12, -- 12 months support
1, -- 1 domain per license
1,
1,
NOW(),
NOW()
);
Release-Eintrag erstellen
INSERT INTO ps_mprdigitalproducts_release (
id_digital_product,
version,
file_path, -- Relative to releases/ directory
file_hash, -- SHA256 hash of ZIP
file_size, -- Size in bytes
changelog,
min_php_version,
min_ps_version,
max_ps_version,
is_latest, -- Set to 1 for latest version
active,
date_add
) VALUES (
(SELECT id_digital_product FROM ps_mprdigitalproducts_product WHERE module_name = 'yourmodule'),
'1.0.0',
'yourmodule/yourmodule-1.0.0.zip',
'abc123...64char_sha256_hash...',
12345,
'# Version 1.0.0\n\n- Initial release',
'7.4',
'1.7.0.0',
'8.99.99',
1,
1,
NOW()
);
Schritt 4: Neue Version veröffentlichen
Beim Veröffentlichen eines Updates:
1. Neues ZIP erstellen
php modules/yourmodule/build_release.php 1.1.0
2. is_latest-Flags aktualisieren
-- Remove latest flag from old versions
UPDATE ps_mprdigitalproducts_release
SET is_latest = 0
WHERE id_digital_product = (
SELECT id_digital_product FROM ps_mprdigitalproducts_product
WHERE module_name = 'yourmodule'
);
-- Insert new release (with is_latest = 1)
INSERT INTO ps_mprdigitalproducts_release (...) VALUES (...);
-- Update product's current_version
UPDATE ps_mprdigitalproducts_product
SET current_version = '1.1.0', date_upd = NOW()
WHERE module_name = 'yourmodule';
Funktionsweise der Auto-Updates
Update-Ablauf
- Nach Updates suchen: Modul ruft API
updates/checkmit License Key auf - Download-Token erhalten: Falls Update verfügbar, wird
updates/downloadaufgerufen für temporären Token - Pre-flight-Prüfungen: Validiert Speicherplatz, Berechtigungen, ZipArchive-Verfügbarkeit
- Backup: Erstellt ZIP-Backup des aktuellen Moduls + SQL-Dump der Modultabellen
- Download & Verifizierung: Lädt ZIP herunter, validiert Struktur (Hash-Prüfung wird bei personalisierten Dateien übersprungen)
- Atomic Swap: Benennt aktuelles Modul in
_oldum, verschiebt neues Modul an die Stelle - Lizenz wiederherstellen: Bewahrt
.mpr_license.jsonaus der vorherigen Installation - Upgrades ausführen: Führt alle
upgrade/upgrade-X.X.X.php-Scripts aus - Aufraumen: Entfernt temporäre Dateien und altes Modulverzeichnis
Personalisierte Downloads
Downloads werden mit eingebetteter Lizenzkonfiguration (.mpr_license.json) personalisiert, sodass der Datei-Hash vom Original abweicht. Das System überspringt die Hash-Verifizierung für personalisierte Dateien, validiert aber weiterhin die ZIP-Struktur.
Rollback
Wenn das Update nach dem Atomic Swap an irgendeinem Punkt fehlschlaegt, stellt das System automatisch das gesicherte Modul wieder her.
Upgrade-Scripts
Für Datenbank-Migrationen zwischen Versionen erstellen Sie Scripts in upgrade/:
yourmodule/
└── upgrade/
├── upgrade-1.1.0.php
└── upgrade-2.0.0.php
Script-Format:
<?php
function upgrade_module_1_1_0($module)
{
// Run database migrations
$sql = 'ALTER TABLE `' . _DB_PREFIX_ . 'yourmodule_data` ADD `new_field` VARCHAR(255)';
return Db::getInstance()->execute($sql);
}
Dateistruktur-Referenz
modules/mprdigitalproducts/
├── releases/ # Release ZIPs organized by module
│ └── yourmodule/
│ ├── yourmodule-1.0.0.zip
│ ├── yourmodule-1.1.0.zip
│ └── yourmodule-2.0.0.zip
├── temp/ # Temporary files during download personalization
├── uploads/ # Customer uploads (tickets, etc.)
├── src/
│ └── Classes/
│ ├── MPRDigitalProductsProduct.php
│ ├── MPRDigitalProductsLicense.php
│ ├── MPRDigitalProductsRelease.php
│ ├── MPRDigitalProductsShop.php
│ ├── MPRDigitalProductsVariant.php
│ ├── MPRDigitalProductsNotify.php
│ ├── ... (20+ entity classes)
│ ├── Protection/
│ │ ├── UpdateChecker.php # Copy to your modules
│ │ ├── IntegrityCore.php # File integrity verification
│ │ └── Obfuscator.php # Code protection
│ └── Services/
│ ├── DownloadService.php # Handles watermarked downloads
│ ├── UpdateService.php # Auto-update logic
│ ├── LicenseService.php # License operations
│ ├── ValidationService.php # Domain validation
│ ├── ReleasePackagerService.php
│ └── ... (10+ services)
├── controllers/
│ ├── admin/ # 14 admin controllers
│ │ ├── AdminMPRDigitalProductsDashboardController.php
│ │ ├── AdminMPRDigitalProductsProductsController.php
│ │ ├── AdminMPRDigitalProductsLicensesController.php
│ │ └── ...
│ └── front/ # 7 front controllers
│ ├── Api.php # License validation API
│ ├── Download.php # Secure file downloads
│ ├── Portal.php # Customer license portal
│ ├── Subscription.php # Support checkout
│ ├── Ticket.php # Support tickets
│ └── Webhook.php # Stripe webhooks
├── views/
│ ├── css/
│ ├── js/
│ └── templates/
├── sql/
│ ├── install.php
│ └── uninstall.php
├── mprdigitalproducts.php # Main module class
└── vendor/ # Composer dependencies (Stripe, etc.)
Schnelle Release-Checkliste
- Versionsnummer in der Haupt-PHP-Datei des Moduls aktualisieren
- Neüste
UpdateChecker.phpin den Classes-Ordner des Moduls kopieren - Release-ZIP mit korrekter Struktur erstellen
- SHA256-Hash berechnen
- Release-Verzeichnis erstellen:
releases/{module_name}/ - ZIP im Release-Verzeichnis ablegen
- Release-Eintrag in der Datenbank erstellen
-
is_latest-Flag aktualisieren (bei altem entfernen, bei neuem setzen) -
current_versionin der Produkttabelle aktualisieren - Download über das Kundenportal testen
- Auto-Update vom installierten Modul testen
v1.1.0 — 2026-02-01
- ▸Added PS 9.1 compatibility with updated virtual product handling
- ▸New download analytics dashboard showing downloads per product, customer, and time period
- ▸Added automatic download link expiration with configurable renewal workflow
- ▸Fixed download limit counter not decrementing for resumed downloads
- ▸Added digital product bundle support (multiple files per virtual product)
- ▸Improved download speed with chunked transfer and range reqüst support
v1.0.4 — 2025-09-20
- ▸Added PS 9.0 compatibility
- ▸Fixed download links breaking when shop URL uses subfolder configuration
- ▸Added file integrity verification (SHA-256 checksum) shown to customer before download
- ▸Fixed concurrent download limit not enforcing across multiple browser sessions
v1.0.3 — 2025-05-12
- ▸Fixed download notification email not including order reference number
- ▸Added S3-compatible cloud storage support for digital product files
- ▸Fixed large file downloads (2GB+) timing out on shared hosting
- ▸Improved download token security with HMAC-based URL signing
v1.0.2 — 2024-12-08
- ▸Added PS 8.2 compatibility with new virtual product tab
- ▸Fixed download page not respecting shop-specific SSL configuration
- ▸Added customer download history page in My Account section
- ▸Fixed file access control allowing downloads from cancelled orders
v1.0.1 — 2024-08-22
- ▸Fixed download counter displaying incorrectly for multi-file products
- ▸Added watermark injection for PDF digital products with customer info
- ▸Fixed download manager JavaScript not loading on order confirmation page
v1.0.0 — 2024-05-20
- ▸Initial release with enhanced digital product delivery system
- ▸Configurable download limits per product and per customer
- ▸Time-limited download links with expiration management
- ▸Download progress tracking and resume support
- ▸Email notifications with secure download links
- ▸Support for PS 1.7.6+ and PS 8.x
License key generation and management
ImplementedAuto-update notifications for installed modules
ImplementedCustomer domain registration with verification
ImplementedVersion management with changelog display
ImplementedDemo download with watermark and time limit
ImplementedREST API for license validation
ImplementedSubscription renewals with reminder emails
ImplementedEinfache Rückgabe – keine Fragen
Installieren, einrichten und profitieren
Priorität für Hilfe & Zufriedenheit
Noch keine Bewertungen. Seien Sie der Erste!
Bewertung schreiben