Zum Inhalt springen
Zurück zur Launch-Dokumentation

Markdown herunterladenOriginaldokument auf GitHub

Beispiel eines händlereigenen Lizenzadapters

Dieses Python-3.10+-Beispiel implementiert die externe HTTP-Bridge von Launch mit SQLite-Persistenz für Ereignisse/nonces und einem Wiederherstellungs-Worker. Es erzeugt keine Lizenzen, validiert keine geschützten Funktionen und ersetzt Ihr Lizenzsystem nicht.

Ein Python-Modul mit diesen Hooks implementieren:

def apply_snapshot(snapshot):
    # Call your licensing system with snapshot["event_id"] as its durable
    # idempotency key. Apply desired_state and the absolute purchased dates.
    # Return only after confirming the original operation was applied.
    # Raise ValueError for a result requiring manual review.
    ...

def delivery(snapshot):
    # Read an existing result owned by this purchase; do not issue here.
    return {"type": "instructions", "value": "Your own delivery instructions", "expires_at": None}

Die ... vor Konfiguration eines Backends durch echte Integration ersetzen. Ist kein Backendmodul konfiguriert, lösen die gebündelten Hooks NotImplementedError aus; Ereignisse gelangen zur manuellen Prüfung und behaupten niemals eine ausgestellte Autorisierung. Der Beispiel-Worker kann einen Hook nach Absturz oder ungewissem Fehler wiederholen; Ihr Lizenzbackend muss daher mit derselben Ereignis-ID deduplizieren/wiederherstellen.

Den Adapter mit Umgebungsvariablen konfigurieren und den Schlüssel aus Versionskontrolle und Shell-Historie fernhalten:

  • CUSTOM_LICENSING_KEY: Standard-Base64-Kodierung von 32–128 zufälligen Bytes, passend zu Launch.
  • CUSTOM_LICENSING_KEY_ID: key-1 oder Ihre konfigurierte Schlüsselkennung.
  • CUSTOM_LICENSING_CONNECTION_REF: passende Verbindungsreferenz.
  • CUSTOM_LICENSING_ENVIRONMENT: sandbox oder live.
  • CUSTOM_LICENSING_DATABASE: privater beschreibbarer SQLite-Pfad außerhalb des Checkouts; über Neustarts hinweg erhalten.
  • CUSTOM_LICENSING_BACKEND: importierbares Modul, das die obigen Hooks implementiert.
  • CUSTOM_LICENSING_PORT: lokaler Listen-Port, Standard 18883.

python server.py ausführen. Für lokale sandbox-Tests http://127.0.0.1:18883 in Launch konfigurieren und die Loopback-HTTP-Ausnahme ausdrücklich aktivieren. Für Produktion HTTPS-Terminierung, Prozessüberwachung, geschützte Datenbanksicherungen und SDK-/Laufzeitverifikation des eigenen Backends verwenden. Nur Kauf-/Bereitstellungsarten deklarieren, die das Backend tatsächlich unterstützt; capabilities entsprechend anpassen.

Nach Behebung eines Backendproblems stellt python server.py --retry-event ORIGINAL_EVENT_UUID dieselbe gespeicherte Payload lokal erneut in die Warteschlange. Auf der Autorisierungsaufgabenseite von Launch ebenfalls das ursprüngliche Ereignis erneut versuchen. IDs nicht ändern und zur Wiederherstellung einer Antwort keine Zeit erneut hinzufügen.

Das Beispiel ist ein Ausgangspunkt, keine Produktionsqualifikation. Sein Worker-Lease beträgt 60 Sekunden; Hook-Aufrufe auf einen kürzeren Timeout begrenzen oder den Lease erneuern. Vor Annahme von Live-Käufen Monitoring, Rotationsverfahren, strengere Geschäfts-/Schemaprüfungen und operative Kontrollen der Bereitstellung ergänzen. Integrationsanleitung und OpenAPI definieren das Protokoll. Einen Launch-Status niemals als Berechtigung zur Ausführung geschützten Codes verwenden.