Helper & Konfiguration
App\Http\Helpers\Grenke\Helper
Statische Lookup-Tabellen für Entity-spezifische Defaults und Models.
getEntity($entity = null): array|string
Liste aller bekannten Entity-Slugs.
Helper::getEntity(); // → ['calculate', 'contracts', 'customslas', 'legalforms', 'objecttypes', 'requests']
Helper::getEntity('contracts');// → 'contracts'
getModel($entity = null)
Mapping Entity-Slug → Eloquent-Modell.
Helper::getModel('contracts'); // → \App\Models\Common\Grenke\Contracts::class
Helper::getModel('requests'); // → \App\Models\Common\Grenke\Requests::class
getParameter($entity)
Liefert die Listing-Parameter (Page, PageSize, State) je Entity. Default pageSize kommt aus GRENKE_PAGE_SIZE.
$param = Helper::getParameter('contracts');
// $param['pageSize'] = ['contractListParameter.pageSize', 3501]
// $param['page'] = ['contractListParameter.page', 1]
// $param['state'] = ['contractListParameter.state', 'ReadyToSign']
Verwendung im Controller:
$decoded = $this->grenkeApiService->getJson($entity, [
$param['pageSize'][0] => $param['pageSize'][1],
]);
getState($entity = null): array|string
Liste der RequestStates als Array (mirror von RequestState-Enum).
getFactor($period) & getFinancingAmount($monthlyInstalment, $period)
Fixe Faktor-Tabelle für Lease-Berechnung (siehe CalculateController.purchase):
| Period (Monate) | Factor |
|---|---|
| 48 | 2.39 |
| 60 | 1.95 |
| 72 | 1.7 |
| 84 | 1.47 |
Helper::getFactor(84); // → 1.47
Helper::getFinancingAmount(299, 84); // → 20340.14
config/grenke.php
return [
'missing_info_mailflow' => [
'enabled' => env('GRENKE_MISSING_INFO_MAILFLOW_ENABLED', true),
'template_id' => env('GRENKE_MISSING_INFO_WECLAPP_TEMPLATE_ID', null),
'cc' => array_filter(array_map('trim', explode(',', env('GRENKE_MISSING_INFO_CC', '')))),
'bcc' => array_filter(array_map('trim', explode(',', env('GRENKE_MISSING_INFO_BCC', '')))),
'deduplicate_hours' => (int) env('GRENKE_MISSING_INFO_DEDUPLICATE_HOURS', 24),
'store_rendered_view' => env('GRENKE_MISSING_INFO_STORE_RENDERED_VIEW', false),
],
];
Siehe MissingInfo-Mailflow für Details zu jedem Schlüssel.
config/services.php — 'grenke'
'grenke' => [
'base_url' => rtrim(env('GRENKE_BASE_URL'), '/') . '/',
'pem_file' => storage_path('app/private/cert/' . env('GRENKE_PEM_FILE')),
'cert_pass' => env('GRENKE_CERT_PASS'),
'cert_file' => storage_path('app/private/cert/' . env('GRENKE_CERT_FILE')),
'ca_file' => storage_path('app/private/cert/' . env('GRENKE_CA_FILE')),
'api_key' => storage_path('app/private/cert/' . env('GRENKE_API_KEY')),
'timeout' => env('GRENKE_TIMEOUT', 30),
'connect_timeout' => env('GRENKE_CONNECT_TIMEOUT', 10),
'page_size' => env('GRENKE_PAGE_SIZE', 3501),
],
Das Zertifikat (GRENKE_PEM_FILE) muss in storage/app/private/cert/ liegen und im Repo unter Versionskontrolle (verschlüsselt) sein. Es wird vom ApiService automatisch via Http::withOptions(['cert' => [$pem, $pass]]) angehängt.
.env-Variablen — Übersicht
# Grenke API
GRENKE_BASE_URL="https://demo-api.grenke.de/basic/v1/"
GRENKE_PEM_FILE="grenke.pem"
GRENKE_CERT_PASS="..."
GRENKE_TIMEOUT=30
GRENKE_CONNECT_TIMEOUT=10
GRENKE_PAGE_SIZE=3501
# MissingInfo-Mailflow
GRENKE_MISSING_INFO_MAILFLOW_ENABLED=true
GRENKE_MISSING_INFO_WECLAPP_TEMPLATE_ID=12345
GRENKE_MISSING_INFO_CC=
GRENKE_MISSING_INFO_BCC=
GRENKE_MISSING_INFO_DEDUPLICATE_HOURS=24
GRENKE_MISSING_INFO_STORE_RENDERED_VIEW=false