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()); } }
/** * Main Retry Method to start retry cycle */ public function retry() { $this->_logger->request("Main retry method called"); // Getting all the cases that were not submitted to Signifyd $waitingCases = $this->caseRetryObj->getRetryCasesByStatus(CaseRetry::WAITING_SUBMISSION_STATUS); foreach ($waitingCases as $case) { $this->_logger->request("Signifyd: preparing for send case no: {$case['order_increment']}"); $order = $this->_objectManager->get('Magento\\Sales\\Model\\Order')->loadByIncrementId($case['order_increment']); $caseData = $this->_helper->processOrderData($order); $result = $this->_helper->postCaseToSignifyd($caseData, $order); if ($result) { $caseObj = $this->_objectManager->create('Signifyd\\Connect\\Model\\Casedata')->load($case->getOrderIncrement())->setCode($result)->setMagentoStatus(CaseRetry::IN_REVIEW_STATUS)->setUpdated(strftime('%Y-%m-%d %H:%M:%S', time())); $caseObj->save(); } } // Getting all the cases that are awaiting review from Signifyd $inReviewCases = $this->caseRetryObj->getRetryCasesByStatus(CaseRetry::IN_REVIEW_STATUS); foreach ($inReviewCases as $case) { $this->_logger->request("Signifyd: preparing for review case no: {$case['order_increment']}"); $order = $this->_objectManager->get('Magento\\Sales\\Model\\Order')->loadByIncrementId($case['order_increment']); $result = $this->caseRetryObj->processInReviewCase($case, $order); if ($result) { } } // Getting all the cases that need processing after the response was received $inProcessingCases = $this->caseRetryObj->getRetryCasesByStatus(CaseRetry::PROCESSING_RESPONSE_STATUS); foreach ($inProcessingCases as $case) { $this->_logger->request("Signifyd: preparing for review case no: {$case['order_increment']}"); $order = $this->_objectManager->get('Magento\\Sales\\Model\\Order')->loadByIncrementId($case['order_increment']); $this->caseRetryObj->processResponseStatus($case, $order); } $this->_logger->request("Main retry method ended"); return; }
public function sendOrderToSignifyd(Observer $observer) { /** @var $order Order */ $order = $observer->getEvent()->getOrder(); $this->_logger->info("Order received"); $orderData = $this->_helper->processOrderData($order); // Inspect data $items = $order->getAllItems(); foreach ($items as $item) { $this->_logger->info($item->convertToJson()); } $this->_logger->info(json_encode($orderData)); $this->_logger->info($order->convertToJson()); // Add order to database $this->_helper->createNewCase($order); // Post case to signifyd service $this->_helper->postCaseToSignifyd($orderData); }
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; }