Laravel package for integrating the Swiss UID (Unternehmens-Identifikationsnummer) webservice from the Federal Statistical Office (BFS)
ecolabor/laravel-swiss-uid-search is a Laravel package for laravel package for integrating the swiss uid (unternehmens-identifikationsnummer) webservice from the federal statistical office (bfs).
It currently has 0 GitHub stars and 157 downloads on Packagist (latest version 1.0.0).
Install it with composer require ecolabor/laravel-swiss-uid-search.
Discover more Laravel packages by ecolabor
or browse all Laravel packages to compare alternatives.
Last updated
Ein Laravel-Package zur Integration des Schweizer UID-Webservices (Unternehmens-Identifikationsnummer) vom Bundesamt für Statistik (BFS).
Basiert auf der offiziellen API Version 5.0
📄 Offizielle Dokumentation (PDF)
GetByUID)Search)ValidateUID)ValidateVatNumber)| Umgebung | Public Services |
|----------|-----------------|
| Produktion | https://www.uid-wse.admin.ch/V5.0/PublicServices.svc |
| Test | https://www.uid-wse-a.admin.ch/V5.0/PublicServices.svc |
composer require ecolabor/laravel-swiss-uid-search
Veröffentlichen Sie die Konfigurationsdatei:
php artisan vendor:publish --tag=swiss-uid-config
# Umgebung: production oder test
SWISS_UID_ENVIRONMENT=production
# Sprache: 1=DE, 2=FR, 3=IT, 4=EN
SWISS_UID_LANGUAGE=1
# Cache-Einstellungen
SWISS_UID_CACHE_ENABLED=true
SWISS_UID_CACHE_TTL=3600
# Such-Einstellungen
SWISS_UID_MAX_RESULTS=100
SWISS_UID_SEARCH_MODE=auto
# Partner Services (optional, für erweiterte Funktionen)
SWISS_UID_PARTNER_USERNAME=your_username_sa
SWISS_UID_PARTNER_PASSWORD=your_password
use Ecolabor\SwissUid\Facades\SwissUid;
// Mit formatierter UID
$company = SwissUid::getByUid('CHE-123.456.789');
// Oder nur mit Ziffern
$company = SwissUid::getByUid('123456789');
if ($company) {
echo $company->organisationName; // Firmenname
echo $company->uidFormatted; // CHE-123.456.789
echo $company->address->getOneLiner(); // Strasse 1, 8000 Zürich
echo $company->legalFormText; // Aktiengesellschaft
echo $company->vatNumberFormatted; // CHE-123.456.789 MWST
echo $company->isActive(); // true/false
echo $company->isVatRegistered(); // true/false
echo $company->isInCommercialRegister(); // true/false
}
use Ecolabor\SwissUid\Facades\SwissUid;
// Nach Name suchen
$result = SwissUid::searchByName('Migros');
// Nach Ort suchen
$result = SwissUid::searchByLocation('Zürich');
// Kombinierte Suche mit allen Parametern
$result = SwissUid::search([
'organisationName' => 'AG',
'town' => 'Bern',
'canton' => 'BE',
'zipCode' => '3000',
'legalFormId' => 6, // Aktiengesellschaft
'uidregStatusEnterpriseActive' => true, // Nur aktive
'maxNumberOfRecords' => 50,
'searchMode' => 'auto', // auto, exact, wild
]);
foreach ($result->entities as $company) {
echo "{$company->organisationName} - {$company->uidFormatted}\n";
}
// Ergebnisse filtern
$activeOnly = $result->onlyActive();
$vatRegistered = $result->onlyVatRegistered();
$inHr = $result->onlyInCommercialRegister();
// Für Dropdowns
$options = $result->toSelectOptions();
// ['123456789' => 'Firma AG (CHE-123.456.789)', ...]
use Ecolabor\SwissUid\Facades\SwissUid;
// Prüfen ob UID gültig ist
if (SwissUid::validateUid('CHE-123.456.789')) {
echo "UID ist gültig!";
}
// MWST-Nummer validieren
if (SwissUid::validateVatNumber('CHE-123.456.789')) {
echo "MWST-Nummer ist gültig!";
}
use Ecolabor\SwissUid\Rules\ValidSwissUid;
// Nur Format validieren (schnell, kein API-Call)
$request->validate([
'uid' => ['required', ValidSwissUid::format()],
]);
// Format + Existenz im Register prüfen (API-Call)
$request->validate([
'uid' => ['required', ValidSwissUid::exists()],
]);
use Ecolabor\SwissUid\Facades\SwissUid;
$formatted = SwissUid::formatUid('123456789');
// Ergebnis: CHE-123.456.789
$mwst = SwissUid::formatMwst('123456789');
// Ergebnis: CHE-123.456.789 MWST
$normalized = SwissUid::normalizeUid('CHE-123.456.789');
// Ergebnis: 123456789
| Eigenschaft | Typ | Beschreibung |
|-------------|-----|--------------|
| uid | string | Normalisierte UID (nur Ziffern) |
| uidFormatted | string | Formatierte UID (CHE-XXX.XXX.XXX) |
| uidCategory | string | Kategorie (CHE) |
| organisationName | ?string | Firmenname |
| organisationAdditionalName | ?string | Zusätzlicher Name |
| legalFormId | ?int | Rechtsform-ID |
| legalFormText | ?string | Rechtsform-Text |
| Eigenschaft | Typ | Beschreibung |
|-------------|-----|--------------|
| uidregStatusId | ?int | Status-ID (1=Aktiv, 2=Gelöscht, etc.) |
| uidregStatusText | ?string | Status-Text |
| uidregStatusEnterpriseActive | ?bool | Unternehmen aktiv? |
| uidregLiquidationDate | ?DateTime | Löschdatum |
| Eigenschaft | Typ | Beschreibung |
|-------------|-----|--------------|
| vatNumber | ?string | MWST-Nummer (nur Ziffern) |
| vatNumberFormatted | ?string | Formatiert (CHE-XXX.XXX.XXX MWST) |
| vatStatus | ?string | MWST-Status |
| vatEntryDate | ?DateTime | MWST-Eintragsdatum |
| vatLiquidationDate | ?DateTime | MWST-Löschdatum |
| Eigenschaft | Typ | Beschreibung |
|-------------|-----|--------------|
| chId | ?string | HR-Nummer (CH-XXX.X.XXX.XXX-X) |
| commercialRegisterStatus | ?string | HR-Status |
| commercialRegisterEntryDate | ?DateTime | HR-Eintragsdatum |
| Eigenschaft | Typ | Beschreibung |
|-------------|-----|--------------|
| address | ?Address | Adressobjekt (eCH-0010) |
| cantonAbbreviation | ?string | Kanton (z.B. "ZH") |
| municipalityId | ?string | Gemeinde-ID |
$address = $company->address;
$address->street; // Strasse
$address->houseNumber; // Hausnummer
$address->swissZipCode; // PLZ
$address->town; // Ort
$address->countryIdISO2; // Land (CH)
// Hilfsmethoden
$address->getStreetLine(); // "Bahnhofstrasse 1"
$address->getCityLine(); // "8000 Zürich"
$address->getFullAddress(); // Mehrzeilige Adresse
$address->getOneLiner(); // "Bahnhofstrasse 1, 8000 Zürich"
$address->isSwiss(); // true/false
| ID | Bezeichnung | |----|-------------| | 1 | Einzelunternehmen | | 2 | Einfache Gesellschaft | | 3 | Kollektivgesellschaft | | 4 | Kommanditgesellschaft | | 5 | Kommanditaktiengesellschaft | | 6 | Aktiengesellschaft | | 7 | GmbH | | 8 | Genossenschaft | | 9 | Verein | | 10 | Stiftung | | 11 | Zweigniederlassung |
use Ecolabor\SwissUid\Exceptions\UidApiException;
try {
$company = SwissUid::getByUid('invalid');
} catch (UidApiException $e) {
// API-Fehler behandeln
logger()->error('UID API Error: ' . $e->getMessage());
}
// Oder mit Search (gibt UidSearchResult zurück)
$result = SwissUid::search(['name' => 'Test']);
if ($result->hasError()) {
echo "Fehler: " . $result->errorMessage;
echo "Code: " . $result->errorCode;
}
composer test
MIT License. Siehe LICENSE für weitere Informationen.