'Empty payload']); exit; } if (empty($signature)) { http_response_code(400); echo json_encode(['error' => 'Missing signature']); exit; } // Initialize handler and process webhook $handler = new RainforestPayHandler($class_database); $result = $handler->processWebhook($payload, $signature); if ($result['success']) { http_response_code(200); echo json_encode(['status' => 'success', 'message' => $result['message']]); } else { http_response_code(400); echo json_encode(['status' => 'error', 'message' => $result['message']]); } } catch (Exception $e) { // Log error error_log(date('Y-m-d H:i:s') . " [RainforestPay] Webhook error: " . $e->getMessage() . "\n", 3, 'logs/rainforest_webhooks.log'); http_response_code(500); echo json_encode(['status' => 'error', 'message' => 'Internal server error']); } ?>