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(); }
/** * 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)); } } }
/** * 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(); }
/** * @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)); }