--:--:--
sh_fvs_bridge
Home/Wiki/sh_fvs_bridge
FiveM ED-BANKING Lua 5.4 FVS-System-API

sh_fvs_bridge

Banking-Bridge zwischen ED-BANKING und der FVS-System-API. Synchronisiert Konten & Transaktionen und verarbeitet Überweisungs-Jobs — ohne direkte Datenbank-Verbindung vom Game-Server aus.

Version: V7.0 Ressourcen-Name: fvs_ob_bridge Abhängigkeit: ED-BANKING

🧭 Überblick

Die Bridge spricht seit V7 nicht mehr direkt mit der FVS-Banking-DB, sondern ausschließlich über die FVS-System-API (Endpoints /bridge/v1/*). Die API hat ihrerseits Zugriff auf die FVS-Banking-DB.

  • Keine DB-Credentials mehr auf dem Game-Server.
  • DB-Port muss nicht mehr zum Game-Server geöffnet sein (sicherer).
  • Konten-Sync: ED-BANKING → bank_accounts.
  • Transaktions-Sync: ED-BANKING → bank_transactions.
  • Überweisungs-Jobs über die Queue fvs_transfers.
⚠️ Der Ordner heißt sh_fvs_bridge, der Ressourcen-Name in der fxmanifest.lua ist jedoch fvs_ob_bridge. In der server.cfg wird der Ordnername ge-ensure-t.

⚙️ Voraussetzungen

🏦
ED-BANKING
Pflicht – das Banking-Backend, mit dem die Bridge kommuniziert.
🔌
FVS-System-API
Erreichbare API-Instanz mit aktivem BRIDGE_API_KEY.
🗄️
oxmysql (Game-DB)
Optional – nur für das Laden von Char-Namen aus der users-Tabelle.

🗄️ 1 · SQL (FVS-Banking-DB)

Das Schema gilt für die FVS-Banking-Datenbank (eigener Server), nicht für die Game-DB! Die alten Tabellen in der Game-DB (fvs_bank_accounts etc.) sind obsolet.

In der Regel ist nichts manuell zu tun: Das Script legt fehlende Tabellen und Spalten beim Start automatisch an (Auto-Migration in server/bridge.lua). Für eine manuelle Installation dient sql/sql.sql als Referenz:

bash · FVS-DB
mysql -u FVS_USER -p FVS_BANKING_DB < sh_fvs_bridge/sql/sql.sql

Betroffene Tabellen: bank_accounts (bestehend, wird um Bridge-Spalten erweitert), bank_transactions (neu) und fvs_transfers (Job-Queue, neu).

📄 2 · server.cfg

server.cfg
ensure ED-BANKING

ensure sh_fvs_bridge
ℹ️ ED-BANKING muss vor der Bridge laufen (harte Dependency). Die Bridge braucht keinen DB-Treiber – sie kommuniziert per HTTP mit der API.

🔧 3 · API & Token konfigurieren

Kernstück in config.lua ist der API-Block:

config.lua
Config.Api = {
  -- Basis-URL der FVS-System-API OHNE abschliessenden Slash
  BaseUrl = 'https://tablet-api.devhive.app',

  -- MUSS mit BRIDGE_API_KEY in der API-.env uebereinstimmen.
  -- Erzeugen z.B.: openssl rand -hex 32
  Token = '<DEIN_BRIDGE_API_KEY>',

  ConnectTimeoutMs = 10000,
  QueryTimeoutMs   = 15000
}
🔒 Der Token ist ein Geheimnis – niemals öffentlich teilen oder in ein öffentliches Repo committen. Er muss exakt dem BRIDGE_API_KEY in der .env der API entsprechen, sonst sind die Banking-Endpoints gesperrt.

Konten-Existenz-Prüfung

KeyStandardBedeutung
AccountCheck.TransferstrueVor Überweisung prüfen, ob beide Konten existieren
AccountCheck.AccountCreationtrueDoppel-Erstellung von Konten verhindern
PollIntervalMs5000Abfrage-Intervall der Job-Queue
BatchSize50Jobs pro Durchlauf

🔄 4 · Sync & Discord-Logging

Konten- & Transaktions-Sync

KeyStandardBedeutung
AccountSync.EnabledtrueKonten-Sync aktiv
AccountSync.IntervalMs60000Sync alle 60 s (nur Änderungen)
AccountSync.Validation.MinLength10Konto-Nummern-Format prüfen (Phantom-Schutz)
TxSync.EnabledtrueTransaktions-Sync aktiv
TxSync.IntervalMs30000Sync alle 30 s
NameSource.EnabledtrueChar-Namen aus Game-DB users laden
⚠️ Die Validation-Grenzen an euer echtes Kontonummern-Format anpassen! Default ist 10-stellig (numerisch). Habt ihr Konten anderer Länge, Grenzen anpassen oder Validation.Enabled = false setzen.

Discord-Logging

Webhooks in Config.Discord eintragen (eigene URLs verwenden):

config.lua
Config.Discord = {
  Enabled = true,
  Webhook         = '<DISCORD_WEBHOOK_URL>',
  TransferWebhook = '<DISCORD_TRANSFER_WEBHOOK_URL>',
  Username = 'FVS-BRIDGE',
  Prefix   = '[sh_fvs_bridge]',
  SendDebugToo = false,   -- false = kein Debug-Spam (Performance)
  RateLimitMs  = 1100,
}

5 · Prüfen

  • Start-Log kontrollieren: die Bridge meldet den initialen Konten-Sync (SyncOnStart).
  • Für detaillierte Ausgaben Config.Debug = true setzen (nur temporär – erzeugt viele Logs).
  • Eine Test-Überweisung in ED-BANKING auslösen und prüfen, ob sie in bank_transactions erscheint.
  • Discord-Channel auf eingehende Log-Nachrichten prüfen.
Schlägt eine Überweisung fehl, schreibt die Bridge den Grund in last_error der Job-Zeile (z. B. from_account_not_found) statt sie blind an ED-BANKING weiterzureichen.