Files
wevads-platform/scripts/api_tracking-webhook.php
2026-02-26 04:53:11 +01:00

70 lines
2.1 KiB
PHP
Executable File

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
// Log incoming webhook
$log_file = '/var/log/wevads/tracking_webhook.log';
$input = file_get_contents('php://input');
$data = json_decode($input, true) ?: $_POST;
file_put_contents($log_file, date('Y-m-d H:i:s') . " Webhook received: " . json_encode($data) . "\n", FILE_APPEND);
try {
if (empty($data)) {
throw new Exception("No data received");
}
$dsn = 'pgsql:host=localhost;dbname=adx_system';
$db = new PDO($dsn, 'admin', 'admin123');
$db->exec("SET search_path TO admin, public");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$tracking_id = $data['tracking_id'] ?? $data['id'] ?? null;
$event_type = $data['event'] ?? $data['type'] ?? 'unknown';
if (!$tracking_id) {
throw new Exception("Missing tracking_id");
}
// Insert into tracking_events
$stmt = $db->prepare("
INSERT INTO tracking_events
(tracking_id, event_type, event_data, ip_address, user_agent, referer)
VALUES (?, ?, ?::jsonb, ?, ?, ?)
");
$stmt->execute([
$tracking_id,
$event_type,
json_encode($data),
$_SERVER['REMOTE_ADDR'] ?? 'unknown',
$_SERVER['HTTP_USER_AGENT'] ?? 'unknown',
$_SERVER['HTTP_REFERER'] ?? 'unknown'
]);
// Update send log if needed
if (in_array($event_type, ['open', 'click'])) {
$update_field = $event_type === 'open' ? 'opened_at = NOW()' : 'clicked_at = NOW()';
$db->exec("
UPDATE unified_send_log_new
SET {$update_field}
WHERE tracking_id = '{$tracking_id}'
");
}
echo json_encode([
'success' => true,
'message' => "Event '{$event_type}' logged for tracking_id '{$tracking_id}'",
'event_id' => $db->lastInsertId()
]);
} catch (Exception $e) {
http_response_code(400);
file_put_contents($log_file, date('Y-m-d H:i:s') . " ERROR: " . $e->getMessage() . "\n", FILE_APPEND);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}
?>