Zum Inhalt springen
Stripe-Connect-Auszahlungen in 47 Ländern
Tutorial··8 Min Lesezeit

Lizenz-Keys richtig integrieren — Activation-API in 15 Minuten

Schritt-für-Schritt-Tutorial: SellYourCode-License-Keys in deine SaaS-App einbauen — mit JS-SDK, Node-Backend und Offline-Fallback.

Von Michael Pasberg

Wer Code verkauft, will ihn auch geschützt ausliefern. Eine simple Download-URL reicht für Vorlagen, aber sobald deine Käufer eine laufende Software bekommen — SaaS-Starter, Bot, Browser-Extension — brauchst du einen Activation-Layer. Sonst landet dein Code in zwei Wochen auf GitHub als „free version".

SellYourCode liefert Lizenz-Keys automatisch beim Verkauf aus. In diesem Tutorial zeigen wir, wie du sie in einer eigenen App validierst — im Browser via JS-SDK oder im Backend über die REST-API. Aufwand: ungefähr 15 Minuten.

Was ein guter Lizenz-Key leistet

  • Bindung an einen Käufer — nicht teilbar wie eine .zip
  • Aktivierungs-Limits — z.B. 3 Geräte pro Lizenz
  • Widerrufbar — bei Refund, Chargeback oder Missbrauch
  • Offline-Toleranz — keine permanente Verbindung nötig

Unsere Keys (Format SYC-XXXX-XXXX-XXXX-XXXX, Crockford-Base32) sind HMAC-signiert — du kannst sie offline strukturell validieren bevor du den Activation-Server fragst. Spart Latenz und blockiert kaputte Eingaben sofort.

1. JS-SDK im Browser einbinden

Für reine Frontend-Produkte (Chrome-Extensions, statische Apps) reicht das SDK. Eine Zeile:

<script src="https://sellyourcode.de/sdk/sellyourcode-license.js"></script>

Dann aktivieren beim ersten Start:

const result = await SellYourCodeLicense.activate({
  productSlug: 'my-bot',
  key: userInput,                 // 'SYC-A1B2-...'
  fingerprint: navigator.userAgent + screen.width,
});

if (result.ok) {
  localStorage.setItem('lic', result.token); // signiertes JWT
} else {
  alert(result.error); // 'invalid' | 'consumed' | 'revoked'
}

Bei jedem App-Start prüfst du nur noch das Token — kein Netzwerk-Call mehr nötig, solange das Token gültig ist (Standard: 7 Tage, dann Re-Validation).

2. Im Node-Backend validieren

Für SaaS mit Server-Komponente verlagerst du den Check ins Backend. Vorteil: der Käufer kann das Token nicht im DevTools manipulieren.

// POST https://sellyourcode.de/api/licenses/activate
const res = await fetch('https://sellyourcode.de/api/licenses/activate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    productSlug: 'my-saas',
    key: req.body.key,
    fingerprint: req.ip,           // oder eine Tenant-ID
  }),
});
const { ok, token, expiresAt } = await res.json();
if (!ok) return res.status(402).json({ error: 'license invalid' });

// Token in eigener DB speichern, bei jedem Auth-Request mit-prüfen
await db.users.update({ where: { id }, data: { license: token } });

Wichtig: fingerprint ist frei wählbar — alles, was eine Installation eindeutig macht. Wir merken uns diese Werte und blockieren die 4., 5., …-te Aktivierung pro Lizenz. Bei Refund werden alle aktivierten Fingerprints in einem Schritt invalidiert.

3. Offline-Fallback

Was tun, wenn der Käufer offline ist oder unser Activation-Server gerade gewartet wird? Drei bewährte Strategien:

  1. Strukturvalidierung— Format & HMAC offline prüfen (Public-Key gehört dir, das Secret bleibt bei SellYourCode). Reicht für „nicht-vollständig-fake".
  2. Grace-Period — Token aus letzter erfolgreicher Aktivierung lokal cachen, z.B. 14 Tage gültig.
  3. Soft-Fail — bei Activation-Fehler nicht crashen, sondern Feature freischalten und im Hintergrund retry. Vermeidet schlechte Erfahrungen bei kurzen Outages.

4. Refund-Flow korrekt verkabeln

Bei Refund (über Stripe oder unseren Support) wird die Lizenz automatisch revoked. Dein Webhook bekommt:

{
  "event": "license.revoked",
  "key": "SYC-A1B2-...",
  "reason": "refund",            // oder "chargeback", "abuse", "expired"
  "revokedAt": "2026-05-12T10:14:00Z"
}

In deinem Webhook-Handler reicht ein UPDATE users SET license=null für den betroffenen Account. Beim nächsten Login zeigt deine App den Buy-Screen — sauber, ohne Drama.

Häufige Fehler

  • Key im Frontend ausgeben statt zu prüfen — wer den Key sieht, kann ihn teilen. Lass die App den User nach dem Key fragen, gib ihn nie automatisch heraus.
  • Fingerprints zu strikt — Browser-Updates ändern den User-Agent. Mische stabile Werte (E-Mail-Hash, Geräte-ID) mit flüchtigen.
  • Aktivierungslimit zu niedrig— manche Käufer haben Arbeits-Laptop + Privat-Mac + Mobile. Standard 3 Slots ist okay, „pro"-Lizenzen sollten 5 oder unbegrenzt haben.

Nächste Schritte

Volle API-Referenz inkl. aller Endpoints (/activate, /deactivate, /verify, /list) findest du in der SDK-Dokumentation. Wer noch keinen Account hat: bei SellYourCode kostet die Aktivierungs-API nichts extra — sie ist Teil jeder Lizenz, die du verkaufst.

#lizenz#sdk#saas#api#tutorial