Grenke Services
app/Services/GrenkeApiService
Methoden
- GET
- POST
- PUT
- DELETE
- PATCH
$data = $this->grenkeApiService->getJson('basic/v1/contracts', [
'pageSize' => 100,
]);
$data = $this->grenkeApiService->postJson('basic/v1/contracts', [
'name' => 'Testvertrag',
'status' => 'active',
]);
$data = $this->grenkeApiService->putJson('basic/v1/contracts/123', [
'status' => 'inactive',
]);
$data = $this->grenkeApiService->deleteJson('basic/v1/contracts/123');
$data = $this->grenkeApiService->patchJson('basic/v1/contracts/123', [
'status' => 'inactive',
]);
Controller
Dann im Controller nur noch:
$decoded = $this->grenkeApiService->basicGet($entity, [
$param['pageSize'][0] => $param['pageSize'][1],
]);
Example
<?php
namespace App\Http\Controllers;
use App\Http\Helpers\Grenke\Helper as grenkeHelper;
use App\Services\GrenkeApiService;
use Illuminate\Http\JsonResponse;
use Throwable;
class GrenkeController extends Controller
{
public function __construct(
protected GrenkeApiService $grenkeApiService
) {
}
public function store(string $entity = 'contracts'): JsonResponse
{
$model = grenkeHelper::getModel($entity);
$param = grenkeHelper::getParameter($entity);
$decoded = $this->grenkeApiService->getJson($entity, [
$param['pageSize'][0] => $param['pageSize'][1],
]);
$items = $decoded['Items'] ?? [];
foreach ($items as $item) {
try {
$model::query()->create($item);
} catch (Throwable $e) {
\Log::error('Grenke import failed', [
'entity' => $entity,
'item' => $item,
'message' => $e->getMessage(),
]);
}
}
return response()->json([
'data' => $decoded,
], 200);
}
}
app/Services/GrenkeImportService
Optional noch besser 💡
$model::query()->updateOrCreate(
['id' => $item['id']],
$item
);
Controller
Der Controller ist jetzt fast nur noch Routing und Response:
public function store(string $entity = 'contracts'): JsonResponse
{
$result = $this->grenkeImportService->import($entity);
return response()->json([
'success' => true,
'data' => $result,
]);
}
Example
<?php
namespace App\Http\Controllers;
use App\Services\GrenkeImportService;
use Illuminate\Http\JsonResponse;
use Throwable;
class GrenkeController extends Controller
{
public function __construct(
protected GrenkeImportService $grenkeImportService
) {
}
public function store(string $entity = 'contracts'): JsonResponse
{
try {
$result = $this->grenkeImportService->import($entity);
return response()->json([
'success' => true,
'data' => $result,
], 200);
} catch (Throwable $e) {
\Log::error('Grenke store import failed', [
'entity' => $entity,
'message' => $e->getMessage(),
]);
return response()->json([
'success' => false,
'message' => $e->getMessage(),
], 500);
}
}
}
app/Services/GrenkeRequestService
Call over grenkeApiService
$this->grenkeApiService->postJson('requests', $payload);
$this->grenkeApiService->getJson('requests/' . $financingId);
$this->grenkeApiService->getJson('requests/' . $financingId . '/e-signature/configuration');
$this->grenkeApiService->postJson('requests/' . $financingId . '/e-signature');
$this->grenkeApiService->putJson('requests/' . $financingId . '/cancel-e-signature');
$this->grenkeApiService->putJson('requests/' . $financingId . '/switchToPaperContract');
Example
- E-Signature
- Paper Contract
$result = $this->grenkeRequestService->process(
requestPayload: [
'customerNumber' => '12345',
'amount' => 15000,
'term' => 36,
],
cancelESignature: false,
eSignaturePayload: [],
cancelPayload: [],
switchPayload: [],
maxAttempts: 15,
sleepMilliseconds: 1000
);
$result = $this->grenkeRequestService->process(
requestPayload: [
'customerNumber' => '12345',
'amount' => 15000,
'term' => 36,
],
cancelESignature: true
);