Skip to main content

Weclapp

Anbindung an Weclapp — das Cloud-ERP, in dem alle Stamm- und Bewegungsdaten gehalten werden. Die common-api

  • spricht die Weclapp REST-API über WeclappApiService (API-Key in Headers),
  • empfängt Webhooks unter /api/v1/weclapp/webhooks (IP-Whitelist),
  • lädt Mail-Templates über WeclappMailTemplateService und rendert sie via WeclappTemplateRendererService (für den Grenke-MissingInfo-Mailflow).

Stack

Inhalt

Konfiguration

.env:

WECLAPP_BASE_URL="https://bluesafety.weclapp.com/webapp/api/v1/"
WECLAPP_API_KEY="<api-key>"
WECLAPP_WEBHOOK_SECRET="<random-shared-secret>"
WECLAPP_TIMEOUT=30
WECLAPP_CONNECT_TIMEOUT=10

config/services.php:

'weclapp' => [
'base_url' => rtrim(env('WECLAPP_BASE_URL'), '/') . '/',
'api_key' => env('WECLAPP_API_KEY'),
'webhook_secret' => env('WECLAPP_WEBHOOK_SECRET'),
'timeout' => env('WECLAPP_TIMEOUT', 30),
'connect_timeout' => env('WECLAPP_CONNECT_TIMEOUT', 10),
],

Routen

# IP-Whitelist (3.73.185.97 = Weclapp Webhook-Server)
GET|POST /api/v1/weclapp/webhooks

# Sanctum
GET /api/v1/weclapp/show/{model?}/{entity?}/{value?}
GET /api/v1/weclapp/setup/{model?}
GET /api/v1/weclapp/get
GET /api/v1/weclapp/update/{model?}/{entity?}/{value?}
GET /api/v1/weclapp/entityPullAttr/{...} # custom-attr von Weclapp ziehen
GET /api/v1/weclapp/entityPushAttr/{...} # custom-attr in Weclapp pushen
GET /api/v1/weclapp/mfrPost/{request?} # Trigger MFR ↔ Weclapp Sync

Die show/setup/get/update-Routen leben in WeclappController und sind primär für interne Sync-Tools / CLI-Aufrufe gedacht.

Eloquent-Modelle

Im Verzeichnis app/Models/Weclapp/ liegen ~150 Eloquent-Modelle, die direkt gegen die Weclapp-DB sprechen (über das geccomedia/weclapp-Package, das Weclapp REST → Eloquent abstrahiert).

use App\Models\Weclapp\Customer;

$customer = Customer::where('company', 'Artur Zeier')->firstOrFail();

Mass-Assignment

$customer = new Customer();
Customer::unguard();
$customer->fill(['partyType' => 'ORGANIZATION']);
Customer::reguard();

Sub-Entities

use App\Models\Weclapp\Comment;

$comments = Comment::whereEntity('customer', 123)->orderByDesc()->get();

Logging

use App\Http\Controllers\Weclapp\Connection;

app(Connection::class)->enableQueryLog();
Customer::create(['name' => 'Test']);
app(Connection::class)->getQueryLog();

Welche Modelle es gibt, kannst du in Helper::getWeclappModel() oder direkt im app/Models/Weclapp/-Ordner sehen — von accountTransaction bis weclappOs.