Downloads

Verkauft digitale Produkte über einen Payload-Shop mit signierten Download-Links, die ablaufen und bei Rückerstattung sofort ungültig werden.

Community 1 1/Wo. MIT v1.0.1

Installation

pnpm add payload-downloads

Über

Das Plugin verkauft digitale Produkte aus einem Payload-E-Commerce-Shop. Ein Produkt oder ein Variante hält eine oder mehrere Dateien, ein bezahlter Auftrag gewährt Zugriff darauf, und die Kundin erhält einen signierten Link, der abläuft, jeden Download zählt und sofort stoppt, wenn der Auftrag zurückerstattet wird. Das Plugin hängt sich in den `afterChange`-Hook der Orders-Collection ein und gewährt oder entzieht Zugriff abhängig vom Auftragsstatus. Es legt eine `download-grants`-Collection an, die für jede Order und Datei einen Grant mit Feldern wie `downloadCount`, `downloadLimit`, `expiresAt`, `lastDownloadedAt` und `revoked` protokolliert. An Products- und Variants-Collection fügt es eine `downloadable`-Checkbox und ein `downloadFiles`-Upload-Feld (hasMany) hinzu. Zwei Endpunkte ergänzen das Setup: `GET /api/downloads` liefert angemeldeten Kundinnen ihre eigenen Grants, `GET /api/downloads/file` streamt die Dateibytes. Es funktioniert mit `@payloadcms/plugin-ecommerce` und jeder Collection, die Orders speichert. Die signierten Links nutzen `node:crypto` HMAC-SHA256 ohne Runtime-Abhängigkeiten. Der Schlüssel wird vom Payload-Secret abgeleitet, ist aber nicht das Secret selbst. Grant, Order, Datei und Ablaufzeitpunkt liegen innerhalb der signierten Nachricht, wodurch sich eine Signatur nicht auf eine andere Datei, Order, Grant oder einen späteren Ablauf übertragen lässt. Die Verifikation erfolgt über `timingSafeEqual`. Die Datei wird vom Plugin gestreamt, sodass weder Speicherpfad, URL noch Bucket-Key den Client erreichen. Bevor das Plugin einen Byte schreibt, lädt es den Grant neu und verweigert die Ausgabe, wenn er widerrufen, abgelaufen oder am Limit ist. Eine Rückerstattung stoppt also auch bereits verteilte Links. Optionen steuern Download-Limit, Ablauftage, Link-TTL, die Status, die gewähren oder widerrufen, sowie Customer- und Collection-Slugs. Lokaler Speicher funktioniert ohne weitere Konfiguration. Da Payload keine stabile öffentliche API zum Lesen der Bytes hinter einem Upload-Dokument bietet, wenn ein Cloud-Adapter diese verwaltet, benötigt ein Storage-Adapter einen `fileResolver`-Callback. Es gibt keine Admin-Komponenten, was das Plugin über kleinere Payload-Releases stabil hält. Server-seitige Helper wie `downloadLinksForOrder`, `grantAccess` und `revokeAccess` stehen für Order-E-Mails oder eigene Abläufe zur Verfügung.

Paketinformationen

Paketname
payload-downloads
Neueste Version
1.0.1
Entpackte Größe
47 kB
Lizenz
MIT
Wöchentliche Downloads
1
Zuletzt veröffentlicht
21. Aug. 2026

Mehr von Poseidonas

Profil ansehen

Ähnliche Plugins

Mehr in Commerce