public function cancelaPedido(Mage_Sales_Model_Order $order)
 {
     $paymentMethod = $order->getPayment()->getMethodInstance()->getCode();
     $listPaymentMethodsIdeasa = Mage::helper('base')->listPaymentMethods();
     $this->logger->info('Processando cancelamento do pedido ' . $order->getRealOrderId() . ', do modulo: ' . $paymentMethod);
     try {
         if ($order->getState() != Mage_Sales_Model_Order::STATE_CANCELED) {
             $order->cancel();
             //força o cancelamento
             if ($order->getStatus() != Mage_Sales_Model_Order::STATE_CANCELED) {
                 $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, Mage::helper('base')->__('Pedido cancelado'), $notified = false);
             } else {
                 $order->addStatusToHistory($order->getStatus(), Mage::helper('base')->__('Pedido cancelado.'));
             }
             if ($order->hasInvoices() != '') {
                 $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, Mage::helper('base')->__('O pagamento e o pedido foram cancelados, mas não foi possível retornar os produtos ao estoque pois já havia uma fatura gerada para este pedido.'), $notified = false);
             }
             $order->save();
         }
         if (Mage::helper('base')->isIdeasaPaymentMethod($paymentMethod) && Mage::helper('base/module')->isPagSeguroDiretoExists() && $paymentMethod == $listPaymentMethodsIdeasa[0]) {
             Mage::getModel('pagsegurodireto/notification')->sendEmail($order);
         }
     } catch (Exception $e) {
         $this->logger->error("Erro ao cancelar pedido {$orderId} \n {$e->__toString}()");
     }
     $this->logger->info('Cancelamento do pedido foi concluido ' . $order->getRealOrderId() . ', do modulo: ' . $paymentMethod);
     return;
 }
 /**
  * @param Mage_Sales_Model_Order $order
  * @param Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus
  * @return void
  */
 public function updateByTransactionStatus(Mage_Sales_Model_Order $order, Payone_Core_Model_Domain_Protocol_TransactionStatus $transactionStatus)
 {
     // Update Status of Transaction
     $order->setPayoneTransactionStatus($transactionStatus->getTxaction());
     // Update dunning status
     if ($transactionStatus->getReminderlevel()) {
         $order->setPayoneDunningStatus($transactionStatus->getReminderlevel());
     }
     // Status mapping of Order by Transaction Status
     $statusMapping = $this->getConfigStore()->getGeneral()->getStatusMapping();
     $txAction = $transactionStatus->getTxaction();
     /**
      * @var $paymentMethod Payone_Core_Model_Payment_Method_Abstract
      */
     $paymentMethod = $order->getPayment()->getMethodInstance();
     $type = $paymentMethod->getMethodType();
     // Mapping
     $mapping = $statusMapping->getByType($type);
     if (!is_array($mapping) or !array_key_exists($txAction, $mapping)) {
         return;
     }
     // Check for valid Mapping
     $mappingOrderState = $mapping[$txAction];
     if (!is_array($mappingOrderState) or !array_key_exists('status', $mappingOrderState) or !array_key_exists('state', $mappingOrderState)) {
         return;
     }
     // Get State / Status and set to Order
     $newOrderState = $mappingOrderState['state'];
     $newOrderStatus = $mappingOrderState['status'];
     if ($newOrderState != '') {
         $order->setState($newOrderState, $newOrderStatus);
     } else {
         $order->setStatus($newOrderStatus);
     }
 }
 /**
  * Order state setter.
  * If status is specified, will add order status history with specified comment
  * the setData() cannot be overriden because of compatibility issues with resource model
  *
  * @param string $state
  * @param string|bool $status
  * @param string $comment
  * @param bool $isCustomerNotified
  * @return Mage_Sales_Model_Order
  */
 public function setState($state, $status = false, $comment = '', $isCustomerNotified = null, $shouldProtectState = true)
 {
     if ((int) Mage::helper('extensions')->getMagentoVersion() < 140) {
         return parent::setState($state, $status, $comment, $isCustomerNotified);
     }
     return $this->_setState($state, $status, $comment, $isCustomerNotified, $shouldProtectState);
 }
 /**
  * Set the order state and status to "new" and "unsubmitted" to start.
  *
  * @return self
  */
 protected function _prepareOrder()
 {
     $state = self::STATE_NEW;
     $status = self::STATUS_NEW;
     $this->_order->setState($state, $status);
     return $this;
 }
 /**
  * Cancel the order if is in the current Magento store, otherwise, simply
  * set the state of the order to a state of canceled.
  *
  * @return self
  */
 protected function _cancelOrder()
 {
     if ($this->_order->getId()) {
         // Only save order that's in this magento store
         $this->_order->cancel()->save();
     } else {
         // The order is not in this magento store, simply set state of this empty order to cancel
         $this->_order->setState(Mage_Sales_Model_Order::STATE_CANCELED);
     }
     return $this;
 }
 /**
  * Processes payment confirmation, creates invoice if necessary, updates order status,
  * sends order confirmation to customer
  *
  * @param string $status
  * @param string $msg Order history message
  */
 protected function _processSale($status, $msg)
 {
     switch ($status) {
         case self::MONEYBOOKERS_STATUS_SUCCESS:
             $this->_createInvoice();
             $this->_order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, $msg);
             // save transaction ID
             $this->_order->getPayment()->setLastTransId($this->getEventData('mb_transaction_id'));
             // send new order email
             $this->_order->queueNewOrderEmail();
             $this->_order->setEmailSent(true);
             break;
         case self::MONEYBOOKERS_STATUS_PENDING:
             $this->_order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, $msg);
             // save transaction ID
             $this->_order->getPayment()->setLastTransId($this->getEventData('mb_transaction_id'));
             break;
     }
     $this->_order->save();
 }
 private function _getPostResponseActionUrl(Mage_Sales_Model_Order $order)
 {
     $token = $_GET['token'];
     $server = Mage::getSingleton('customer/session')->getServerMode();
     $url = getStatusUrl($server, $token);
     $resultJson = checkStatusPayment($url);
     $theResult = $resultJson['transaction']['processing']['result'];
     $returnCode = $resultJson['transaction']['processing']['return']['code'];
     $returnMessage = $resultJson['transaction']['processing']['return']['message'];
     $currency = $resultJson['transaction']['payment']['clearing']['currency'];
     $payment_type = substr($resultJson['transaction']['payment']['code'], -2);
     $refId = $resultJson['transaction']['identification']['uniqueId'];
     $pageName = '';
     $params = array();
     if ($theResult == 'ACK') {
         $order->getPayment()->setAdditionalInformation('IDENTIFICATION_REFERENCEID', $refId);
         $order->getPayment()->setAdditionalInformation('CURRENCY', $currency);
         $order->getPayment()->setAdditionalInformation('hyperpay_transaction_code', $payment_type);
         $order->save();
         $order->sendNewOrderEmail();
         if ($payment_type == 'PA') {
             $order->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();
         } else {
             Mage::helper('hyperpay')->invoice($order);
         }
         Mage::getModel('sales/quote')->load($order->getQuoteId())->setIsActive(false)->save();
         $pageName = 'checkout/onepage/success/';
     } else {
         Mage::getSingleton('core/session')->setPiHyperpayPaymentError($returnCode);
         $returnMessage .= " ( transaction id : " . $order->getIncrementId() . " )";
         $order->cancel()->save();
         $pageName = 'hyperpay/response/addErrorAndRedirect/';
         //            if (trim($this->getRequest()->getPost('FRONTEND_REQUEST_CANCELLED')) == 'false' && $this->getRequest()->getPost('PROCESSING_RETURN') != 'Cancelled by user') {
         $params = array('message' => $returnMessage);
         //            }
     }
     $params['_secure'] = true;
     //return Mage::getUrl($pageName, $params);
     $this->_redirect($pageName, $params);
 }
 protected function _processConfirmState($state, $data)
 {
     switch ($state) {
         case 'SUCCESS':
         case 'PENDING':
             $this->_confirmOrder($data);
             break;
         case 'CANCEL':
             $this->_cancelOrder();
             break;
         case 'FAILURE':
             $msg = !empty($data['message']) ? $data['message'] : '';
             if (!$this->_succeeded($this->order)) {
                 $this->order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, Mage::helper('wirecard_checkout_page')->__('An error occured during the payment process:') . ' ' . $msg)->save();
                 $this->order->cancel();
                 $payment = $this->order->getPayment();
                 $payment->setAdditionalInformation('consumerMessage', $data['consumerMessage']);
             }
             break;
         default:
             throw new Exception('Unhandled Wirecard Checkout Page action "' . $data['paymentState'] . '".');
     }
 }
 /**
  * Update payment status to error
  *
  * @param $payment
  */
 public function updatePaymentStatusError($payment)
 {
     $payment->setTransactionId($this->_transactionId);
     $payment->setPreparedMessage("PayU - " . Mage::helper('payu_account')->__('The transaction is incorrect.'))->setParentTransactionId($this->_transactionId);
     $this->_order->setState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, "PayU - " . Mage::helper('payu_account')->__('The transaction is incorrect.'))->sendOrderUpdateEmail(true, "PayU - " . Mage::helper('payu_account')->__('The transaction is incorrect.'))->save();
 }
 /**
  * Complete Magento order processing
  *
  * @param   MageOrde        $order          Order
  */
 protected function completeOrder(MageOrder $order)
 {
     $order->setState(MageOrder::STATE_PROCESSING, true)->sendOrderUpdateEmail()->setIsNotified(true)->save();
 }
 /**
  * Process Configured Payment Actions: Authorized, Default operation
  * just place order
  *
  * @param Mage_Sales_Model_Order $order  Order
  * @param array                  $params Request params
  */
 protected function _processAuthorize($order, $params)
 {
     $status = $params['STATUS'];
     if ($status == PostFinance_Payment_Model_Payment_Abstract::POSTFINANCE_AWAIT_CUSTOMER_PAYMENT) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('postfinance')->__('Waiting for payment. PostFinance status: %s.', Mage::helper('postfinance')->getStatusText($status)));
     } elseif ($status == PostFinance_Payment_Model_Payment_Abstract::POSTFINANCE_AUTHORIZED_WAITING) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('postfinance')->__('Authorization uncertain. PostFinance status: %s.', Mage::helper('postfinance')->getStatusText($status)));
     } else {
         if ($this->isRedirectPaymentMethod($order) === true && $order->getEmailSent() !== '1') {
             $order->sendNewOrderEmail();
         }
         $payId = $params['PAYID'];
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PROCESSING, Mage::helper('postfinance')->__('Processed by PostFinance. Payment ID: %s. PostFinance status: %s.', $payId, Mage::helper('postfinance')->getStatusText($status)));
     }
     $order->save();
 }
Exemple #12
0
 /**
  * Depends on Shopgate paymentInfos() to be passed
  * into the TransactionAdditionalInfo of $order.
  *
  * @param $paymentStatus String
  * @param $order         Mage_Sales_Model_Order
  * @return Mage_Sales_Model_Order
  */
 public function orderStatusManager(Mage_Sales_Model_Order $order, $paymentStatus = null)
 {
     if (!$paymentStatus) {
         $rawData = $order->getPayment()->getTransactionAdditionalInfo(self::RAW_DETAILS);
         $paymentStatus = strtolower($rawData['payment_status']);
     }
     $formattedPrice = $order->getBaseCurrency()->formatTxt($order->getGrandTotal());
     $state = $status = Mage_Sales_Model_Order::STATE_PROCESSING;
     $action = $this->getActionByStatus($paymentStatus);
     if ($order->getPayment()->getIsTransactionPending()) {
         $message = Mage::helper('paypal')->__('%sing amount of %s is pending approval on gateway.', $action, $formattedPrice);
         $state = $status = Mage::helper('shopgate')->getStateForStatus(self::STATE_PAYMENT_REVIEW);
     } else {
         $message = Mage::helper('paypal')->__('%sed amount of %s online.', $action, $formattedPrice);
     }
     //test for fraud
     if ($order->getPayment()->getIsFraudDetected()) {
         $state = Mage::helper('shopgate')->getStateForStatus(self::STATE_PAYMENT_REVIEW);
         $status = Mage::helper('shopgate')->getStatusFromState($state);
     }
     return $order->setState($state, $status, $message);
 }
 /**
  * Poll Amazon API to receive order status and update Magento order.
  */
 public function syncOrderStatus(Mage_Sales_Model_Order $order, $isManualSync = false)
 {
     $_api = $this->_getApi($order->getStoreId());
     $message = '';
     try {
         $amazonOrderReference = $order->getPayment()->getAdditionalInformation('order_reference');
         $orderReferenceDetails = $_api->getOrderReferenceDetails($amazonOrderReference);
         if ($orderReferenceDetails) {
             // Retrieve Amazon Authorization Details
             // Last transaction ID is Amazon Authorize Reference ID
             $lastAmazonReference = $order->getPayment()->getLastTransId();
             $resultAuthorize = $this->_getApi($order->getStoreId())->getAuthorizationDetails($lastAmazonReference);
             $amazonAuthorizationState = $resultAuthorize->getAuthorizationStatus()->getState();
             $reasonCode = $resultAuthorize->getAuthorizationStatus()->getReasonCode();
             // Re-authorize if holded, an Open order reference, and manual sync
             if ($order->getState() == Mage_Sales_Model_Order::STATE_HOLDED && $orderReferenceDetails->getOrderReferenceStatus()->getState() == 'Open' && $isManualSync) {
                 $payment = $order->getPayment();
                 $amount = $payment->getAmountOrdered();
                 $method = $payment->getMethodInstance();
                 // Re-authorize
                 $payment->setTransactionId($amazonOrderReference);
                 $payment->setAdditionalInformation('sandbox', null);
                 // Remove decline and other test simulations
                 $method->setForceSync(true);
                 switch ($method->getConfigData('payment_action')) {
                     case $method::ACTION_AUTHORIZE:
                         $resultAuthorize = $method->authorize($payment, $amount, false);
                         break;
                     case $method::ACTION_AUTHORIZE_CAPTURE:
                         $resultAuthorize = $method->authorize($payment, $amount, true);
                         break;
                     default:
                         break;
                 }
                 // Resync
                 $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true);
                 $order->save();
                 $this->syncOrderStatus($order);
                 return;
             }
             $message = Mage::helper('payment')->__('Sync with Amazon: Authorization state is %s.', $amazonAuthorizationState);
             switch ($amazonAuthorizationState) {
                 // Pending (All Authorization objects are in the Pending state for 30 seconds after Authorize request)
                 case Amazon_Payments_Model_Api::AUTH_STATUS_PENDING:
                     $message .= ' (Payment is currently authorizing. Please try again momentarily.)';
                     break;
                     // Declined
                 // Declined
                 case Amazon_Payments_Model_Api::AUTH_STATUS_DECLINED:
                     if ($order->getState() != Mage_Sales_Model_Order::STATE_HOLDED) {
                         $order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true);
                     }
                     if ($reasonCode == 'InvalidPaymentMethod') {
                         $this->_sendPaymentDeclineEmail($order, 'soft');
                         $message .= " Order placed on hold due to {$reasonCode}. Email sent to customer with link to order details page and instructions to update their payment method.";
                     } else {
                         $this->_sendPaymentDeclineEmail($order, 'hard');
                         $message .= " Order placed on hold due to {$reasonCode}. Email sent to customer with instructions to contact seller.";
                     }
                     break;
                     // Open (Authorize Only)
                 // Open (Authorize Only)
                 case Amazon_Payments_Model_Api::AUTH_STATUS_OPEN:
                     $order->setState(Mage_Sales_Model_Order::STATE_NEW);
                     $order->setStatus($_api->getConfig()->getNewOrderStatus($order->getStoreId()));
                     break;
                     // Closed (Authorize and Capture)
                 // Closed (Authorize and Capture)
                 case Amazon_Payments_Model_Api::AUTH_STATUS_CLOSED:
                     // Payment captured; create invoice
                     if ($reasonCode == 'MaxCapturesProcessed') {
                         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING);
                         $order->setStatus($_api->getConfig()->getNewOrderStatus($order->getStoreId()));
                         if ($this->_createInvoice($order, $resultAuthorize->getIdList()->getmember())) {
                             $message .= ' ' . Mage::helper('payment')->__('Invoice created.');
                         }
                     } else {
                         $order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true);
                         $message .= ' Unable to create invoice due to Authorization Reason Code: ' . $reasonCode;
                     }
                     break;
             }
             // Update order
             if ($amazonAuthorizationState != Amazon_Payments_Model_Api::AUTH_STATUS_PENDING) {
                 $order->addStatusToHistory($order->getStatus(), $message, false);
                 $order->save();
             }
             Mage::getSingleton('adminhtml/session')->addSuccess($message);
         }
     } catch (Exception $e) {
         // Change order to "On Hold"
         if ($order->getState() != Mage_Sales_Model_Order::STATE_HOLDED) {
             $message = 'Error exception during sync. Please check exception.log';
             $order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true);
             $order->addStatusToHistory($order->getStatus(), $message, false);
             $order->save();
         }
         Mage::logException($e);
         Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
     }
 }
 /**
  * unconfirmed transaction
  * 
  * @param SofortLib_TransactionData $transData
  * @param Mage_Sales_Model_Order $order
  * @param boolean $forceUpdate = false to gerate update
  * @return void
  */
 private function _transactionUnconfirmed($transData, $order, $forceUpdate = false)
 {
     $payment = $order->getPayment();
     $transaction = $transData->getTransaction();
     $statusReason = $transData->getStatusReason();
     // rechnung
     if ($transData->isSofortrechnung() && ($statusReason == 'confirm_invoice' || $forceUpdate)) {
         $order->setState('sofort');
         //customer may have changed the address during payment process
         $address = $transData->getInvoiceAddress();
         $order->getBillingAddress()->setStreet($address['street'] . ' ' . $address['street_number'])->setFirstname($address['firstname'])->setLastname($address['lastname'])->setCompany($address['company'])->setPostcode($address['zipcode'])->setCity($address['city'])->setCountryId($address['country_code']);
         $address = $transData->getShippingAddress();
         $order->getShippingAddress()->setStreet($address['street'] . ' ' . $address['street_number'])->setFirstname($address['firstname'])->setLastname($address['lastname'])->setCompany($address['company'])->setPostcode($address['zipcode'])->setCity($address['city'])->setCountryId($address['country_code']);
         $order->save();
         $waitingStatus = Mage::getStoreConfig('payment/sofort/sofortrechnung_order_status_waiting');
         if ($waitingStatus == 'unchanged') {
             $order->addStatusHistoryComment(Mage::helper('pnsofortueberweisung')->__('Payment successfull. Invoice needs to be confirmed.', $transaction))->setIsCustomerNotified(true);
         } else {
             $order->addStatusHistoryComment(Mage::helper('pnsofortueberweisung')->__('Payment successfull. Invoice needs to be confirmed.', $transaction), $waitingStatus)->setIsCustomerNotified(true);
         }
         $order->setIsVisibleOnFront(true);
         if (!$order->getEmailSent()) {
             $order->setEmailSent(true);
             $order->save();
             $order->sendNewOrderEmail();
         }
     } else {
         // mark for notify
         $order->setState('sofort');
     }
     $order->save();
 }
 /**
  * Set an order status based on transaction status
  *
  * @param Mage_Sales_Model_Order $order
  * @param string $status
  * @param string $message
  */
 public function setOrderState($order, $status, $message = '')
 {
     $this->initLibrary();
     switch ($status) {
         case \Genesis\API\Constants\Transaction\States::APPROVED:
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PROCESSING, $message, false)->save();
             break;
         case \Genesis\API\Constants\Transaction\States::PENDING:
         case \Genesis\API\Constants\Transaction\States::PENDING_ASYNC:
             $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, $message, false)->save();
             break;
         case \Genesis\API\Constants\Transaction\States::ERROR:
         case \Genesis\API\Constants\Transaction\States::DECLINED:
             /** @var Mage_Sales_Model_Order_Invoice $invoice */
             foreach ($order->getInvoiceCollection() as $invoice) {
                 $invoice->cancel();
             }
             $order->registerCancellation($message)->setCustomerNoteNotify(true)->save();
             break;
         default:
             $order->save();
             break;
     }
 }
    public function redirectAction()
    {
        //Obtenemos los valores de la configuración del módulo
        $entorno = Mage::getStoreConfig('payment/redsys/entorno', Mage::app()->getStore());
        $nombre = Mage::getStoreConfig('payment/redsys/nombre', Mage::app()->getStore());
        $codigo = Mage::getStoreConfig('payment/redsys/num', Mage::app()->getStore());
        $clave256 = Mage::getStoreConfig('payment/redsys/clave256', Mage::app()->getStore());
        $terminal = Mage::getStoreConfig('payment/redsys/terminal', Mage::app()->getStore());
        $moneda = Mage::getStoreConfig('payment/redsys/moneda', Mage::app()->getStore());
        $trans = Mage::getStoreConfig('payment/redsys/trans', Mage::app()->getStore());
        $notif = Mage::getStoreConfig('payment/redsys/notif', Mage::app()->getStore());
        $ssl = Mage::getStoreConfig('payment/redsys/ssl', Mage::app()->getStore());
        $error = Mage::getStoreConfig('payment/redsys/error', Mage::app()->getStore());
        $idiomas = Mage::getStoreConfig('payment/redsys/idiomas', Mage::app()->getStore());
        $tipopago = Mage::getStoreConfig('payment/redsys/tipopago', Mage::app()->getStore());
        $correo = Mage::getStoreConfig('payment/redsys/correo', Mage::app()->getStore());
        $mensaje = Mage::getStoreConfig('payment/redsys/mensaje', Mage::app()->getStore());
        //Obtenemos datos del pedido
        $_order = new Mage_Sales_Model_Order();
        $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
        $_order->loadByIncrementId($orderId);
        //Actualizamos estado del pedido a "pendiente"
        $state = 'new';
        $status = 'pending';
        $comment = 'Redsys ha actualizado el estado del pedido con el valor "' . $status . '"';
        $isCustomerNotified = true;
        $_order->setState($state, $status, $comment, $isCustomerNotified);
        $_order->save();
        //Datos del cliente
        $customer = Mage::getSingleton('customer/session')->getCustomer();
        //Datos de los productos del pedido
        $productos = '';
        $items = $_order->getAllVisibleItems();
        foreach ($items as $itemId => $item) {
            $productos .= $item->getName();
            $productos .= "X" . $item->getQtyToInvoice();
            $productos .= "/";
        }
        //Formateamos el precio total del pedido
        $transaction_amount = number_format($_order->getBaseGrandTotal(), 2, '', '');
        //Establecemos los valores del cliente y el pedido
        if (isset($_SESSION["P" . $orderId])) {
            $sec_pedido = $_SESSION["P" . $orderId];
        } else {
            $sec_pedido = -1;
        }
        if ($sec_pedido < 9) {
            $_SESSION["P" . $orderId] = ++$sec_pedido;
        }
        $numpedido = str_pad($orderId . $sec_pedido, 12, "0", STR_PAD_LEFT);
        $cantidad = (double) $transaction_amount;
        $titular = $customer->getFirstname() . " " . $customer->getMastname() . " " . $customer->getLastname() . "/ Correo:" . $customer->getEmail();
        //Generamos el urlTienda -> respuesta ON-LINE que deberá ser la establecida bajo las pautas de WooCommerce
        if ($ssl == "0") {
            $urltienda = Mage::getBaseUrl() . 'redsys/index/notify';
        } else {
            $urltienda = Mage::getBaseUrl() . 'redsys/index/notify';
        }
        // Obtenemos el valor de la config del idioma
        if ($idiomas == "0") {
            $idioma_tpv = "0";
        } else {
            $idioma_web = substr(Mage::getStoreConfig('general/locale/code', Mage::app()->getStore()->getId()), 0, 2);
            switch ($idioma_web) {
                case 'es':
                    $idioma_tpv = '001';
                    break;
                case 'en':
                    $idioma_tpv = '002';
                    break;
                case 'ca':
                    $idioma_tpv = '003';
                    break;
                case 'fr':
                    $idioma_tpv = '004';
                    break;
                case 'de':
                    $idioma_tpv = '005';
                    break;
                case 'nl':
                    $idioma_tpv = '006';
                    break;
                case 'it':
                    $idioma_tpv = '007';
                    break;
                case 'sv':
                    $idioma_tpv = '008';
                    break;
                case 'pt':
                    $idioma_tpv = '009';
                    break;
                case 'pl':
                    $idioma_tpv = '011';
                    break;
                case 'gl':
                    $idioma_tpv = '012';
                    break;
                case 'eu':
                    $idioma_tpv = '013';
                    break;
                default:
                    $idioma_tpv = '002';
            }
        }
        // Obtenemos el código ISO del tipo de moneda
        if ($moneda == "0") {
            $moneda = "978";
        } else {
            $moneda = "840";
        }
        // Obtenemos los tipos de pago permitidos
        if ($tipopago == "0") {
            $tipopago = " ";
        } else {
            if ($tipopago == "1") {
                $tipopago = "C";
            } else {
                $tipopago = "T";
            }
        }
        $miObj = new RedsysAPI();
        $miObj->setParameter("DS_MERCHANT_AMOUNT", $cantidad);
        $miObj->setParameter("DS_MERCHANT_ORDER", strval($numpedido));
        $miObj->setParameter("DS_MERCHANT_MERCHANTCODE", $codigo);
        $miObj->setParameter("DS_MERCHANT_CURRENCY", $moneda);
        $miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE", $trans);
        $miObj->setParameter("DS_MERCHANT_TERMINAL", $terminal);
        $miObj->setParameter("DS_MERCHANT_MERCHANTURL", $urltienda);
        $miObj->setParameter("DS_MERCHANT_URLOK", $urltienda);
        $miObj->setParameter("DS_MERCHANT_URLKO", $urltienda);
        $miObj->setParameter("Ds_Merchant_ConsumerLanguage", $idioma_tpv);
        $miObj->setParameter("Ds_Merchant_ProductDescription", $productos);
        $miObj->setParameter("Ds_Merchant_Titular", $nombre);
        $miObj->setParameter("Ds_Merchant_MerchantData", sha1($urltienda));
        $miObj->setParameter("Ds_Merchant_MerchantName", $nombre);
        $miObj->setParameter("Ds_Merchant_PayMethods", $tipopago);
        $miObj->setParameter("Ds_Merchant_Module", "magento_redsys_2.8.4");
        //Datos de configuración
        $version = getVersionClave();
        //Clave del comercio que se extrae de la configuración del comercio
        // Se generan los parámetros de la petición
        $request = "";
        $paramsBase64 = $miObj->createMerchantParameters();
        $signatureMac = $miObj->createMerchantSignature($clave256);
        // Obtenemos el valor de la consulta para saber el entorno del TPV.
        if ($entorno == "1") {
            echo '<form action="http://sis-d.redsys.es/sis/realizarPago/utf-8" method="post" id="redsys_form" name="redsys_form">';
        } else {
            if ($entorno == "2") {
                echo '<form action="https://sis-i.redsys.es:25443/sis/realizarPago/utf-8" method="post" id="redsys_form" name="redsys_form">';
            } else {
                if ($entorno == "3") {
                    echo '<form action="https://sis-t.redsys.es:25443/sis/realizarPago/utf-8" method="post" id="redsys_form" name="redsys_form">';
                } else {
                    echo '<form action="https://sis.redsys.es/sis/realizarPago/utf-8" method="post" id="redsys_form" name="redsys_form">';
                }
            }
        }
        // Establecemos el valor de los input
        echo '
				<input type="hidden" name="Ds_SignatureVersion" value="' . $version . '" />
				<input type="hidden" name="Ds_MerchantParameters" value="' . $paramsBase64 . '" />
				<input type="hidden" name="Ds_Signature" value="' . $signatureMac . '" />
				</form>
			
				<h3> Cargando el TPV... Espere por favor. </h3>		
				
				<script type="text/javascript">
					document.redsys_form.submit();
				</script>';
    }
 private function __updateStatusOrder(Mage_Sales_Model_Order $order)
 {
     $order->setState('Processing');
     $order->setStatus(Eway_Rapid31_Model_Config::ORDER_STATUS_AUTHORISED);
     $order->save();
 }
 /**
  * @param Mage_Sales_Model_Order $order
  *
  * @return bool
  */
 public function createInvoice($order)
 {
     if (!$order->getId()) {
         return false;
     }
     $this->log(sprintf('Gerando fatura para o pedido: %s.', $order->getId()));
     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'O pagamento foi confirmado e o pedido está sendo processado.', true);
     if (!$order->canInvoice()) {
         $this->log(sprintf('Impossível gerar fatura para o pedido %s.', $order->getId()), 4);
         // TODO define how to handle this
         return false;
     }
     $invoice = $order->prepareInvoice();
     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
     $invoice->register();
     Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
     $invoice->sendEmail(true);
     $this->log('Fatura gerada com sucesso.');
     return true;
 }
 public function responseAction()
 {
     require_once 'Zend/Crypt/Hmac.php';
     $txnid = "";
     $txnrefno = "";
     $txnstatus = "";
     $txnmsg = "";
     $firstName = "";
     $lastName = "";
     $email = "";
     $street1 = "";
     $city = "";
     $state = "";
     $country = "";
     $pincode = "";
     $mobileNo = "";
     $signature = "";
     $reqsignature = "";
     $data = "";
     $txnGateway = "";
     $paymentMode = "";
     $maskedCardNumber = "";
     $cardType = "";
     $flag = "dataTampered";
     $order = $this->getOrder();
     $orderAmount = round($order->getData('grand_total'), 2);
     $config = Mage::getSingleton('citrus/config');
     $secretKey = $config->getSecretKey();
     $session = Mage::getSingleton('checkout/session');
     if ($_POST) {
         if (isset($_POST['TxId'])) {
             $txnid = $_POST['TxId'];
             $data .= $txnid;
         }
         if (isset($_POST['TxStatus'])) {
             $txnstatus = $_POST['TxStatus'];
             $data .= $txnstatus;
         }
         if (isset($_POST['amount'])) {
             $amount = $_POST['amount'];
             $data .= $amount;
         }
         if (isset($_POST['pgTxnNo'])) {
             $pgtxnno = $_POST['pgTxnNo'];
             $data .= $pgtxnno;
         }
         if (isset($_POST['issuerRefNo'])) {
             $issuerrefno = $_POST['issuerRefNo'];
             $data .= $issuerrefno;
         }
         if (isset($_POST['authIdCode'])) {
             $authidcode = $_POST['authIdCode'];
             $data .= $authidcode;
         }
         if (isset($_POST['firstName'])) {
             $firstName = $_POST['firstName'];
             $data .= $firstName;
         }
         if (isset($_POST['lastName'])) {
             $lastName = $_POST['lastName'];
             $data .= $lastName;
         }
         if (isset($_POST['pgRespCode'])) {
             $pgrespcode = $_POST['pgRespCode'];
             $data .= $pgrespcode;
         }
         if (isset($_POST['addressZip'])) {
             $pincode = $_POST['addressZip'];
             $data .= $pincode;
         }
         if (isset($_POST['signature'])) {
             $signature = $_POST['signature'];
         }
         /*signature data end*/
         $respSignature = $this->generateHmacKey($data, $secretKey);
         if ($signature != "" && strcmp($signature, $respSignature) != 0 || $orderAmount != $amount) {
             $flag = "dataTampered";
         } else {
             $flag = "dataValid";
         }
         if (strtoupper($txnstatus) != "SUCCESS") {
             $flag = "dataTampered";
         } else {
             $flag = "dataValid";
         }
     }
     $debug = Mage::getModel('citrus/api_debug')->load($TxnID, "transact_id");
     $debug->setResponseBody($data);
     $debug->save();
     if ($flag == "dataValid") {
         $_order = new Mage_Sales_Model_Order();
         $orderId = $session->getLastRealOrderId();
         $_order->loadByIncrementId($orderId);
         $_order->sendNewOrderEmail();
         try {
             $payment = $_order->getPayment();
             $payment->setTransactionId($TxnID)->capture(null);
             $_order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
             $_order->setStatus('created');
             $_order->addStatusToHistory($_order->getStatus(), Mage::helper('citrus')->__('Customer successfully returned from citrus'));
             $_order->save();
         } catch (Exception $e) {
             Mage::logException($e);
             //if we couldn't capture order, just leave it as NEW order.
         }
         $session->getQuote()->setIsActive(false)->save();
         $this->_redirect('checkout/onepage/successcitrus', array('_secure' => true));
     } else {
         if (strtoupper($txnstatus) == "CANCELED") {
             $cartURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . "checkout/cart/";
             echo "<script language='javascript' type='text/javascript'>setTimeout('window.self.location=\\'" . $cartURL . "\\''); </script>";
             exit;
         } else {
             $this->_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     }
 }
Exemple #20
0
 /**
  * Process Configured Payment Actions: Authorized, Default operation
  * just place order
  *
  * @param Mage_Sales_Model_Order $order Order
  * @param array $params Request params
  */
 protected function _processAuthorize($order, $params)
 {
     $status = $params['STATUS'];
     if ($status == Netresearch_OPS_Model_Payment_Abstract::OPS_AWAIT_CUSTOMER_PAYMENT) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('ops')->__('Waiting for payment. Barclaycard status: %s.', Mage::helper('ops')->getStatusText($status)));
         // send new order mail for bank transfer, since it is 'successfully' authorized at this point
         if ($order->getPayment()->getMethodInstance() instanceof Netresearch_OPS_Model_Payment_BankTransfer && $order->getEmailSent() != 1) {
             $order->sendNewOrderEmail();
         }
     } elseif ($status == Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZED_WAITING) {
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('ops')->__('Authorization uncertain. Barclaycard status: %s.', Mage::helper('ops')->getStatusText($status)));
     } else {
         // for 3DS payments the order has to be retrieved from the payment review step
         if ($this->isInlinePayment($order->getPayment()) && 0 < strlen(trim($order->getPayment()->getAdditionalInformation('HTML_ANSWER'))) && $order->getPayment()->getAdditionalInformation('status') == Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZED) {
             $order->getPayment()->setIsTransactionApproved(true)->registerPaymentReviewAction(Mage_Sales_Model_Order_Payment::REVIEW_ACTION_UPDATE, true)->save();
         }
         if ($this->isRedirectPaymentMethod($order) === true && $order->getEmailSent() != 1) {
             $order->sendNewOrderEmail();
         }
         $payId = $params['PAYID'];
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PROCESSING, Mage::helper('ops')->__('Processed by Barclaycard. Payment ID: %s. Barclaycard status: %s.', $payId, Mage::helper('ops')->getStatusText($status)));
     }
     $order->save();
 }
 private function __updateStatusOrder(Mage_Sales_Model_Order $order)
 {
     $state_config = Mage::getStoreConfig('payment/ewayrapid_general/verify_eway_order');
     $order->setState($state_config);
     $order->setStatus($state_config);
     $order->save();
 }
Exemple #22
0
 /**
  * @param Mage_Sales_Model_Order|null $magentoOrder
  *
  * @return Mage_Sales_Model_Order
  */
 public function setOrderStatus($magentoOrder)
 {
     $status = Mage::getModel('authnetcim/method')->getConfigData('order_status');
     if ($status) {
         $state = $this->_getHelper()->getStateForStatus($status);
         $magentoOrder->setShopgateStatusSet(true);
         return $magentoOrder->setState($state, $status);
     } else {
         return parent::setOrderStatus($magentoOrder);
     }
 }
 public function urlerrorAction()
 {
     Mage::log("init: " . __METHOD__);
     // este m�to es al que me dva a devolder el gateway en caso que algo salga mal
     $order_id = $this->getRequest()->get('Order');
     Mage::log(__METHOD__ . " Modulo de pago - TodoPago ==> urlerror - orderid: " . $order_id);
     $answer = $this->getRequest()->get('Answer');
     Mage::log(__METHOD__ . " Modulo de pago - TodoPago ==> urlerror - AnswerKey: " . $answer);
     $order = new Mage_Sales_Model_Order();
     $order->loadByIncrementId($order_id);
     $status = Mage::getStoreConfig('payment/modulodepago2/estado_denegada');
     if (empty($status)) {
         $status = Mage::getStoreConfig('payment/todopago_avanzada/estado_denegada');
     }
     $state = $this->_get_new_order_state($status);
     if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") {
         $message = "Todo Pago (TEST): error en el pago del formulario";
     } else {
         $message = "OPERATIONID: {$order_id} - Todo Pago: error en el pago del formulario";
     }
     $order->cancel();
     Mage::log("Orden cancelada");
     $order->setState($state, $status, $message);
     $order->save();
     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
 }