Krypto-native Lizenzierung

Die Lizenz ist die Wallet.

Verkaufe eine Browser-Erweiterung, ein Plugin oder eine Desktop-App gegen Krypto — ganz ohne Kontosystem. Der Käufer zahlt aus seiner Wallet, und diese Wallet ist die Lizenz: Jedes weitere Gerät wird durch das Signieren einer kostenlosen Nachricht freigeschaltet. Keine E-Mail, keine verlierbaren Lizenzschlüssel, keine Rückbuchungen.

Warum es das gibt

Die Zahlungen im Chrome Web Store wurden im Februar 2021 eingestellt, daher braucht jeder Erweiterungsentwickler eine externe Zahlungsebene. Die führende Lösung setzt ein Stripe-Konto voraus und schließt damit Entwickler in der Türkei, Pakistan, Nigeria, Bangladesch, Indonesien, Ägypten und vielen weiteren Ländern schlicht aus.

Krypto-Zahlungsgateways enden bei „Zahlung eingegangen". Sie liefern einen Webhook, keine Lizenz: kein Berechtigungsspeicher, kein SDK, keine geräteübergreifende Prüfung. Die schwierige Hälfte baust du am Ende selbst. Genau diese Hälfte ist dieses Kit.

Vergleich

                        ExtensionPay   Paddle / LS   Krypto-Gateways   XPayr Kit
Gebuhr                  5% + Stripe    5% + 50c      0.5-1%            2.9% flat
ohne Stripe             nein           teilweise     ja                ja
Lizenzebene             ja             teilweise     nein              ja
Ruckbuchungen           ja             ja            keine             keine
Handler (MoR)           nein           ja            nein              nein

Wir sind kein Merchant of Record: Du kümmerst dich selbst um deine Steuern. Genau dafür zahlst du bei Paddle und Lemon Squeezy die höhere Gebühr — ein echter Kompromiss, den man vor der Wahl verstehen sollte.

Schnellstart

Lege in deinem Händler-Dashboard ein Produkt an, um einen Produktcode zu erhalten, und binde dann das SDK ein. host_permissions sind nicht nötig, daher erscheint bei der Installation keine Warnung über Datenzugriff.

Installation

npm install @xpayr/extension-kit

# or copy src/index.js into your extension —
# zero dependencies, no build step, MV3-ready

manifest.json

{
  "manifest_version": 3,
  "permissions": ["storage", "alarms"],
  "externally_connectable": { "matches": ["https://xpayr.com/*"] }
}

background.js

import XPayrKit from '@xpayr/extension-kit';

const xpayr = XPayrKit('prod_my_extension');
xpayr.startBackground();          // required: token delivery + daily refresh

xpayr.onLicenseChanged.addListener(user => {
  console.log(user.licensed ? 'unlocked' : 'locked');
});

Ein Feature absichern

const user = await xpayr.getUser();

if (user.licensed) {
  enableProFeatures();
} else {
  showUpgradeButton(() => xpayr.openCheckout());
}

Das ist die gesamte Integration. Den Käuferablauf — Netzwerk wählen, zahlen, signieren, freischalten — hosten wir unter xpayr.com/buy/{product_code}.

Das user-Objekt

Feld Typ Bedeutung
licensed boolean Steuere deine Features hierüber. Die Antwort kommt aus einem lokal geprüften Token — sofort und auch offline.
plan 'lifetime' | 'prepaid_year' | null Der vom Käufer erworbene Plan.
wallet string | null Die Wallet, an die die Lizenz gebunden ist — die, die bezahlt hat.
paidAt Date | null Wann die Lizenz ausgestellt wurde.
expiresAt Date | null Enddatum bei zeitlich begrenzten Plänen; null bei Lifetime.
source 'cache' | 'network' Woher diese Antwort stammt.
staleSince Date | null Wird gesetzt, solange mit einem veralteten Token innerhalb der 30-tägigen Offline-Kulanz gearbeitet wird.

API

Methode Beschreibung
startBackground() Einmal im Service Worker aufrufen. Verbindet Token-Zustellung und den täglichen Refresh-Alarm.
getUser() Offline-First-Lizenzprüfung. Verifiziert das zwischengespeicherte ES256-Token lokal — kein Netzwerk-Roundtrip im heißen Pfad.
openCheckout() Öffnet den gehosteten Checkout in einem neuen Tab. Der Käufer wählt ein beliebiges von dir aktiviertes Netzwerk und Token.
openRestore() „Ich habe das bereits gekauft" — schaltet ein weiteres Gerät per Wallet-Signatur frei. Keine E-Mail, kein Lizenzschlüssel.
refresh() Erzwingt eine Online-Neuprüfung. Erfasst Rückerstattungen und Widerrufe sofort.
getPlans() Öffentliche Produktdaten: Preis, Plantyp, zulässige Netzwerke.
onLicenseChanged Wird ausgelöst, sobald sich der Lizenzstatus ändert.

So funktioniert die Prüfung

  1. Der Käufer zahlt im gehosteten Checkout aus seiner Wallet.
  2. XPayr verbucht die Berechtigung auf die zahlende Wallet-Adresse.
  3. Der Käufer signiert eine kostenlose Einmalnachricht als Nachweis der Wallet-Kontrolle. Es fließt kein Geld.
  4. XPayr liefert ein ES256-signiertes Token zurück, auf dein Produkt beschränkt und 7 Tage gültig.
  5. Deine Erweiterung prüft dieses Token bei jedem getUser() lokal mit WebCrypto und erneuert es einmal täglich stillschweigend.

Eine Weile offline? Die Lizenz funktioniert 30 Tage über den Token-Ablauf hinaus und geht dann in eine sanfte Sperre mit Hinweis zur Neuverbindung über — niemand wird mitten im Flug ausgesperrt. Kunden erstattet? Im Dashboard widerrufen: Die Erneuerung schlägt sofort fehl und das Token stirbt binnen 7 Tagen.

Preise

Deine ersten 300 $ Lizenzumsatz sind komplett gebührenfrei. Danach gelten 2,9 % pauschal, abgezweigt in derselben On-Chain-Transaktion wie die Zahlung — keine Rechnung, nichts, was später eingezogen werden muss. Keine Grundgebühr, keine Monatsgebühr, keine Rückbuchungen. Netzwerk-Gas ist separat und zahlt der Käufer.

14-$-Lizenz, innerhalb des Freikontingents  ->  du erhältst 14,00 $14-$-Lizenz, nach dem Freikontingent  ->  du erhältst 13,59 $  (Gebühr 0,41 $)

Webhooks

Webhooks sind optional — das Kit stellt Lizenzen aus und prüft sie ganz ohne Backend auf deiner Seite. Falls du serverseitige Events willst: Sie nutzen dasselbe Signaturschema wie jeder andere XPayr-Webhook (siehe Signatur-Leitfaden) und werden mit Backoff wiederholt. Nutze event_id für Idempotenz.

Ereignis Wann
license.issued Eine Zahlung hat eine Lizenz erzeugt. Enthält Wallet, Produktcode, Plan und Transaktions-Hash.
license.revoked Du hast eine Lizenz im Dashboard widerrufen, typischerweise nach einer Erstattung.
payment.pending Eine Checkout-Sitzung wurde erstellt.
payment.processing Die Zahlung ist on-chain und wartet auf Bestätigungen.
payment.completed Zahlung on-chain verifiziert.
payment.failed Die eingereichte Transaktion ließ sich nicht gegen die Sitzung verifizieren.
payment.expired Die Sitzung ist unbezahlt abgelaufen.

KI-Agenten- & MCP-Lizenzierung (@xpayr/mcp-server)

Stellen Sie ES256-Wallet-Softwarelizenzen direkt aus Claude Desktop, Cursor, VS Code Copilot oder autonomen KI-Support-Agenten über den offiziellen XPayr-MCP-Server (`xpayr_issue_wallet_license`) aus und verwalten Sie diese.

MCP-Tool-Aufruf (xpayr_issue_wallet_license)

{
  "name": "xpayr_issue_wallet_license",
  "arguments": {
    "product_id": "prod_my_extension",
    "buyer_wallet": "0x71C...89A",
    "plan": "lifetime",
    "tx_hash": "0x9f8e...3b2a"
  }
}

Verifizierte Partner-Badges & Einbettbares Gebührenrechner-Widget

Betten Sie dynamische SVG-Vertrauenssiegel (partner-badge.php) oder das abhängigkeitsfreie 0.5%-Gebühren- & Ersparnisrechner-Widget (xpayr-fee-widget.js) in die README Ihrer Erweiterung, Ihr Dokumentationsportal oder Ihre Agentur-Landingpage ein.

Dynamisches SVG-Partner-Badge & Einbettbarer Rechner

<!-- Official Dynamic SVG Trust Badge -->
<a href="https://xpayr.com?utm_source=partner_badge" target="_blank" rel="noopener">
  <img src="https://xpayr.com/partner-badge.php?type=powered_by&theme=dark" alt="Powered by XPayr — 0.5% Non-Custodial Crypto Checkout" height="28">
</a>

<!-- Interactive 0.5% Fee & Savings Calculator Widget -->
<div data-xpayr-fee-widget data-volume="100000" data-invoice="250" data-rate="1.0"></div>
<script src="https://xpayr.com/public/sdk/xpayr-fee-widget.js" async></script>

Umstieg von ExtensionPay

ExtensionPayXPayr Lizenz-Kit
ExtPay('extension-id') XPayrKit('prod_code')
extpay.startBackground() xpayr.startBackground()
user.paid user.licensed
user.email user.wallet
openPaymentPage() openCheckout()
openLoginPage() openRestore()
onPaid.addListener onLicenseChanged.addListener
getPlans() getPlans()

Der einzige strukturelle Unterschied ist die Identität: ExtensionPay identifiziert Kunden per E-Mail, das Kit per Wallet. Das erspart den Magic-Link-Umweg — und bedeutet, dass eine Lizenz nur geteilt werden kann, wenn man die Wallet teilt.

Ehrliche Einschränkungen

  • Client-seitige Lizenzierung ist eine Abschreckung, kein DRM. Ein entschlossener Nutzer kann eine lokale Prüfung patchen — das gilt für jede Bibliothek dieser Kategorie, unsere eingeschlossen.
  • Wir sind kein Merchant of Record. Für deine Steuererklärung bist du selbst verantwortlich.
  • Der Käufer braucht eine Wallet. Für krypto-affines Publikum kein Thema; für Endverbraucher betreibe zusätzlich eine Fiat-Schiene.
  • Keine Pull-Abos. In Krypto gibt es keine hinterlegte Karte, daher unterstützt v1 Lifetime- und vorausbezahlte Jahreslizenzen.

Loslegen

Offizielle NPM-SDKs (v0.2.0) & Remote-MCP-Server

Schneller integrieren mit offiziellen XPayr-Paketen & installationsfreiem MCP

Installieren Sie @xpayr/node-sdk (v0.2.0), @xpayr/payment-evidence (v0.2.0), @xpayr/extension-kit (v0.2.0)oder @xpayr/mcp-server (v1.0.0) über NPM oder führen Sie Live JSON-RPC 2.0 Tool-Aufrufe aus über POST https://xpayr.com/api/mcp.

Live-MCP-Playground (/tools/mcp-playground) ES256-Lizenzprüfer KI-Agenten-Richtliniensimulator HMAC-SHA256-Webhook-Tester mcp.xpayr.com docs.xpayr.com api-docs.xpayr.com