Example #1
0
 /**
  * Instantiate state and set it to state object
  * 
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  */
 public function initialize($paymentAction, $stateObject)
 {
     $stateObject->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT);
     $stateObject->setStatus('pending_payment');
     $stateObject->setIsNotified(false);
     $stateObject->save();
 }
 public function order(Varien_Object $payment, $amount)
 {
     $order = $payment->getOrder();
     $order_id = $order->getId();
     $order_increment_id = $order->getIncrementId();
     $store_id = $order->getStoreId();
     $ccType = $payment->getCcType();
     // reorder
     $reorder_increment_id = explode('-', $order_increment_id);
     // reorder
     $order_increment_id = $reorder_increment_id[0];
     $order_suffix_id = @$reorder_increment_id[1];
     $expiration = strtotime('+' . $this->_getStoreConfig($ccType, 'expiration') . 'days');
     $transaction_expiration = date('Y-m-d', $expiration);
     $increment = $this->_getStoreConfig('slips', 'order_id_increment');
     $order_increment_prefix = $this->_getOrderIncrementPrefix($store_id);
     $number = $order_increment_id - $order_increment_prefix;
     if (!empty($order_suffix_id)) {
         $number *= pow(10, strlen($order_suffix_id));
         $number += $order_suffix_id;
     }
     $number += $increment;
     $data = array('order_id' => $order_id, 'amount' => $amount, 'expiration' => $transaction_expiration, 'number' => $number);
     $result = Mage::getModel('utils/sql')->insert('gamuza_slips_transactions', $data);
     if (!$result) {
         Mage::throwException(Mage::helper('slips')->__('Unable to save the Slip and Deposit informations. Please verify your database.'));
     }
     $this->setStore($payment->getOrder()->getStoreId());
     $payment->setAmount($amount);
     $payment->setLastTransId($order_id);
     $payment->setStatus(self::STATUS_APPROVED);
     return $this;
 }
 /**
  * Return response object
  *
  * @return Varien_Object
  */
 protected function _prepareResponseObject()
 {
     $responseObject = new Varien_Object();
     $responseObject->setStatus(false);
     $responseObject->setResponse(null);
     $responseObject->setMessage(null);
     return $responseObject;
 }
Example #4
0
 /**
  * Instantiate state and set it to state object
  *
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  * @SuppressWarnings("unused")
  */
 public function initialize($action, $stateObject)
 {
     if ($status = $this->getConfigData('order_status')) {
         $stateObject->setStatus($status);
         $state = $this->_getAssignedState($status);
         $stateObject->setState($state);
         $stateObject->setIsNotified(true);
     }
     return $this;
 }
 /**
  * set the state and status of order
  * will be executed instead of authorize()
  * 
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  * @return Paymentnetwork_Pnsofortueberweisung_Model_Pnsofort
  */
 public function initialize($paymentAction, $stateObject)
 {
     $holdingStatus = Mage::getStoreConfig('payment/sofort/pnsofort_order_status_holding', $this->getStore());
     if ($holdingStatus == 'unchanged') {
         return $this;
     }
     $stateObject->setState(Mage_Sales_Model_Order::STATE_HOLDED);
     $stateObject->setStatus($holdingStatus);
     $stateObject->setIsNotified(false);
     return $this;
 }
 /**
  * Capture payment method
  *
  * @param Varien_Object $payment
  * @param float $amount
  *
  * @return Iways_PayPalPlus_Model_Payment
  */
 public function authorize(Varien_Object $payment, $amount)
 {
     $paymentId = Mage::app()->getRequest()->getParam('paymentId');
     $payerId = Mage::app()->getRequest()->getParam('PayerID');
     $ppPayment = Mage::getModel('iways_paypalplus/api')->executePayment($paymentId, $payerId);
     Mage::getSingleton('customer/session')->setPayPalPaymentId(null);
     Mage::getSingleton('customer/session')->setPayPalPaymentPatched(null);
     if (!$ppPayment) {
         throw new Exception('Payment could not be executed.');
     }
     $payment->setTransactionId($ppPayment->getId());
     if ($ppPayment->getState() == self::PPP_STATUS_APPROVED) {
         $payment->setStatus(self::STATUS_APPROVED);
     }
     return $this;
 }
 /**
  * Instantiate state and set it to state object
  *
  * @param       string            $paymentAction
  * @param       Varien_Object     $stateObject
  */
 public function initialize($paymentAction, $stateObject)
 {
     $stateObject->setData('payment_action', $paymentAction);
     $stateObject->setState(MageOrder::STATE_PENDING_PAYMENT);
     $stateObject->setStatus('pending_payment');
     $stateObject->setIsNotified(false);
     $stateObject->save();
     if (empty($this->_code)) {
         throw new RuntimeException('Internal model code must be setted');
     }
     if (empty($this->_formBlockType)) {
         throw new RuntimeException('Name for the block with additional payment method information must be setted');
     }
     if (empty($this->_initialApiMethod)) {
         throw new RuntimeException('Initial API method for model payment flow must be setted');
     }
 }
Example #8
0
 protected function _prepareCollection()
 {
     /** @var  $connector Smile_DigitalOceanManager_Model_Connector*/
     $connector = Mage::getModel('digitaloceanmanager/connector');
     $droplets = $connector->getDropletList();
     $collection = new Varien_Data_Collection();
     foreach ($droplets as $droplet) {
         $obj = new Varien_Object();
         $obj->setId($droplet->id);
         $obj->setName($droplet->name);
         $obj->setVcpus($droplet->vcpus);
         $obj->setMemory($droplet->memory);
         $obj->setDisk($droplet->disk);
         $obj->setStatus($droplet->status);
         $obj->setRegion($droplet->region->name);
         $collection->addItem($obj);
     }
     $this->setCollection($collection);
     return parent::_prepareCollection();
 }
Example #9
0
 /**
  * Capture payment
  *
  * @param   Varien_Object $orderPayment
  * @return  Mage_Payment_Model_Abstract
  */
 public function capture(Varien_Object $payment, $amount)
 {
     $payment->setStatus(self::STATUS_APPROVED)->setLastTransId($this->getTransactionId());
     return $this;
 }
Example #10
0
 /**
  * Capture preatutharized amount
  * @param Varien_Object $payment
  * @param <type> $amount
  */
 public function capture(Varien_Object $payment, $amount)
 {
     if (!$this->canCapture()) {
         return $this;
     }
     if (Mage::app()->getRequest()->getParam('transId')) {
         // Capture is called from response action
         $payment->setStatus(self::STATUS_APPROVED);
         return $this;
     }
 }
Example #11
0
 /**
  * Authorize or Capture payment
  *
  * @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
  * @param float $amount
  * @param bool $capture
  * @return  $this
  */
 private function _authorize(Varien_Object $payment, $amount, $capture)
 {
     $order = $payment->getOrder();
     /* @var $order Mage_Sales_Model_Order */
     $multiToken = false;
     $cardData = null;
     $additionalData = new Varien_Object($payment->getAdditionalData() ? unserialize($payment->getAdditionalData()) : null);
     $secureToken = $additionalData->getSecuresubmitToken() ? $additionalData->getSecuresubmitToken() : null;
     $saveCreditCard = !!(bool) $additionalData->getCcSaveFuture();
     $customerId = $additionalData->getCustomerId();
     if ($saveCreditCard) {
         $multiToken = true;
         $cardData = new HpsCreditCard();
         $cardData->number = $payment->getCcLast4();
         $cardData->expYear = $payment->getCcExpYear();
         $cardData->expMonth = $payment->getCcExpMonth();
     }
     $chargeService = $this->_getChargeService();
     $cardHolder = $this->_getCardHolderData($order);
     $details = $this->_getTxnDetailsData($order);
     $cardOrToken = new HpsTokenData();
     $cardOrToken->tokenValue = $secureToken;
     try {
         if ($capture) {
             if ($payment->getCcTransId()) {
                 $response = $chargeService->capture($payment->getCcTransId(), $amount);
             } else {
                 $response = $chargeService->charge($amount, strtolower($order->getBaseCurrencyCode()), $cardOrToken, $cardHolder, $multiToken, $details);
             }
         } else {
             $response = $chargeService->authorize($amount, strtolower($order->getBaseCurrencyCode()), $cardOrToken, $cardHolder, $multiToken, $details);
         }
         $this->_debugChargeService($chargeService);
         $payment->setStatus(self::STATUS_APPROVED);
         $payment->setAmount($amount);
         $payment->setLastTransId($response->transactionId);
         $payment->setCcTransId($response->transactionId);
         $payment->setTransactionId($response->transactionId);
         $payment->setIsTransactionClosed(0);
         if ($multiToken) {
             $tokenData = $response->tokenData;
             /* @var $tokenData HpsTokenData */
             if ($tokenData->responseCode == '0') {
                 if ($customerId > 0) {
                     Mage::helper('hps_securesubmit')->saveMultiToken($response->tokenData->tokenValue, $cardData, $response->cardType, $customerId);
                 } else {
                     Mage::helper('hps_securesubmit')->saveMultiToken($response->tokenData->tokenValue, $cardData, $response->cardType);
                 }
             } else {
                 Mage::log('Requested multi token has not been generated for the transaction # ' . $response->transactionId, Zend_Log::WARN);
             }
         }
     } catch (HpsCreditException $e) {
         Mage::logException($e);
         $this->_debugChargeService($chargeService, $e);
         $payment->setStatus(self::STATUS_DECLINED);
         $this->throwUserError($e->getMessage(), $e->resultText, TRUE);
     } catch (HpsException $e) {
         $this->_debugChargeService($chargeService, $e);
         $payment->setStatus(self::STATUS_ERROR);
         $this->throwUserError($e->getMessage(), NULL, TRUE);
     } catch (Exception $e) {
         $this->_debugChargeService($chargeService, $e);
         Mage::logException($e);
         $payment->setStatus(self::STATUS_ERROR);
         $this->throwUserError($e->getMessage());
     }
     return $this;
 }
Example #12
0
 public function createOrder(Varien_Object $payment, $amount, $authorize)
 {
     $store_id = Mage::app()->getStore()->getStoreId();
     $logger = Mage::helper('worldpay/logger');
     if ($payment->getOrder()) {
         $orderId = $payment->getOrder()->getIncrementId();
         $order = $payment->getOrder();
     } else {
         $quote = $payment->getQuote();
         $orderId = $quote->getReservedOrderId();
         $quote->save();
     }
     $session = Mage::getSingleton('core/session');
     $token = $session->getData('payment_token');
     $savedCard = $session->getData('saved_card');
     $logger->log('Begin create order');
     $session->setData('wp_3dsSuccess', false);
     $session->setData('wp_orderCode', false);
     $worldpay = $this->setupWorldpay();
     $checkout = Mage::getSingleton('checkout/session')->getQuote();
     $billing = $checkout->getBillingAddress();
     $order_description = Mage::getStoreConfig('payment/worldpay/description', $store_id);
     if (!$order_description) {
         $order_description = "Order";
     }
     $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
     $name = $billing->getName();
     $billing_address = array("address1" => $billing->getStreet(1), "address2" => $billing->getStreet(2), "address3" => $billing->getStreet(3), "postalCode" => $billing->getPostcode(), "city" => $billing->getCity(), "state" => "", "countryCode" => $billing->getCountry());
     try {
         $mode = Mage::getStoreConfig('payment/worldpay_mode', Mage::app()->getStore()->getStoreId());
         $settlementCurrency = Mage::getStoreConfig('payment/worldpay/settlementcurrency', Mage::app()->getStore()->getStoreId());
         $createOrderRequest = array('token' => $token, 'orderDescription' => $order_description, 'amount' => $amount * 100, 'currencyCode' => $currency_code, 'name' => $name, 'billingAddress' => $billing_address, 'customerOrderCode' => $orderId, 'settlementCurrency' => $settlementCurrency, 'successUrl' => Mage::getUrl('worldpay/apm/success', array('_secure' => true)), 'pendingUrl' => Mage::getUrl('worldpay/apm/pending', array('_secure' => true)), 'failureUrl' => Mage::getUrl('worldpay/apm/failure', array('_secure' => true)), 'cancelUrl' => Mage::getUrl('worldpay/apm/cancel', array('_secure' => true)));
         $logger->log('Order Request: ' . print_r($createOrderRequest, true));
         $response = $worldpay->createApmOrder($createOrderRequest);
         $logger->log('Order Response: ' . print_r($response, true));
         if ($response['paymentStatus'] === 'SUCCESS') {
             $this->setStore($payment->getOrder()->getStoreId());
             $logger->log('Order: ' . $response['orderCode'] . ' SUCCESS');
             $payment->setStatus(self::STATUS_APPROVED);
             $payment->setAmount($amount);
             $payment->setLastTransId($orderId);
             $payment->setTransactionId($response['orderCode']);
             $payment->setAdditionalInformation("worldpayOrderCode", $response['orderCode']);
             $payment->setShouldCloseParentTransaction(1)->setIsTransactionClosed(1)->registerCaptureNotification($amount);
         } else {
             if ($response['paymentStatus'] == 'PRE_AUTHORIZED') {
                 $logger->log('Order: ' . $response['orderCode'] . ' PRE_AUTHORIZED');
                 $payment->setAmount($amount);
                 $payment->setAdditionalInformation("worldpayOrderCode", $response['orderCode']);
                 $payment->setLastTransId($orderId);
                 $payment->setTransactionId($response['orderCode']);
                 $payment->setIsTransactionClosed(false);
                 $session->setData('wp_redirectURL', $response['redirectURL']);
                 $session->setData('wp_orderCode', $response['orderCode']);
             } else {
                 if (isset($response['paymentStatusReason'])) {
                     throw new Exception($response['paymentStatusReason']);
                 } else {
                     throw new Exception(print_r($response, true));
                 }
             }
         }
     } catch (Exception $e) {
         $payment->setStatus(self::STATUS_ERROR);
         $payment->setAmount($amount);
         $payment->setLastTransId($orderId);
         $logger->log($e->getMessage());
         Mage::throwException('Payment failed, please try again later ' . $e->getMessage());
     }
     return $this;
 }
Example #13
0
 /**
  * Sets status to object but not for self::STATUS_ORDER_IS_CLOSED status
  *
  * @param  $status
  * @return Enterprise_Rma_Model_Item_Status
  */
 public function setStatus($status)
 {
     if (!$this->getSequenceStatus() || !$this->_isSpecialStatus) {
         $this->setSequenceStatus($status);
     }
     return parent::setStatus($status);
 }
 /**
  * Camcel payment
  *
  * @param Varien_Object $payment
  * @return Phoenix_Moneybookers_Model_Abstract
  */
 public function cancel(Varien_Object $payment)
 {
     $payment->setStatus(self::STATUS_DECLINED)->setTransactionId($this->getTransactionId())->setIsTransactionClosed(1);
     return $this;
 }
Example #15
0
 /**
  * this method is called if we are authorising AND capturing a transaction
  */
 public function capture(Varien_Object $payment, $amount)
 {
     //        throw new Exception('who calls me?');
     if (preg_match('/sales_order_create/i', $_SERVER['REQUEST_URI']) && $this->getConfigData('paypage_enable') == '1') {
         $payment->setStatus('N/A')->setCcTransId('Litle VT')->setLastTransId('Litle VT')->setTransactionId('Litle VT')->setIsTransactionClosed(0)->setCcType('Litle VT');
         return;
     }
     $this->isFromVT($payment, 'capture');
     $order = $payment->getOrder();
     if (!empty($order)) {
         $orderId = $order->getIncrementId();
         $orderSource = "ecommerce";
         if ($orderId > 200000000) {
             $orderSource = "recurring";
         }
         $info = $this->getInfoInstance();
         if (!$info->getAdditionalInformation('orderSource')) {
             $info->setAdditionalInformation('orderSource', $orderSource);
         }
         $amountToPass = Mage::helper('creditcard')->formatAmount($amount, true);
         $isPartialCapture = $amount < $order->getGrandTotal() ? 'true' : 'false';
         $isSale = $payment->getCcTransId() != null ? false : true;
         if (!$isSale) {
             $hash = array('litleTxnId' => $payment->getParentTransactionId(), 'amount' => $amountToPass, 'partial' => $isPartialCapture);
         } else {
             $hash_temp = array('orderId' => $orderId, 'id' => $orderId, 'amount' => $amountToPass, 'orderSource' => $info->getAdditionalInformation('orderSource'), 'billToAddress' => $this->getBillToAddress($payment), 'shipToAddress' => $this->getAddressInfo($payment), 'enhancedData' => $this->getEnhancedData($payment));
             $payment_hash = $this->creditCardOrPaypageOrToken($payment, $info);
             $hash = array_merge($hash_temp, $payment_hash);
         }
         $merchantData = $this->merchantData($payment);
         $hash_in = array_merge($hash, $merchantData);
         $litleRequest = new LitleOnlineRequest();
         if ($isSale) {
             $litleResponse = $litleRequest->saleRequest($hash_in);
             Mage::helper('palorus')->saveCustomerInsight($payment, $litleResponse);
         } else {
             $litleResponse = $litleRequest->captureRequest($hash_in);
         }
         if (!is_null($info->getAdditionalInformation('cc_should_save'))) {
             $this->_saveToken($payment, $litleResponse);
         }
     }
     $this->processResponse($payment, $litleResponse);
     return $this;
 }
Example #16
0
 public function createOrder(Varien_Object $payment, $amount, $authorize)
 {
     $store_id = Mage::app()->getStore()->getStoreId();
     if ($payment->getOrder()) {
         $orderId = $payment->getOrder()->getIncrementId();
     } else {
         $orderId = $payment->getQuote()->getIncrementId();
         // $order = $payment->getOrder())
     }
     $logger = Mage::helper('worldpay/logger');
     $session = Mage::getSingleton('core/session');
     $token = $session->getData('payment_token');
     $savedCard = $session->getData('saved_card');
     $logger->log('Begin create order');
     $session->setData('wp_3dsSuccess', false);
     $session->setData('wp_orderCode', false);
     $worldpay = $this->setupWorldpay();
     if (Mage::app()->getStore()->isAdmin()) {
         $checkout = Mage::getSingleton('adminhtml/session_quote')->getQuote();
     } else {
         $checkout = Mage::getSingleton('checkout/session')->getQuote();
     }
     $billing = $checkout->getBillingAddress();
     $order_description = Mage::getStoreConfig('payment/' . $this->_code . '/description', $store_id);
     if (!$order_description) {
         $order_description = "Order";
     }
     $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
     $name = $billing->getName();
     $billing_address = array("address1" => $billing->getStreet(1), "address2" => $billing->getStreet(2), "address3" => $billing->getStreet(3), "postalCode" => $billing->getPostcode(), "city" => $billing->getCity(), "state" => "", "countryCode" => $billing->getCountry());
     try {
         $mode = Mage::getStoreConfig('payment/worldpay_mode', Mage::app()->getStore()->getStoreId());
         $orderType = 'ECOM';
         $threeDS = Mage::getStoreConfig('payment/worldpay_cc/use3ds', Mage::app()->getStore()->getStoreId());
         if (Mage::app()->getStore()->isAdmin()) {
             $orderType = 'MOTO';
             $threeDS = false;
         }
         if ($threeDS && $mode == 'Test Mode') {
             $name = '3D';
         }
         $settlementCurrency = Mage::getStoreConfig('payment/worldpay_cc/settlementcurrency', Mage::app()->getStore()->getStoreId());
         $createOrderRequest = array('token' => $token, 'orderDescription' => $order_description, 'amount' => $amount * 100, 'currencyCode' => $currency_code, 'name' => $name, 'orderType' => $orderType, 'is3DSOrder' => $threeDS, 'authoriseOnly' => $authorize, 'billingAddress' => $billing_address, 'customerOrderCode' => $orderId, 'settlementCurrency' => $settlementCurrency);
         $logger->log('Order Request: ' . print_r($createOrderRequest, true));
         $response = $worldpay->createOrder($createOrderRequest);
         $logger->log('Order Response: ' . print_r($response, true));
         if ($response['paymentStatus'] === 'SUCCESS') {
             $this->setStore($payment->getOrder()->getStoreId());
             $logger->log('Order: ' . $response['orderCode'] . ' SUCCESS');
             $payment->setStatus(self::STATUS_APPROVED);
             $payment->setAmount($amount);
             $payment->setLastTransId($orderId);
             $payment->setTransactionId($response['orderCode']);
             $payment->setAdditionalInformation("worldpayOrderCode", $response['orderCode']);
             // $formatedPrice = $order->getBaseCurrency()->formatTxt($amount);
             $payment->setShouldCloseParentTransaction(1)->setIsTransactionClosed(1)->registerCaptureNotification($amount);
         } else {
             if ($response['paymentStatus'] == 'AUTHORIZED') {
                 $this->setStore($payment->getOrder()->getStoreId());
                 $logger->log('Order: ' . $response['orderCode'] . ' AUTHORIZED');
                 $payment->setIsTransactionClosed(0);
                 $payment->setSkipOrderProcessing(true);
                 $payment->setStatus(self::STATUS_APPROVED);
                 $payment->setAmount($amount);
                 $payment->setAdditionalInformation("worldpayOrderCode", $response['orderCode']);
                 $payment->setLastTransId($orderId);
                 $payment->setTransactionId($response['orderCode']);
             } else {
                 if ($response['is3DSOrder']) {
                     $session = Mage::getSingleton('core/session');
                     $logger->log('Starting 3DS Order: ' . $response['orderCode']);
                     $session->setData('wp_3dsSuccess', false);
                     $session->setData('wp_redirectURL', $response['redirectURL']);
                     $session->setData('wp_oneTime3DsToken', $response['oneTime3DsToken']);
                     $session->setData('wp_orderCode', $response['orderCode']);
                     // IF normal checkout
                     $currentUrl = Mage::helper('core/url')->getCurrentUrl();
                     $url = Mage::getSingleton('core/url')->parseUrl($currentUrl);
                     $path = $url->getPath();
                     if (strpos($path, 'onepage') === false) {
                         Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('worldpay/threeDS'));
                         Mage::app()->getResponse()->sendResponse();
                     } else {
                         echo 'window.WorldpayMagento.loadThreeDS("' . Mage::getUrl('worldpay/threeDS') . '")';
                     }
                     exit;
                 } else {
                     if (isset($response['paymentStatusReason'])) {
                         throw new Exception($response['paymentStatusReason']);
                     } else {
                         throw new Exception(print_r($response, true));
                     }
                 }
             }
         }
     } catch (Exception $e) {
         $payment->setStatus(self::STATUS_ERROR);
         $payment->setAmount($amount);
         $payment->setLastTransId($orderId);
         $logger->log($e->getMessage());
         Mage::throwException('Payment failed, please try again later ' . $e->getMessage());
     }
     return $this;
 }
Example #17
0
 /**
  * Void payment
  *
  * @param   Varien_Object $invoicePayment
  * @return  Mage_Payment_Model_Abstract
  */
 public function void(Varien_Object $payment)
 {
     $error = false;
     // Void is not enabled.
     if (!$this->getConfigData('enable_void')) {
         return $this;
     }
     if (in_array($payment->getAdditionalInformation(self::PAYMENTMETHOD), $this->_directPaymentMethods)) {
         // Do not run financial transactions on directpayment.
         return $this;
     }
     if (!$payment->getAdditionalInformation(self::TRANSACTION_ID)) {
         if (!$payment->getBbsTransactionId()) {
             $this->getApi()->doLog(Mage::helper('bbsnetaxept')->__('Could not find transaction id.'));
             return $this;
         } else {
             $bbsTransId = $payment->getBbsTransactionId();
             // Make it compatible with old fashion BBSNetterminal.
         }
     } else {
         $bbsTransId = $payment->getAdditionalInformation(self::TRANSACTION_ID);
     }
     $order = $payment->getOrder();
     $this->_useMobile = $payment->getAdditionalInformation(self::MOBILE_CLIENT) === true;
     if ($order->getInvoiceCollection()->count() > 0) {
         // Do no try to annul orders that have invoices.
         return $this;
     }
     $InvoiceId = $order->getIncrementId() ? $order->getIncrementId() : 'Unknown';
     if ($this->getApi()->void($bbsTransId, $InvoiceId) == $bbsTransId) {
         $payment->setStatus(self::STATUS_SUCCESS);
     } else {
         $error = Mage::helper('bbsnetaxept')->__('Error void the payment: %s', $this->getApi()->getErrorMessage());
     }
     if ($error !== false) {
         $this->getApi()->doLog($error);
         //    Mage::throwException($error);
     }
     return $this;
 }
Example #18
0
 public function cancel(Varien_Object $payment)
 {
     $payment->setStatus(self::STATUS_DECLINED);
     return $this;
 }
Example #19
0
 /**
  * Capture preatutharized amount
  * @param Varien_Object $payment
  * @param <type> $amount
  */
 public function capture(Varien_Object $payment, $amount)
 {
     if (!$this->canCapture()) {
         return $this;
     }
     if (Mage::app()->getRequest()->getParam('transId')) {
         // Capture is called from response action
         $payment->setStatus(self::STATUS_APPROVED);
         return $this;
     }
     $transactionId = $payment->getLastTransId();
     $params = $this->_prepareAdminRequestParams();
     $params['transId'] = $transactionId;
     $params['authMode'] = '0';
     $params['op'] = 'postAuth-full';
 }
 public function authorize(Varien_Object $payment, $amount)
 {
     $order = $payment->getOrder();
     $order_id = $order->getId();
     $order_increment_id = $order->getIncrementId();
     $quote = $order->getQuote();
     $store_id = $order->getStoreId();
     $ccType = $payment->getCcType();
     $code = $this->_getStoreConfig('code');
     $key = $this->_getStoreConfig('key');
     $obs = $this->_getStoreConfig('obs');
     $obsadd1 = $this->_getStoreConfig('obsadd1');
     $obsadd2 = $this->_getStoreConfig('obsadd2');
     $obsadd3 = $this->_getStoreConfig('obsadd3');
     $tax_vat = $order->getCustomer()->getTaxvat();
     $address = $quote->getBillingAddress();
     $name = $address->getName();
     $street1 = $address->getStreet1();
     $street2 = $address->getStreet2();
     $postcode = $address->getPostcode();
     $city = $address->getCity();
     $region = $address->getRegion();
     $expiration = strtotime('+' . $this->_getStoreConfig('expiration') . 'days');
     $bank_expiration = date('dmY', $expiration);
     $transaction_expiration = date('Y-m-d', $expiration);
     $return_url = $this->_getStoreConfig('return_url');
     $increment = $this->_getStoreConfig('order_id_increment');
     $order_increment_prefix = $this->_getOrderIncrementPrefix($store_id);
     $number = $order_increment_id - $order_increment_prefix + $increment;
     $submit_dc = Mage::getModel('itaushopline/itaucripto')->geraDados($code, $number, str_replace('.', "", number_format($amount, 2, ',', '.')), $obs, $key, $name, '01', $tax_vat, $street1, $street2, $postcode, $city, $region, $bank_expiration, $return_url, $obsadd1, $obsadd2, $obsadd3);
     if (strlen($submit_dc) < self::ITAU_SHOPLINE_SUBMIT_TRANSACTION_LENGTH) {
         Mage::throwException(Mage::helper('itaushopline')->__('Unable to generate submit transaction code. Please check your settings.'));
     }
     $query_dc = Mage::getModel('itaushopline/itaucripto')->geraConsulta($code, $number, '0', $key);
     if (strlen($query_dc) < self::ITAU_SHOPLINE_QUERY_TRANSACTION_LENGTH) {
         Mage::throwException(Mage::helper('itaushopline')->__('Unable to generate query transaction code. Please check your settings.'));
     }
     $data = array('order_id' => $order_id, 'amount' => $amount, 'expiration' => $transaction_expiration, 'number' => $number, 'submit_dc' => $submit_dc, 'query_dc' => $query_dc);
     $result = Mage::getModel('utils/sql')->insert('gamuza_itaushopline_transactions', $data);
     if (!$result) {
         Mage::throwException(Mage::helper('itaushopline')->__('Unable to save the Itau ShopLine informations. Please verify your database.'));
     }
     $this->setStore($payment->getOrder()->getStoreId());
     $payment->setAmount($amount);
     $payment->setLastTransId($order_id);
     $payment->setStatus(self::STATUS_APPROVED);
     return $this;
 }
 public function capture(Varien_Object $payment, $amount)
 {
     $session = Mage::getSingleton('core/session');
     $logger = Mage::helper('worldpay/logger');
     if ($session->getData('wp_3dscompletionNeeded')) {
         $payment->setIsTransactionClosed(0);
         $payment->setSkipOrderProcessing(true);
         $payment->setStatus(self::STATUS_APPROVED);
         $payment->setAmount($amount);
         $payment->setShouldCloseParentTransaction(1);
         $payment->setAdditionalInformation("worldpayOrderCode", $session->getData('wp_orderCode'));
         $payment->setLastTransId($session->getData('wp_orderCode'));
         $payment->setTransactionId($session->getData('wp_orderCode'));
         $session->setData('wp_3dscompletionNeeded', false);
         return $this;
     }
     $worldpayOrderCode = $payment->getData('last_trans_id');
     if ($worldpayOrderCode) {
         $worldpay = $this->setupWorldpay();
         try {
             $authorizationTransaction = $payment->getAuthorizationTransaction();
             if ($authorizationTransaction) {
                 $payment->setAdditionalInformation("worldpayOrderCode", $authorizationTransaction->getTxnId());
                 $worldpayOrderCode = $authorizationTransaction->getTxnId();
             } else {
                 $worldpayOrderCode = $payment->getAdditionalInformation('worldpayOrderCode');
             }
             $worldpay->captureAuthorisedOrder($worldpayOrderCode, $amount * 100);
             $payment->setShouldCloseParentTransaction(1)->setIsTransactionClosed(1);
             $logger->log('Capture Order: ' . $session->getData('wp_orderCode') . ' success');
         } catch (Exception $e) {
             $logger->log('Capture Order: ' . $session->getData('wp_orderCode') . ' failed with ' . $e->getMessage());
             Mage::throwException('Payment failed, please try again later ' . $e->getMessage());
         }
     } else {
         $payment->setAdditionalInformation('payment_type', 'capture');
         return $this->createOrder($payment, $amount, false);
     }
 }
Example #22
0
 /**
  * Instantiate state and set it to state object
  *
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  */
 public function initialize($paymentAction, $stateObject)
 {
     switch ($paymentAction) {
         case Mage_Paypal_Model_Config::PAYMENT_ACTION_AUTH:
         case Mage_Paypal_Model_Config::PAYMENT_ACTION_SALE:
             $payment = $this->getInfoInstance();
             $order = $payment->getOrder();
             $order->setCanSendNewEmailFlag(false);
             $payment->setAmountAuthorized($order->getTotalDue());
             $payment->setBaseAmountAuthorized($order->getBaseTotalDue());
             $this->_setPaymentFormUrl($payment);
             $stateObject->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT);
             $stateObject->setStatus('pending_payment');
             $stateObject->setIsNotified(false);
             break;
         default:
             break;
     }
 }
 /**
  * Processes successful authorize/clone result
  * 
  * @param Varien_Object $payment
  * @param Braintree_Result_Successful $result
  * @param decimal amount
  * @return Varien_Object
  */
 protected function _processSuccessResult($payment, $result, $amount)
 {
     $payment->setStatus(self::STATUS_APPROVED)->setCcTransId($result->transaction->id)->setLastTransId($result->transaction->id)->setTransactionId($result->transaction->id)->setIsTransactionClosed(0)->setCcLast4($result->transaction->creditCardDetails->last4)->setAdditionalInformation($this->_getExtraTransactionInformation($result->transaction, $payment))->setAmount($amount)->setShouldCloseParentTransaction(false);
     $this->_processMethodSpecificTransactionSuccess($payment, $result);
     return $payment;
 }
Example #24
0
 public function placeOrder(Varien_Object $payment)
 {
     $api = $this->getApi();
     $api->setAmount($payment->getOrder()->getGrandTotal())->setTrxtype($this->getPaymentAction())->setCurrencyCode($payment->getOrder()->getOrderCurrencyCode());
     if ($api->callDoExpressCheckoutPayment() !== false) {
         $payment->setStatus('APPROVED')->setCcTransId($api->getTransactionId())->setPayerId($api->getPayerId());
     } else {
         $e = $api->getError();
         Mage::throwException($e['message']);
     }
     return $this;
 }
 /**
  * Submit prompt action
  *
  * @return  string
  */
 public function promptAction()
 {
     $params = $this->getRequest()->getParams();
     $response = new Varien_Object();
     try {
         $key = $params['id'];
         $data = $params['data'];
         if (empty($key) || empty($data)) {
             Mage::throwException('Parameters key and data are required');
         }
         if (!($prompt = $this->_loadPrompt($key))) {
             Mage::throwException('Session time out, try again');
         }
         $request = $this->_getRequestModel()->setRequest($prompt)->dispatch($data);
         $response->setStatus('OK');
         $response->setMessage($request->getMessage());
         $response->setType(MageHack_MageConsole_Model_Abstract::RESPONSE_TYPE_MESSAGE);
     } catch (Exception $e) {
         $response->setStatus('ERROR');
         $response->setType(MageHack_MageConsole_Model_Abstract::RESPONSE_TYPE_ERROR);
         $response->setMessage($e->getMessage());
     }
     $this->getResponse()->setHeader('Content-Type', 'application/json', true)->setBody($response->toJson());
 }
Example #26
0
 /**
  * Capture preatutharized amount
  *
  * @param Varien_Object $payment
  * @param float $amount
  * @return $this
  */
 public function capture(Varien_Object $payment, $amount)
 {
     if (!$this->canCapture()) {
         return $this;
     }
     if (Mage::app()->getRequest()->getParam('transId')) {
         // Capture is called from response action
         $payment->setStatus(self::STATUS_APPROVED);
         return $this;
     }
     $transactionId = $payment->getLastTransId();
     $params = $this->_prepareAdminRequestParams();
     $params['transId'] = $transactionId;
     $params['authMode'] = '0';
     $params['op'] = 'postAuth-full';
     $responseBody = $this->processAdminRequest($params);
     $response = explode(',', $responseBody);
     if (count($response) <= 0 || $response[0] != 'A' || $response[1] != $transactionId) {
         $message = $this->_getHelper()->__('Error during capture online. Server response: %s', $responseBody);
         $this->_debug($message);
         Mage::throwException($message);
     } else {
         $payment->getOrder()->addStatusToHistory($payment->getOrder()->getStatus(), $this->_getHelper()->__('Worldpay transaction has been captured.'));
     }
 }
Example #27
0
 /**
  * refund the amount with transaction id
  *
  * @access public
  * @param string $payment Varien_Object object
  * @return Mage_Payment_Model_Abstract
  */
 public function refund(Varien_Object $payment, $amount)
 {
     $error = false;
     if ($payment->getRefundTransactionId() && $amount > 0) {
         $api = $this->getApi();
         //we can refund the amount full or partial so it is good to set up as partial refund
         $api->setTransactionId($payment->getRefundTransactionId())->setRefundType(Mage_Paypal_Model_Api_Nvp::REFUND_TYPE_PARTIAL)->setAmount($amount);
         if ($api->callRefundTransaction() !== false) {
             $payment->setStatus('SUCCESS')->setCcTransId($api->getTransactionId());
         } else {
             $e = $api->getError();
             $error = $e['short_message'] . ': ' . $e['long_message'];
         }
     } else {
         $error = AO::helper('paypal')->__('Error in refunding the payment');
     }
     if ($error !== false) {
         AO::throwException($error);
     }
     return $this;
 }
Example #28
0
 /**
  * Instantiate state and set it to state object
  *
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  */
 public function initialize($paymentAction, $stateObject)
 {
     switch ($paymentAction) {
         case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE:
         case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE:
             $payment = $this->getInfoInstance();
             $order = $payment->getOrder();
             $order->setCanSendNewEmailFlag(false);
             $payment->setAmountAuthorized($order->getTotalDue());
             $payment->setBaseAmountAuthorized($order->getBaseTotalDue());
             $stateObject->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT);
             $stateObject->setStatus('pending_payment');
             $stateObject->setIsNotified(false);
             break;
         default:
             break;
     }
 }
 /**
  * Instantiate state and set it to state object
  *
  * @param string $paymentAction
  * @param Varien_Object $stateObject
  */
 public function initialize($paymentAction, $stateObject)
 {
     switch ($paymentAction) {
         case Mage_Paypal_Model_Config::PAYMENT_ACTION_AUTH:
         case Mage_Paypal_Model_Config::PAYMENT_ACTION_SALE:
             $payment = $this->getInfoInstance();
             $order = $payment->getOrder();
             $order->setCanSendNewEmailFlag(false);
             $payment->setAmountAuthorized($order->getTotalDue());
             $payment->setBaseAmountAuthorized($order->getBaseTotalDue());
             $this->_generateSecureSilentPostHash($payment);
             $request = $this->_buildTokenRequest($payment);
             $response = $this->_postRequest($request);
             $this->_processTokenErrors($response, $payment);
             $order = $payment->getOrder();
             $order->setCanSendNewEmailFlag(false);
             $stateObject->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT);
             $stateObject->setStatus('pending_payment');
             $stateObject->setIsNotified(false);
             break;
         default:
             break;
     }
 }
 public function directCallBack3D(Varien_Object $payment, $PARes, $MD)
 {
     $error = '';
     $request = $this->_buildRequest3D($PARes, $MD);
     Sage_Log::log($request, null, '3D-Request.log');
     $result = $this->_postRequest($request, true);
     Sage_Log::log($result, null, '3D-Result.log');
     if (Mage::helper('sagepaysuite')->surchargesModuleEnabled() == true) {
         //save surcharge to server post for later use
         $session_surcharge_amount = Mage::getSingleton('sagepaysuite/session')->getSurcharge();
         if (!is_null($session_surcharge_amount) && $session_surcharge_amount > 0) {
             $result->setData('Surcharge', $session_surcharge_amount);
         }
     }
     Mage::register('sageserverpost', $result);
     if ($result->getResponseStatus() == self::RESPONSE_CODE_APPROVED || $result->getResponseStatus() == 'AUTHENTICATED' || $result->getResponseStatus() == self::RESPONSE_CODE_REGISTERED) {
         if (strtoupper($this->getConfigData('payment_action')) == self::REQUEST_TYPE_PAYMENT) {
             $this->getSageSuiteSession()->setInvoicePayment(true);
         }
         $onePage = Mage::getSingleton('checkout/type_onepage');
         $quote = $onePage->getQuote();
         $quote->collectTotals();
         Mage::helper('sagepaysuite')->ignoreAddressValidation($quote);
         $onePage->saveOrder();
         $_transaction = Mage::getModel('sagepaysuite2/sagepaysuite_transaction')->loadByVendorTxCode($this->getSageSuiteSession()->getLastVendorTxCode())->setVpsProtocol($result->getData('VPSProtocol'))->setSecurityKey($result->getData('SecurityKey'))->setStatus($result->getData('Status'))->setStatusDetail($result->getData('StatusDetail'))->setVpsTxId($result->getData('VPSTxId'))->setTxAuthNo($result->getData('TxAuthNo'))->setAvscv2($result->getData('AVSCV2'))->setPostcodeResult($result->getData('PostCodeResult'))->setAddressResult($result->getData('AddressResult'))->setCv2result($result->getData('CV2Result'))->setThreedSecureStatus($result->getData('3DSecureStatus'))->setCavv($result->getData('CAVV'))->setRedFraudResponse($result->getData('FraudResponse'))->setSurchargeAmount($result->getData('Surcharge'))->setBankAuthCode($result->getData('BankAuthCode'))->setDeclineCode($result->getData('DeclineCode'))->save();
         //Saving TOKEN after 3D response.
         if ($result->getData('Token')) {
             $tokenData = array('Token' => $result->getData('Token'), 'Status' => $result->getData('Status'), 'Vendor' => $_transaction->getVendorname(), 'CardType' => $_transaction->getCardType(), 'ExpiryDate' => $result->getData('ExpiryDate'), 'StatusDetail' => $result->getData('StatusDetail'), 'Protocol' => 'direct', 'CardNumber' => $_transaction->getLastFourDigits(), 'Nickname' => $_transaction->getNickname());
             Mage::getModel('sagepaysuite/sagePayToken')->persistCard($tokenData);
         }
         $payment->setSagePayResult($result);
         $payment->setStatus(self::STATUS_APPROVED)->setCcTransId($result->getVPSTxId())->setCcApproval(self::RESPONSE_CODE_APPROVED)->setLastTransId($result->getVPSTxId())->setAddressResult($result->getAddressResult())->setPostcodeResult($result->getPostCodeResult())->setCv2Result($result->getCV2Result())->setSecurityKey($result->getSecurityKey())->setCcCidStatus($result->getTxAuthNo())->setAdditionalData($result->getResponseStatusDetail());
         $payment->save();
     } else {
         //Update status if 3d failed
         Mage::getModel('sagepaysuite2/sagepaysuite_transaction')->loadByVendorTxCode($this->getSageSuiteSession()->getLastVendorTxCode())->setStatus($result->getResponseStatus())->setStatusDetail($result->getResponseStatusDetail())->setVpsTxId($result->getVpsTxId())->setSecurityKey($result->getSecurityKey())->setPares(null)->setMd(null)->setPareq(null)->save();
         if ($result->getResponseStatusDetail()) {
             if ($result->getResponseStatus() == self::RESPONSE_CODE_NOTAUTHED) {
                 $error = $this->_sageHelper()->__('Your credit card can not be authenticated: ');
             } else {
                 if ($result->getResponseStatus() == self::RESPONSE_CODE_REJECTED) {
                     $error = $this->_sageHelper()->__('Your credit card was rejected: ');
                 }
             }
             $error .= $result->getResponseStatusDetail();
         } else {
             $error = $this->_sageHelper()->__('Error in capturing the payment');
         }
     }
     if (!empty($error)) {
         Mage::throwException($error);
     }
     return $this;
 }