Spare 20 % mit WELCOMEAngebote ansehen
Monetarisierung ohne Tebex: Selbstgehosteter Shop mit Stripe/W&#…

Monetarisierung ohne Tebex: Selbstgehosteter Shop mit Stripe/W&#…

Lies dies, bevor du beginnst. Wenn du einen FiveM/RedM Server und planen um In-Game-Vergünstigungen zu verkaufen, du musst Tebex. In den Dokumenten und der PLA von Cfx.re heißt es, dass „die Verwendung anderer Plattformen oder Zahlungsanbieter zur Server-Monetarisierung verboten ist“. Das Self-Hosting von Stripe ist in Ordnung für Off-Server Verkäufe (Standalone-Skripte, MLOs-, UI-Pakete, Dienstleistungen, Kurse). Binde diese Verkäufe nicht an In-Game-Vorteile auf Live-Servern.


Was du ohne Tebex monetarisieren kannst

Erlaubt (außerhalb des Servers):

  • Standalone Skripte/MLOs lizenzierst du für die Selbstinstallation.
  • Texturpakete, UI-Kits, Soundpakete.
  • Beratung, kundenspezifische Entwicklungsarbeit, Installationsdienste.
  • Dokumentation, Kurse, Vorlagen.

Vermeiden (erfordert Tebex oder bricht die Richtlinie):

  • Spielwährung, Pay-to-Win, Lootboxen, NFTs.
  • Prioritätswarteschlange, VIP-Rollen, Whitelist-Boosts, die an deinen Live-Server gebunden sind.

Architektur auf einen Blick

Ziel: ein selbst gehosteter Store, der digitale Produkte (Skripte/MLOs) verkauft und Lizenzen automatisch liefert.

Stapel:

  • Frontend: Next.js (App Router), React.
  • Zahlungen: Stripe Checkout (einfach) oder Zahlungselement + Zahlungsabsichten (benutzerdefinierter Ablauf).
  • Webhooks: Ereignisse empfangen, Signaturen überprüfen, Bestellungen aktualisieren, Dateien/Schlüssel liefern.
  • Speicherung/Bereitstellung: S3/R2 + signierte URLs; oder Lizenzserver mit geschwindigkeitsbegrenzten Downloads.
  • Steuern/Rechnungen: Stripe Tax + Billing-Rechnungen für B2B.

Datenfluss:

  1. Produkt + Preis erstellen in Streifen.
  2. Starte eine Checkout-Sitzung mit Metadaten (productId, buyerId).
  3. An Kasse.Sitzung.abgeschlossen oder Zahlungsabsicht erfolgreich, Signatur überprüfen.
  4. Bestellung als bezahlt markieren; Lizenz generieren; signierten Download-Link erstellen; Quittung und Lizenz per E-Mail versenden.

Schritt-für-Schritt-Einrichtung

1) Stripe-Kontohygiene

  • Komplettes Onboarding und Unternehmen verifizieren (KYC).
  • Setze die Aussage des Deskriptors, die Support-E-Mail und die URL der Rückerstattungsrichtlinien.
  • Aktivieren Apple Pay / Google Pay; Bankkonto hinzufügen.
  • Einschalten Radar Regeln für grundlegende Betrugsprüfungen.

2) Produkte und Preise

  • Einen Streifen erstellen Produkt pro Skript/MLO.
  • Verwenden Einmalige Preise in deiner Käuferwährung (EUR/USD).
  • Füge Metadaten-Schlüssel hinzu, die du später benötigst: Artikelnummer, Produkt-Slug, Lizenzrichtlinie.

3) Wähle den Zahlungsablauf

  • Streifen Kasse: am schnellsten und SCA-fähig. Verarbeitet Geldbörsen, 3DS, Quittungen. Empfohlen für die meisten Geschäfte.
  • Zahlungselement + Zahlungsabsichten: mehr Kontrolle; verwende dies, wenn du benutzerdefinierte UI oder zusätzliche Methoden benötigst.

4) Sichere Webhooks

  • Erstelle ein POST /api/stripe/webhook Endpunkt.
  • Lies die Rohkörper; JSON vor der Überprüfung nicht analysieren.
  • Überprüfe mit dem Endpunktgeheimnis; Ablehnen, wenn die Signatur fehlschlägt.
  • Verwenden Idempotenz für ausgehende Aufgaben, die du über Webhooks auslöst (z. B. Lizenz-Erstellung), damit Wiederholungen keine Bestellungen duplizieren.

5) Bestellung + Lizenzerfüllung

  • Nach bestätigtem Erfolg:
    1. Erstellen Bestellungen Reihe mit Status = 'bezahlt'.
    2. Generiere einen Lizenzschlüssel (UUID v4) oder einen käufergebundenen offenen Token.
    3. Speichere ein unveränderlicher Build der Postleitzahl (Hash-Nummer).
    4. Gib aus zeitlich begrenzte signierte URL (z. B. 24 Stunden, 3 Downloads).
    5. E-Mail an den Käufer: Rechnungslink, Lizenz, Download-Button.
  • Füge einen Kundenportal Seite mit Bestellverlauf und erneuten Downloads.

6) Steuern, Rechnungen und Quittungen

  • Einschalten Stripe-Steuer; Elemente markieren als digitale Güter.
  • Sammle die Standortdaten des Käufers (IP + Rechnungsadresse) und Steueridentifikationsnummern (z. B. EU-USt-IdNr.).
  • Für EU-B2C wird die Bestimmungsort-Mehrwertsteuer berechnet. Für gültige EU-B2B-Mehrwertsteuer-IDs wird ein Nullsatz berechnet und die ID wird aufgezeichnet.
  • Speichere Rechnungs-PDFs mit der Bestellaufzeichnung.

7) Compliance und Richtlinien

  • Verkaufsbedingungen (Lizenzumfang, kein Weiterverkauf, Anti-Cheat-Klausel, DMCA-Takedown).
  • Rückerstattungen: Es gelten die EU-Fernabsatzvorschriften, bei digitalen Downloads verfällt jedoch das 14-tägige Rückgaberecht Wenn der Käufer stimmt dem ausdrücklich zu und erkennt dies vor dem Download an. Kontrollkästchen anzeigen und Zustimmung protokollieren.
  • Datenschutz: Halte eine GDPR-Seite bereit; Protokolliere Webhook-Payloads, ohne vollständige Kartendaten zu speichern.
  • Sicherheit: Webhook-Geheimnisse rotieren; API-Schlüssel mit geringsten Berechtigungen; Lizenztabelle im Ruhezustand verschlüsseln.

Minimale Implementierung (Next.js + Stripe Checkout)

Serveraktion (Sitzung erstellen):

// app/api/cart/route.ts
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2024-06-20' });

export async function POST(req: Request) {
 const { sku, successUrl, cancelUrl } = await req.json();
 const priceId = await mapSkuToPriceId(sku);

 const session = await stripe.checkout.sessions.create({
 mode: 'payment',
 line_items: [{ price: priceId, quantity: 1 }],
 metadata: { sku },
 success_url: successUrl,
 cancel_url: cancelUrl,
 });
 return Response.json({ url: session.url });
}

Webhook-Route:

// app/api/stripe/webhook/route.ts
import Stripe from 'stripe';
import { headers } from 'next/headers';

export const config = { api: { bodyParser: false } } as any; // keep raw body

function buffer(body: ReadableStream<Uint8Array>) {
 const reader = body.getReader();
 const chunks: Uint8Array[] = [];
 return reader.read().then(function process({ done, value }): any {
 if (done) return Buffer.concat(chunks);
 chunks.push(Buffer.from(value));
 return reader.read().then(process);
 });
}

export async function POST(req: Request) {
 const sig = headers().get('stripe-signature')!;
 const buf = await buffer(req.body!);
 let event: Stripe.Event;
 try {
 event = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2024-06-20' })
 .webhooks.constructEvent(buf, sig, process.env.STRIPE_WEBHOOK_SECRET!);
 } catch {
 return new Response('Bad signature', { status: 400 });
 }

 if (event.type === 'checkout.session.completed') {
 const session = event.data.object as Stripe.Checkout.Session;
 await fulfill(session); // create order, license, email
 }
 return new Response('OK', { status: 200 });
}

Idempotenz-Tipp: wenn dein Webhook externe Arbeit auslöst (z. B. E-Mails, Lizenz-Erstellung), wickle diese Aufrufe mit deinem eigenen Idempotenz-Schlüssel um Duplikate zu vermeiden.


Lizenz- und Dateilieferung

  • Binde jede Lizenz an die E-Mail des Käufers + Produkt-SKU.
  • Download-URLs signieren; Begrenzung nach Zeit + Versuchen; IPs zur Missbrauchskontrolle protokollieren.
  • Beinhalte eine kleine Lizenzvalidator Code-Snippet in deinem Ressourcen-Lader ein, um den Schlüssel gegen deine API zu überprüfen (ratenbegrenzt).

Risiko- und Betrugskontrollen

  • Aktiviere 3DS/SCA über Checkout oder Payment Intents.
  • Blocke Wegwerf-E-Mails und abweichende Rechnungsland für hochrisikoreiche Bestellungen.
  • Behalte Vorlagen für Streitbeilege: Produktbeschreibung, Lizenzprotokolle, Download-Protokolle, Einverständnis zur digitalen Inhaltsverzichtserklärung.

Verstoße nicht gegen die Regeln von Cfx.re

  • Verwende Tebex für jeden Vorteil, der deinen laufenden Server betrifft (Prioritätswarteschlange, VIP-Kits, Autos, Skins).
  • Behalte Stripe nur für digitale Produkte und Dienstleistungen außerhalb des Servers.

Interne Links (FiveMX)

Externe Referenzen

  • Cfx.re PLA + Tebex-only Monetarisierung und Dokumente.
  • Stripe-Webhooks und Signaturüberprüfung.
  • Stripe-Idempotenzschlüssel und SCA.
  • EU-Verbraucherrecht: Ausnahmen vom Widerrufsrecht bei digitalen Inhalten.
  • Stripe-Steuer: digitale Güter und OSS.

Checkliste für die Versandbereitschaft

  1. Stripe-Konto verifiziert; Geschäftsdetails vollständig.
  2. Produkte + Preise erstellt; Metadatensatz.
  3. Checkout-Sitzungs-API live; Erfolgs-/Abbruchrouten.
  4. Webhook-Endpunkt live; Signatur verifiziert; Wiederholungsversuche getestet.
  5. Erfüllung: Lizenzgenerator, signierte Download-URL, E-Mail.
  6. Steuern auf; Rechnungs-PDFs gespeichert; Mehrwertsteuerprüfung.
  7. Rechtliche Seiten: Bedingungen, Rückerstattungen, Datenschutz, Lizenz.
  8. Protokolle + Dashboards: Bestellungen, Fehler, Wiederholungsversuche, Streitigkeiten.
  9. Audit: kein Verkauf von Server-Vergünstigungen außerhalb von Tebex.

FAQ (kurz)

  • Kann ich mit Stripe VIP-Rollen verkaufen? Ja, wenn du Discord verwendest.
  • Kann ich meine MLOs mit Stripe verkaufen? Ja, sofern die Bereitstellung außerhalb des Servers erfolgt und nicht an Live-Vergünstigungen gebunden ist.
  • Erhalten Käufer eine 14-tägige Rückerstattung? Für die EU, nicht nachdem sie der sofortigen digitalen Lieferung zugestimmt haben und den Download starten. Protokolliere die Zustimmung.
  • Welcher Stripe-Flow ist der beste? Kasse für Geschwindigkeit; Payment Intents, wenn du schwere Anpassungen benötigst.