public function trackPixel()

in 2.3.x-and-above/upload/catalog/model/extension/module/facebook_business.php [969:1074]


    public function trackPixel($server_event_params, $event_name, $event_id) {
        if (($this->config->get('facebook_business_cookie_bar_status') && (empty($_COOKIE['fb_cookieconsent_status']) || $_COOKIE['fb_cookieconsent_status'] !== 'deny'))
          || $server_event_params == null) {
            return;
        }

        if ($event_name == 'Purchase' && empty($server_event_params['content_ids'])) {
            return;
        }

        if ($this->config->get('facebook_use_s2s')) {
            $user_pii_data = $this->getPii();

            $client_ips = explode(',', Util::getIpAddress());
            $client_ip = $client_ips[0];

            $user_agent = Util::getHttpUserAgent();

            try {
                if (!empty($client_ip) && !empty($user_agent)) {
                    $user_data = (new UserData())
                        ->setClientIpAddress($client_ip)
                        ->setClientUserAgent($user_agent)
                        ->setFbp(Util::getFbp())
                        ->setFbc(Util::getFbc());
                } else {
                    $user_data = (new UserData())
                        ->setFbp(Util::getFbp())
                        ->setFbc(Util::getFbc());
                }

                if ($user_pii_data) {
                    if (!empty($user_pii_data['em'])) {
                        $user_data->setEmail($user_pii_data['em']);
                    }
            
                    if (!empty($user_pii_data['fn'])) {
                        $user_data->setFirstName($user_pii_data['fn']);
                    }
            
                    if (!empty($user_pii_data['ln'])) {
                        $user_data->setLastName($user_pii_data['ln']);
                    }
            
                    if (!empty($user_pii_data['ph'])) {
                        $user_data->setPhone($user_pii_data['ph']);
                    }

                    if (!empty($user_pii_data['external_id'])) {
                        $user_data->setExternalId($user_pii_data['external_id']);
                    }
                }

                $event = (new Event())
                    ->setEventName($event_name)
                    ->setEventTime(time())
                    ->setEventId($event_id)
                    ->setEventSourceUrl(Util::getRequestUri())
                    ->setActionSource(ActionSource::WEBSITE)
                    ->setUserData($user_data)
                    ->setDataProcessingOptions(array())
                    ->setDataProcessingOptionsCountry(0)
                    ->setDataProcessingOptionsState(0)
                    ->setCustomData(new CustomData());

                $custom_data = $event->getCustomData();

                if (!empty($server_event_params['currency'])) {
                    $custom_data->setCurrency($server_event_params['currency']);
                }
          
                if (!empty($server_event_params['value'])) {
                    $custom_data->setValue($server_event_params['value']);
                }
          
                if (!empty($server_event_params['content_ids'])) {
                    $custom_data->setContentIds($server_event_params['content_ids']);
                }
          
                if (!empty($server_event_params['content_type'])) {
                    $custom_data->setContentType($server_event_params['content_type']);
                }
            } catch (Exception $ex) {
                $this->log->write('Facebook Business Extension :: Fail to create server event!');
                return false;
            }

            $api = Api::init(null, null, $this->config->get('facebook_system_user_access_token'), false);

            $agent_data = json_decode($this->getAgentParameters(), true);
            $agent = $agent_data['agent'];

            $async_request = (new EventRequestAsync($this->config->get('facebook_pixel_id')))
                  ->setEvents(array($event))
                  ->setPartnerAgent($agent);

            return $async_request->execute()
                ->then(
                    null,
                    function(\Exception $ex) {
                        // For debugging
                        // $this->log->write('Facebook Business Extension :: Fail to send server event! Error Message: ' . $ex->getMessage());
                    }
                );
        }
    }