Пример #1
0
 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());
     }
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 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);
 }
Пример #4
0
 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;
 }