setLogger(new CurlLogger()); } /** * 发送 Facebook 事件 * @param string $event_name 事件名称 (PageView / CompleteRegistration) * @param string $access_token * @param string $pixel_id * @param string $client_ip 用户 IP 地址 */ private static function sendEvent(string $event_name, string $access_token, string $pixel_id, string $client_ip): void { try { self::initFacebookApi($access_token); // 构建用户数据 $user_data = (new UserData()) ->setClientIpAddress($client_ip); // 附带 IP 地址 // 构建事件 $event = (new Event()) ->setEventName($event_name) ->setEventTime(time()) ->setUserData($user_data) ->setCustomData(new CustomData()) // 可扩展更多数据 ->setActionSource("website"); // 发送事件 (new EventRequest($pixel_id)) ->setEvents([$event]) ->execute(); } catch (Exception $e) { error_log("Facebook API Error: " . $e->getMessage()); } } /** * 触发 PageView 事件 * @param string $access_token * @param string $pixel_id * @param string $client_ip */ public static function PageView(string $access_token, string $pixel_id, string $client_ip): void { self::sendEvent("PageView", $access_token, $pixel_id, $client_ip); } /** * 触发 Lead 事件 * @param string $access_token * @param string $pixel_id * @param string $client_ip */ public static function Lead(string $access_token, string $pixel_id, string $client_ip): void { self::sendEvent("Lead", $access_token, $pixel_id, $client_ip); } /** * 触发 CompleteRegistration 事件 * @param string $access_token * @param string $pixel_id * @param string $client_ip */ public static function CompleteRegistration(string $access_token, string $pixel_id, string $client_ip): void { self::sendEvent("CompleteRegistration", $access_token, $pixel_id, $client_ip); } /** * 处理 Facebook 事件 * @param int $type 事件类型 (1 = PageView, 2 = CompleteRegistration,3 = Lead) 1是打开2是注册3是绑定手机号 * @param string $invite_code 邀请码 * @param string $client_ip 用户 IP 地址 */ public static function handleEvent(int $type, string $invite_code, string $client_ip): void { $recommend = Recommend::where('invite_code', $invite_code)->first(); if ($recommend) { $facebookConf = Facebookconf::where('promotionid', $recommend->id)->first(); if ($facebookConf) { $access_token = $facebookConf->access_token; $pixel_id = $facebookConf->pixel_id; match ($type) { 1 => self::PageView($access_token, $pixel_id, $client_ip), 2 => self::CompleteRegistration($access_token, $pixel_id, $client_ip), 3 => self::Lead($access_token, $pixel_id, $client_ip), default => error_log("Invalid event type: " . $type), }; } } } }