Observer/Purchase.php (43 lines of code) (raw):

<?php /** * Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved */ namespace Facebook\BusinessExtension\Observer; use Facebook\BusinessExtension\Helper\FBEHelper; use Facebook\BusinessExtension\Helper\MagentoDataHelper; use Facebook\BusinessExtension\Helper\ServerSideHelper; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use Facebook\BusinessExtension\Helper\ServerEventFactory; class Purchase implements ObserverInterface { /** * @var FBEHelper */ protected $fbeHelper; /** * @var MagentoDataHelper */ protected $magentoDataHelper; /** * @var ServerSideHelper */ protected $serverSideHelper; /** * Purchase constructor * * @param FBEHelper $fbeHelper * @param MagentoDataHelper $magentoDataHelper * @param ServerSideHelper $serverSideHelper */ public function __construct( FBEHelper $fbeHelper, MagentoDataHelper $magentoDataHelper, ServerSideHelper $serverSideHelper ) { $this->fbeHelper = $fbeHelper; $this->magentoDataHelper = $magentoDataHelper; $this->serverSideHelper = $serverSideHelper; } /** * Execute action method for the Observer * * @param Observer $observer * @return $this */ public function execute(Observer $observer) { try { $eventId = $observer->getData('eventId'); $customData = [ 'currency' => $this->magentoDataHelper->getCurrency(), 'value' => $this->magentoDataHelper->getOrderTotal(), 'content_type' => 'product', 'content_ids' => $this->magentoDataHelper->getOrderContentIds(), 'contents' => $this->magentoDataHelper->getOrderContents(), 'order_id' => (string)$this->magentoDataHelper->getOrderId() ]; $event = ServerEventFactory::createEvent('Purchase', array_filter($customData), $eventId); $userDataFromOrder = $this->magentoDataHelper->getUserDataFromOrder(); $this->serverSideHelper->sendEvent($event, $userDataFromOrder); } catch (\Exception $e) { $this->fbeHelper->log(json_encode($e)); } return $this; } }