Search by

pirabyte / laravel-lexware-office

pirabyte

Laravel API Client für Lexware Office - Einfache Integration der Lexware Office API in Laravel Anwendungen

Package info

github.com/pirabyte/laravel-lexware-office

pkg:composer/pirabyte/laravel-lexware-office

Fund package maintenance!

pirabyte

Statistics

Installs: 5 494

Dependents: 0

Suggesters: 0

Stars: 3

Open Issues: 10

v0.4.0 2026-07-19 18:25 UTC

README

Laravel Lexware Office

Laravel Lexware Office

Tests Code coverage

Laravel-Client für die Lexware Office API mit typisierten Modellen, OAuth2-Unterstützung und lokalem Rate-Limit. Unterstützt PHP ab 8.3 sowie Laravel 11 bis 13.

Installation

composer require pirabyte/laravel-lexware-office

Trage deinen API-Key in .env ein:

LEXWARE_OFFICE_API_KEY=dein-api-key

Laravel lädt die Paketkonfiguration automatisch. Wenn du sie anpassen möchtest, veröffentliche sie mit:

php artisan vendor:publish --provider="Pirabyte\LaravelLexwareOffice\LexwareOfficeServiceProvider" --tag="lexware-office-config"

Für die Speicherung von OAuth2-Tokens in der Datenbank kannst du zusätzlich die Migration mit --tag="lexware-office-migration" veröffentlichen. --tag="lexware-office" veröffentlicht Konfiguration und Migration zusammen.

Verwendung

Mit dem konfigurierten API-Key nutzt du die Facade:

use Pirabyte\LaravelLexwareOffice\Facades\LexwareOffice;

$contact = LexwareOffice::contacts()->get($contactId);

Für einen anderen API-Key erstellst du einen eigenen Client:

use Pirabyte\LaravelLexwareOffice\LexwareOfficeFactory;

$client = LexwareOfficeFactory::withApiKey($apiKey);
$contact = $client->contacts()->get($contactId);

Weitere Beispiele: Kontakte, OAuth2, Fehlerbehandlung und Partner-Integrationen.

Implementierungsstand

Diese Ressourcen und Methoden sind derzeit im Paket implementiert:

Bereich Zugriff Methoden
Kontakte contacts() create, get, update, filter, all, count, getAutoPagingIterator
Belege vouchers() create, createAndAttachFile, get, update, filter, all, document, downloadDocument, attachFile
Länder countries() all
Finanzkonten financialAccounts() create, get, filter, delete
Finanztransaktionen financialTransactions() create, get, update, delete, latest, getVoucherAssignments
Buchungskategorien postingCategories() get
Profil profile() get
Transaktionszuweisungshinweise transactionAssignmentHints() create
Partner-Integrationen partnerIntegrations() get, update

Besonderheit bei der neuesten Finanztransaktion

financialTransactions()->latest($financialAccountId) kann bei einem bestehenden Finanzkonto ohne Transaktionen eine 404-Antwort von Lexware erhalten. Die Methode gibt nur bei einer erfolgreichen, leeren Antwort null zurück. Wenn du prüfen musst, ob das Konto existiert, nutze zusätzlich financialAccounts()->get($financialAccountId).

Rate-Limit

Der Client prüft vor Anfragen ein lokales Laravel Rate-Limit von standardmäßig 50 Anfragen pro Minute. Bei erreichtem Limit wirft er eine LexwareOfficeApiException mit Status 429. Das Limit kannst du in config/lexware-office.php über max_requests_per_minute oder am Client ändern:

$client = app('lexware-office');
$client->setRateLimit(10);

Das lokale Limit garantiert keine freien Kapazitäten bei der Lexware Office API. Für Abläufe mit mehreren Anfragen bietet der Client waitForRateLimitCapacity() an.

Im Einsatz bei

Envoix nutzt dieses Paket für seine Lexware Office Anbindung. Die Anwendung bereitet Stripe-Zahlungen, Gebühren und Belege für Lexware Office vor. So funktioniert die Stripe-Integration.

Lizenz

MIT