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());
}
);
}
}