public function execute(Observer $observer) { if (!$this->_api->enabled()) { return; } try { /** @var $order Order */ $order = $observer->getEvent()->getOrder(); // Check if a payment is available for this order yet if ($order->getState() == \Magento\Sales\Model\Order::STATE_PENDING_PAYMENT) { return; } // Check if case already exists for this order if ($this->_helper->doesCaseExist($order)) { return; } $orderData = $this->_helper->processOrderData($order); // Add order to database $case = $this->_helper->createNewCase($order); // Post case to signifyd service $result = $this->_helper->postCaseToSignifyd($orderData, $order); if ($order->canHold()) { $order->hold()->getResource()->save($order); } if ($result) { $case->setCode($result); $case->setMagentoStatus(CaseRetry::IN_REVIEW_STATUS)->setUpdated(strftime('%Y-%m-%d %H:%M:%S', time())); $case->getResource()->save($case); } } catch (\Exception $ex) { $this->_logger->error($ex->getMessage()); } }
public function __construct(ScopeConfigInterface $scopeConfig, LogHelper $logger) { $this->enabled = $scopeConfig->isSetFlag('signifyd/general/enabled'); $this->apiKey = $scopeConfig->getValue('signifyd/general/key'); $this->logInfo = true; $this->logError = true; $this->loggerError = function ($message) use($logger) { $logger->error("API Error: " . $message); }; $this->apiAddress = "https://api.signifyd.com/v2"; }
/** * @param $caseData * @return bool */ public function postCaseToSignifyd($caseData, $order) { $this->_logger->request("Sending: " . json_encode($caseData)); $id = $this->_api->createCase($caseData); if ($id) { $this->_logger->debug("Case sent. Id is {$id}"); } else { $this->_logger->error("Case failed to send."); return false; } return $id; }
public function massAction(AbstractCollection $collection) { foreach ($collection->getItems() as $order) { try { // Check if case already exists for this order if ($this->_helper->doesCaseExist($order)) { continue; } $orderData = $this->_helper->processOrderData($order); // Add order to database $this->_helper->createNewCase($order); // Post case to signifyd service $this->_helper->postCaseToSignifyd($orderData, $order); } catch (\Exception $ex) { $this->_logger->error($ex->getMessage()); } } $this->messageManager->addSuccessMessage(__('Success.')); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath($this->getComponentRefererUrl()); return $resultRedirect; }