PHP Implementierung
Dieses Beispiel zeigt, wie der Basket serverseitig in PHP aufgebaut, sauber URL-encodiert und an den Endpoint gesendet wird.
Es werden zwei Varianten gezeigt: cURL (empfohlen) und file_get_contents (einfach).
Beispiel mit cURL (empfohlen)
<?php
// Beispielhafte Datenquellen (Shop-Objekt / eigene Funktionen)
$positions = $Shopsystem->getOrderedPositions(); // Array mit bestellten Positionen
$emid = $Shopsystem->getEmid(); // EMID (vom Click übergeben & serverseitig gespeichert)
$orderId = $Shopsystem->ordernumber; // Eindeutige Order-ID
$basket = [];
foreach ($positions as $pos) {
$basket[] = [
'campaign_id' => (string) $pos['campaign_id'], // IDs als String halten
'trigger_id' => (string) $pos['trigger_id'],
'token' => (string) $orderId,
'action_id' => (string) $emid, // EMID für Attribution
'amount' => (string) $pos['amount'], // Menge je Position
'price' => number_format((float) $pos['net_price'], 2, '.', ''), // Netto/Stück
'article_number' => (string) $pos['sku'],
'productname' => (string) $pos['name'],
'category' => (string) $pos['category'],
'additional' => array_filter([
'vouchercode' => $pos['voucher'] ?? null,
'customerType' => $pos['customerType'] ?? null,
], static fn($v) => $v !== null && $v !== '')
];
}
$endpoint = 'https://SUB-DOMAIN/trck/ebasket/';
// GET-Parameter aufbauen (json wird automatisch URL-encodiert)
$query = http_build_query([
'json' => json_encode($basket, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
'currency' => 'EUR', // optional, Standard EUR
]);
$url = $endpoint . '?' . $query;
// cURL-Request (GET)
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
// Optional: Logging eines Response-Headers
CURLOPT_HEADER => false,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false || $httpCode >= 400) {
error_log('Basket-Tracking fehlgeschlagen: HTTP ' . $httpCode . ' - ' . curl_error($ch));
// Optional: Retry-Logik / Queueing
}
curl_close($ch);
Alternative mit file_get_contents (einfach)
<?php
$endpoint = 'https://SUB-DOMAIN/trck/ebasket/';
$query = http_build_query([
'json' => json_encode($basket, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
'currency' => 'EUR',
]);
$url = $endpoint . '?' . $query;
$context = stream_context_create([
'http' => [
'method' => 'GET',
'timeout' => 10,
'header' => [
'Accept: application/json',
]
],
'ssl' => [
'verify_peer' => true,
'verify_peer_name' => true,
],
]);
$result = @file_get_contents($url, false, $context);
if ($result === false) {
error_log('Basket-Tracking fehlgeschlagen (file_get_contents). URL: ' . $url);
}
No comments to display
No comments to display