ecolabor/laravel-swiss-uid-search
Composer 安装命令:
composer require ecolabor/laravel-swiss-uid-search
包简介
Laravel package for integrating the Swiss UID (Unternehmens-Identifikationsnummer) webservice from the Federal Statistical Office (BFS)
README 文档
README
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)
Features
- 🔍 Unternehmen per UID-Nummer abrufen (
GetByUID) - 🔎 Unternehmen nach Name, Ort, Kanton suchen (
Search) - ✅ UID-Nummern validieren (
ValidateUID) - 💰 MWST-Nummern validieren (
ValidateVatNumber) - 📦 Automatisches Caching für bessere Performance
- 🏷️ Laravel Validation Rule
- 💡 Einfache Facade für schnellen Zugriff
Webservice Endpoints
| 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 |
Installation
composer require ecolabor/laravel-swiss-uid-search
Konfiguration
Veröffentlichen Sie die Konfigurationsdatei:
php artisan vendor:publish --tag=swiss-uid-config
Umgebungsvariablen
# 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
Verwendung
Unternehmen per UID abrufen
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 }
Nach Unternehmen suchen
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)', ...]
UID validieren
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!"; }
Validation Rule
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()], ]);
UID formatieren
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
UidEntity Eigenschaften
Basis-Informationen
| 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 |
Status-Informationen (UID-Register)
| 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 |
MWST-Informationen
| 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 |
Handelsregister-Informationen
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
chId |
?string | HR-Nummer (CH-XXX.X.XXX.XXX-X) |
commercialRegisterStatus |
?string | HR-Status |
commercialRegisterEntryDate |
?DateTime | HR-Eintragsdatum |
Adresse
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
address |
?Address | Adressobjekt (eCH-0010) |
cantonAbbreviation |
?string | Kanton (z.B. "ZH") |
municipalityId |
?string | Gemeinde-ID |
Address Eigenschaften (eCH-0010)
$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
Rechtsformen (Legal Forms)
| 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 |
Fehlerbehandlung
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; }
Testing
composer test
Ressourcen
Lizenz
MIT License. Siehe LICENSE für weitere Informationen.
Credits
- ecolabor GmbH
- Bundesamt für Statistik (BFS)
ecolabor/laravel-swiss-uid-search 适用场景与选型建议
ecolabor/laravel-swiss-uid-search 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 154 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「search」 「laravel」 「identification」 「enterprise」 「company」 「UID」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ecolabor/laravel-swiss-uid-search 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ecolabor/laravel-swiss-uid-search 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ecolabor/laravel-swiss-uid-search 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel package to retrieve data from Google Search Console
The tenancy/tenancy identification driver using environment variables
PHP Interface for Babel Street Text Analytics
Indexed Search Autocomplete - Extends the TYPO3 Core Extension Indexed_Search searchform with an autocomplete feature.
API client for validating Tax Identification Number.
Abstraction Layer to index and search entities
统计信息
- 总下载量: 154
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 27
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-03