executeQuery($sql, [$payment['id'], $streamer_id]); // Log the event logWebhookEvent('payment.created', $payment['id'], $streamer_id); } function handlePaymentUpdated($payment) { global $class_database; // Get metadata $metadata = $payment['metadata'] ?? []; $streamer_id = $metadata['streamer_id'] ?? null; if (!$streamer_id) { return; } // Update donation status based on payment status $status = $payment['status'] === 'COMPLETED' ? 'completed' : 'failed'; $sql = "UPDATE donations SET status = ?, updated_at = NOW() WHERE payment_id = ? AND streamer_id = ?"; $class_database->executeQuery($sql, [$status, $payment['id'], $streamer_id]); // Log the event logWebhookEvent('payment.updated', $payment['id'], $streamer_id); } function handlePayoutCreated($payout) { global $class_database; // Update payout status $sql = "UPDATE payouts SET status = 'processing', updated_at = NOW() WHERE payout_id = ?"; $class_database->executeQuery($sql, [$payout['id']]); // Log the event logWebhookEvent('payout.created', $payout['id']); } function handlePayoutUpdated($payout) { global $class_database; // Update payout status $status = $payout['status'] === 'COMPLETED' ? 'completed' : 'failed'; $sql = "UPDATE payouts SET status = ?, updated_at = NOW() WHERE payout_id = ?"; $class_database->executeQuery($sql, [$status, $payout['id']]); // Log the event logWebhookEvent('payout.updated', $payout['id']); } function logWebhookEvent($event_type, $resource_id, $streamer_id = null) { global $class_database; $sql = "INSERT INTO webhook_logs ( event_type, resource_id, streamer_id, created_at ) VALUES (?, ?, ?, NOW())"; $class_database->executeQuery($sql, [$event_type, $resource_id, $streamer_id]); }