コード例 #1
0
 public function postProcess()
 {
     /* Dados do post enviado pelo Bcash */
     $transactionId = Tools::getValue('transacao_id');
     $orderId = Tools::getValue('pedido');
     $statusId = Tools::getValue('status_id');
     if ($this->isCurrentState($orderId, $statusId)) {
         return;
     }
     $email = Configuration::get(self::prefix . 'EMAIL');
     $token = Configuration::get(self::prefix . 'TOKEN');
     $notificationContent = new NotificationContent($transactionId, $orderId, $statusId);
     $notification = new Notification($email, $token, $notificationContent);
     $notification->enableSandBox(Configuration::get(self::prefix . 'SANDBOX'));
     $transactionValue = $this->getOrderValue($orderId);
     try {
         $result = $notification->verify($transactionValue);
         if ($result) {
             $this->updateStatus($orderId, $statusId);
             $this->writeHistory($orderId, $transactionId);
         }
     } catch (ValidationException $e) {
         $this->logUpdateFail($orderId, $transactionId, $statusId, $e);
     } catch (ConnectionException $e) {
         $this->logUpdateFail($orderId, $transactionId, $statusId, $e);
     }
 }
コード例 #2
0
 /**
  * Recebimento de notificações pela API
  */
 public function requestAction()
 {
     // GET THIS URL -> Mage::getUrl('pagamento/notification/request')
     // POST request
     $transactionId = Mage::app()->getRequest()->getParam('transacao_id');
     $orderId = trim(stripslashes(Mage::app()->getRequest()->getParam('pedido')));
     $statusId = (int) Mage::app()->getRequest()->getParam('status_id');
     $status = Mage::app()->getRequest()->getParam('status');
     // Instância de classe de notificação
     $notificationContent = new NotificationContent($transactionId, $orderId, $statusId);
     $notification = new Notification($this->email, $this->token, $notificationContent);
     $notification->enableSandBox($this->sandbox);
     try {
         // Request log
         Mage::helper("bcash")->saveLog('Step 2 - Informacoes da requisicao recebida: {transacao_id: ' . $transactionId . ', pedido: ' . $orderId . ', status_id: ' . $statusId . ', status: ' . $status . '}');
         $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
         if ($order->getData() != null) {
             // Checa requisição válida através de valor total do pedido (valor dos produtos + frete + acréscimo - desconto)
             $transactionValue = $order->getBaseGrandTotal();
             $validNotification = $notification->verify($transactionValue);
             if ($validNotification == true) {
                 // Checa se o código da transação está relacionado com o pedido
                 if ($this->isValidTransactionForOrder($order, $transactionId)) {
                     Mage::helper("bcash")->saveLog("Step 3 - Notificacao pode ser processada no pedido.");
                     // Registro de notificação recebida
                     $order->addStatusHistoryComment('Notificação da transação de pagamento recebida. Status: ' . $status);
                     $order->save();
                     // Processamento da notificação no pedido
                     $this->processNotification($transactionId, $orderId, $statusId);
                 } else {
                     Mage::helper("bcash")->saveLog("Step 3 - A transacao recebida nao esta relacionada com o pedido e nao sera processada.");
                 }
             } else {
                 Mage::helper("bcash")->saveLog("Step 3 - Notificacao invalida recebida.");
             }
         } else {
             Mage::helper("bcash")->saveLog("Step 3 - Atencao!!! Pedido " . $orderId . " nao encontrado. ");
         }
     } catch (ValidationException $e) {
         Mage::helper("bcash")->saveLog("Validation error - NotificationController->requestAction: " . $e->getMessage(), $e->getErrors());
     } catch (ConnectionException $e) {
         Mage::helper("bcash")->saveLog("Connection error - NotificationController->requestAction: " . $e->getMessage(), $e->getErrors());
     }
 }