Einen Test in eine bezahlte Lizenz umwandeln — ohne Neuinstallation
Ein Testnutzer, der zahlt, sollte an Ort und Stelle zum lizenzierten Nutzer werden: dieselbe Installation, dieselben Daten, kein erneut einzugebender Schlüssel. So funktioniert eine saubere Test-zu-Kauf-Umwandlung: den Schlüssel an Ort und Stelle hochstufen, die zwischengespeicherten Berechtigungen auffrischen und den Testablauf so gestalten, dass Zahlen einfach wiederherstellt, was da war.
Der Test hat seine Aufgabe erfüllt: Jemand hat Ihre Software installiert, genutzt und sich entschieden zu zahlen. Die darauf folgende Umwandlung sollte der einfachste Moment der gesamten Beziehung sein — und zu oft ist sie der ungeschickteste: Sie verlangt einen neuen Schlüssel per E-Mail, eine erneute Eingabe, manchmal eine Neuinstallation, gelegentlich die Entdeckung, dass die Testarbeit verschwunden ist. Nichts davon ist nötig. Ein Test und eine bezahlte Lizenz sind dieselbe Art von Sache — eine signierte Gewährung von Berechtigungen — also ist die Umwandlung der einen in die andere eine Änderung von Attributen, kein Austausch.
Stufen Sie den Schlüssel an Ort und Stelle hoch
Das sauberste Modell stellt keinen neuen Schlüssel aus. Der Test-Schlüssel, den der Kunde bereits aktiviert hat, wird zu seiner bezahlten Lizenz. Auf dem Server ändern Sie bei erfolgreicher Zahlung die Stufe dieser Lizenz von der Teststufe auf die bezahlte und verlängern oder entfernen ihr Ablaufdatum:
// On a successful payment for a customer who is already on a trial key:
await licenses.Upgrade(trialKey, new UpgradeRequest
{
Tier = "pro", // trial tier → paid tier
ExpiryUtc = null, // perpetual; or a renewal date for a subscription
Seats = seatsPaid, // bump the seat count if the plan includes more
});
Nichts auf der Maschine des Kunden ändert sich. Der Schlüssel in seiner App ist dieselbe Zeichenkette; nur das, was dieser Schlüssel bedeutet, hat sich serverseitig geändert. Verglichen mit dem Ausstellen eines frischen Schlüssels entfällt dadurch eine E-Mail, ein Kopieren-Einfügen und eine ganze Klasse von „Ich habe meinen Schlüssel nie erhalten”-Support-Tickets.
Wenn Ihre Abrechnung automatisiert ist, ist dieses Upgrade genau das, was ein Fulfillment-Webhook bei einem paid-Ereignis für eine an einen bestehenden Test gebundene Bestellung tun sollte — idempotent, mit der Bestellreferenz als Schlüssel.
Frischen Sie die zwischengespeicherten Berechtigungen auf
Hier wirkt die Umwandlung an Ort und Stelle meist kaputt: Der Kunde zahlt, öffnet die App erneut, und sie sagt weiterhin „Test — 0 Tage übrig”. Das Upgrade hat funktioniert; die App liest einen veralteten Cache.
Lizenz-SDKs speichern eine signierte Lease zwischen, damit die App zwischen Check-ins offline validiert. Diese zwischengespeicherte Lease wurde geprägt, als der Schlüssel ein Test war, trägt also noch die Teststufe und das Testablaufdatum. Die Lösung ist, nach der Umwandlung eine frische Validierung zu erzwingen, statt dem Cache zu vertrauen:
// After the user completes payment (or on app resume), re-validate ONLINE.
var info = await client.ActivateAsync(key); // re-activate pulls a fresh lease
// or: await client.ValidateOnlineAsync(key);
if (info.Status == LicenseStatus.Valid && !info.IsTrial)
{
ApplyEntitlements(info.Entitlements); // paid tier's flags + limits now apply
ShowStatus("Licensed"); // trial banner gone
}
Die neue Lease trägt die Berechtigungen der bezahlten Stufe und ersetzt die zwischengespeicherte Test-Lease. Geben Sie dem Nutzer eine offensichtliche Schaltfläche „Ich habe gekauft — meine Lizenz auffrischen”, und validieren Sie auch beim nächsten Start neu, damit selbst ein Nutzer, der die App vor dem Auffrischen schließt, beim nächsten Mal automatisch hochgestuft wird.
Gestalten Sie den Ablauf so, dass Zahlen einfach wiederherstellt
Die Umwandlung erfolgt nicht immer am selben Tag. Viele Kunden testen, lassen den Test verfallen und kehren Wochen später zurück. Was Ihre App beim Ablauf tut, entscheidet, ob diese Rückkehr ein Upgrade per Klick oder eine Sackgasse ist.
Die Regel: Der Ablauf stuft herab, er zerstört nie. Wenn ein Test endet, fallen Sie auf einen Nur-Lese- oder kostenlosen Modus zurück und lassen Sie jedes Stück der Arbeit des Nutzers an seinem Platz. Dann ist die Rückkehr trivial: Er zahlt, der Schlüssel wird hochgestuft, die App validiert neu, und die Funktionen schalten sich wieder über Daten ein, die auf ihn gewartet haben. Wenn Sie stattdessen Projekte löschen oder ihn beim Ablauf aus seinen eigenen Dateien aussperren, haben Sie den stärksten Grund gelöscht, den er zum Kaufen hatte, und aus „zum Upgrade klicken” ein „von vorn anfangen” gemacht. Ein Test, der in den Nur-Lese-Modus abläuft, wandelt um; ein Test, der in eine verschlossene Tür abläuft, nicht.
Deshalb sollte ein geschlossenes Scheitern bei der Lizenzierung auch „bezahlte Funktionen deaktivieren” bedeuten, nicht „die App deaktivieren”. Der Kunde im Umwandlungsfenster ist Ihr bester Interessent; das Schlimmste, was Sie tun können, ist, seine Daten als Geisel zu nehmen.
Ein paar Details, die sich auszahlen
- Ein Test pro Kunde. Binden Sie den Test an eine E-Mail oder ein Gerät, damit ein abgelaufener Test nicht einfach kostenlos neu gestartet werden kann. Bei der Umwandlung verknüpft dieselbe Identität die bezahlte Lizenz mit dem Test — so messen Sie später die Test-zu-Kauf-Rate.
- Nehmen Sie den Kontext mit. Da es dieselbe Installation und derselbe Schlüssel ist, überleben Einstellungen, Projekte und Präferenzen automatisch. Setzen Sie beim Upgrade nichts zurück; es geht gerade um Kontinuität.
- Machen Sie „schon bezahlt?” offensichtlich. Eine einzige sichtbare Aktion, die neu validiert, verwandelt ein verwirrtes „es sagt immer noch Test” in ein gelöstes Problem ohne Support-Rückfrage.
- Behandeln Sie den Fall abgelaufen-dann-bezahlt ausdrücklich. Wenn der Test bereits verfallen ist, muss das Upgrade den Schlüssel möglicherweise auf der aktuellen Maschine reaktivieren; stellen Sie sicher, dass dieser Pfad die Lease ebenfalls auffrischt.
Einen Test auszustellen ist die Art, wie Sie sich die Chance zur Umwandlung verdienen. Ihn gut umzuwandeln ist stillere Arbeit — vor Ort hochstufen, die Lease auffrischen, die Daten schützen — aber es ist der Unterschied zwischen einem Kunden, der einmal klickt, und einem, der sich fragt, wohin sein Schlüssel verschwunden ist. Behandeln Sie den Test und die bezahlte Lizenz als dasselbe Objekt in zwei Zuständen, und das Upgrade wird zu dem, was es sein sollte: nahezu unsichtbar.
Nebula.NET testen
Härten Sie Ihren .NET-Code in wenigen Minuten — starten Sie mit der kostenlosen Edition.