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:
- Produkt + Preis erstellen in Streifen.
- Starte eine Checkout-Sitzung mit Metadaten (productId, buyerId).
- An
Kasse.Sitzung.abgeschlossenoderZahlungsabsicht erfolgreich, Signatur überprüfen. - 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/webhookEndpunkt. - 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:
- Erstellen
BestellungenReihe mitStatus = 'bezahlt'. - Generiere einen Lizenzschlüssel (UUID v4) oder einen käufergebundenen offenen Token.
- Speichere ein unveränderlicher Build der Postleitzahl (Hash-Nummer).
- Gib aus zeitlich begrenzte signierte URL (z. B. 24 Stunden, 3 Downloads).
- E-Mail an den Käufer: Rechnungslink, Lizenz, Download-Button.
- Erstellen
- 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)
- Übersicht über die Monetarisierungsrichtlinien → https://fivemx.com/terms-conditions/
- Rückerstattung & Rückgabe für digitale Güter → https://fivemx.com/are-fivemx-resources-safe-legit/
- Vorlage für die Skriptlizenzierung → https://fivemx.com/terms-conditions/
- DMCA-Löschung → https://fivemx.com/dmca-request/
- Hinweise zur Leistung und zum Schutz vor Cheaten → https://fivemx.com/performance/
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
- Stripe-Konto verifiziert; Geschäftsdetails vollständig.
- Produkte + Preise erstellt; Metadatensatz.
- Checkout-Sitzungs-API live; Erfolgs-/Abbruchrouten.
- Webhook-Endpunkt live; Signatur verifiziert; Wiederholungsversuche getestet.
- Erfüllung: Lizenzgenerator, signierte Download-URL, E-Mail.
- Steuern auf; Rechnungs-PDFs gespeichert; Mehrwertsteuerprüfung.
- Rechtliche Seiten: Bedingungen, Rückerstattungen, Datenschutz, Lizenz.
- Protokolle + Dashboards: Bestellungen, Fehler, Wiederholungsversuche, Streitigkeiten.
- 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.