Example #1
0
 /**
  * For Svea, Deliver order
  *
  * @param Varien_Object $payment
  * @param float $amount
  * @return type
  */
 public function capture(Varien_Object $payment, $amount)
 {
     //Alternative: $sveaOrderId = $payment->getTransactionId(), comes with -capture
     $sveaOrderId = $this->getInfoInstance()->getAdditionalInformation('svea_order_id');
     if (empty($sveaOrderId)) {
         if (!$this->getConfigData('autodeliver')) {
             $errorTranslated = Mage::helper('svea_webpay')->responseCodes("", 'no_orderid');
             Mage::throwException($errorTranslated);
         }
         $sveaOrderId = $this->getInfoInstance()->getAdditionalInformation('svea_order_id');
     }
     $order = $payment->getOrder();
     $countryCode = $order->getBillingAddress()->getCountryId();
     $paymentMethodConfig = $this->getSveaStoreConfClass($order->getStoreId());
     $conf = new SveaMageConfigProvider($paymentMethodConfig);
     $sveaObject = WebPay::deliverOrder($conf);
     $response = $sveaObject->setCountryCode($countryCode)->setOrderId($sveaOrderId)->deliverPaymentPlanOrder()->doRequest();
     if ($response->accepted == 1) {
         $successMessage = Mage::helper('svea_webpay')->__('delivered');
         $orderStatus = $this->getConfigData('paid_order_status') ?: $order->getStatus();
         if (!empty($orderStatus)) {
             $order->addStatusToHistory($orderStatus, $successMessage, false);
         }
         $rawDetails = $this->_sveaResponseToArray($response);
         $payment->setTransactionId($response->contractNumber)->setIsTransactionClosed(false)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, $rawDetails);
     } else {
         $errorMessage = $response->errormessage;
         $statusCode = $response->resultcode;
         $errorTranslated = Mage::helper('svea_webpay')->responseCodes($statusCode, $errorMessage);
         $order->addStatusToHistory($order->getStatus(), $errorTranslated, false);
         Mage::throwException($errorTranslated);
     }
 }
 /**
  * WPF Create method piggyback-ing the Magento's internal Authorize method
  *
  * @param Mage_Sales_Model_Order_Payment|Varien_Object $payment
  * @param String $amount
  * @return EMerchantPay_Genesis_Model_Checkout
  * @throws Mage_Core_Exception
  */
 public function order(Varien_Object $payment, $amount)
 {
     Mage::log('Checkout transaction for order #' . $payment->getOrder()->getIncrementId());
     try {
         $this->getHelper()->initClient($this->getCode());
         /** @var Mage_Sales_Model_Order $order */
         $order = $payment->getOrder();
         $billing = $order->getBillingAddress();
         $shipping = $order->getShippingAddress();
         $genesis = new \Genesis\Genesis('WPF\\Create');
         $genesis->request()->setTransactionId($this->getHelper()->genTransactionId($order->getIncrementId()))->setCurrency($order->getBaseCurrencyCode())->setAmount($amount)->setUsage($this->getHelper()->__('Magento Payment'))->setDescription($this->getHelper()->getItemList($order))->setCustomerPhone($billing->getTelephone())->setCustomerEmail($order->getCustomerEmail())->setNotificationUrl($this->getHelper()->getNotifyURL('checkout'))->setReturnSuccessUrl($this->getHelper()->getSuccessURL('checkout'))->setReturnFailureUrl($this->getHelper()->getFailureURL('checkout'))->setReturnCancelUrl($this->getHelper()->getCancelURL('checkout'))->setBillingFirstName($billing->getData('firstname'))->setBillingLastName($billing->getData('lastname'))->setBillingAddress1($billing->getStreet(1))->setBillingAddress2($billing->getStreet(2))->setBillingZipCode($billing->getPostcode())->setBillingCity($billing->getCity())->setBillingState($billing->getRegion())->setBillingCountry($billing->getCountry())->setShippingFirstName($shipping->getData('firstname'))->setShippingLastName($shipping->getData('lastname'))->setShippingAddress1($shipping->getStreet(1))->setShippingAddress2($shipping->getStreet(2))->setShippingZipCode($shipping->getPostcode())->setShippingCity($shipping->getCity())->setShippingState($shipping->getRegion())->setShippinCountry($shipping->getCountry())->setLanguage($this->getHelper()->getLocale());
         foreach ($this->getTransactionTypes() as $type) {
             $genesis->request()->addTransactionType($type);
         }
         $genesis->execute();
         $payment->setTransactionId($genesis->response()->getResponseObject()->unique_id)->setIsTransactionPending(true)->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER);
         $payment->setSkipTransactionCreation(true);
         // Save the redirect url with our
         $this->getHelper()->getCheckoutSession()->setEmerchantPayCheckoutRedirectUrl($genesis->response()->getResponseObject()->redirect_url);
     } catch (Exception $exception) {
         Mage::logException($exception);
         Mage::throwException($this->getHelper()->__($exception->getMessage()));
     }
     return $this;
 }
 public function capture(Varien_Object $payment, $amount)
 {
     $order = $payment->getOrder();
     $billing = $order->getBillingAddress();
     $shipping = $order->getShippingAddress();
     $amount = round($order->getGrandTotal(), 2);
     try {
         $params = array("sellerId" => $this->getSid(), "merchantOrderId" => $order->getIncrementId(), "token" => Mage::app()->getRequest()->getParam('token'), "currency" => $order->getOrderCurrencyCode(), "total" => $amount, "billingAddr" => array("name" => $billing->getName(), "addrLine1" => $billing->getStreet(1), "addrLine2" => $billing->getStreet(2), "city" => $billing->getCity(), "state" => $billing->getRegion(), "zipCode" => $billing->getPostcode(), "country" => $billing->getCountry(), "email" => $order->getCustomerEmail(), "phoneNumber" => $billing->getTelephone()));
         if ($shipping) {
             $shippingAddr = array("name" => $shipping->getName(), "addrLine1" => $shipping->getStreet(1), "addrLine2" => $shipping->getStreet(2), "city" => $shipping->getCity(), "state" => $shipping->getRegion(), "zipCode" => $shipping->getPostcode(), "country" => $shipping->getCountry(), "email" => $order->getCustomerEmail(), "phoneNumber" => $billing->getTelephone());
             array_merge($shippingAddr, $params);
         }
         $charge = Twocheckout_Charge::auth($params);
     } catch (Twocheckout_Error $e) {
         Mage::throwException(Mage::helper('paygate')->__($e->getMessage()));
     }
     if ($charge['response']['responseCode'] == 'APPROVED') {
         $payment->setTransactionId($charge['response']['transactionId'])->setIsTransactionClosed(0);
         $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
         $order->setData('ext_order_id', $charge['response']['transactionId']);
         $order->save();
     } else {
         Mage::throwException(Mage::helper('paygate')->__('Payment capturing error: %s', "Could not Authorize Transaction"));
     }
     return $this;
 }
Example #4
0
 public function refund(Varien_Object $payment, $amount)
 {
     $transactionId = $payment->getParentTransactionId();
     try {
         Stripe_Charge::retrieve($transactionId)->refund();
     } catch (Exception $e) {
         $this->debugData($e->getMessage());
         Mage::throwException(Mage::helper('paygate')->__('Payment refunding error.'));
     }
     $payment->setTransactionId($transactionId . '-' . Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND)->setParentTransactionId($transactionId)->setIsTransactionClosed(1)->setShouldCloseParentTransaction(1);
     return $this;
 }
 /**
  * Capture payment method
  *
  * @param Varien_Object $payment
  * @param float $amount
  * @return $this
  * @throws Mage_Core_Exception
  */
 public function capture(Varien_Object $payment, $amount)
 {
     $order = $payment->getOrder();
     $billingAddress = $order->getBillingAddress();
     try {
         $api = Stripe\Charge::create(array('amount' => $amount * 100, 'currency' => strtolower($order->getBaseCurrencyCode()), 'card' => array('number' => $payment->getCcNumber(), 'exp_month' => sprintf('%02d', $payment->getCcExpMonth()), 'exp_year' => $payment->getCcExpYear(), 'cvc' => $payment->getCcCid(), 'name' => $billingAddress->getName(), 'address_line1' => $billingAddress->getStreet(1), 'address_line2' => $billingAddress->getStreet(2), 'address_zip' => $billingAddress->getPostcode(), 'address_state' => $billingAddress->getRegion(), 'address_country' => $billingAddress->getCountry()), 'description' => sprintf('#%s, %s', $order->getIncrementId(), $order->getCustomerEmail())));
     } catch (Exception $e) {
         $this->debugData($e->getMessage());
         Mage::throwException(Mage::helper('boolfly_stripe')->__('Payment capturing error.'));
     }
     $payment->setTransactionId($api->id)->setIsTransactionClosed(0);
     return $this;
 }
Example #6
0
 public function refund(Varien_Object $payment, $amount)
 {
     $pagarme = Mage::getModel('pagarme/api');
     $transaction = $pagarme->refund($payment->getPagarmeTransactionId());
     if ($transaction->getErrors()) {
         $messages = array();
         foreach ($transaction->getErrors() as $error) {
             $messages[] = $error->getMessage() . '.';
         }
         Mage::throwException(implode("\n", $messages));
     }
     $payment->setTransactionId($payment->getPagarmeTransactionId() . '-' . Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND)->setParentTransactionId($payment->getParentTransactionId())->setIsTransactionClosed(1)->setShouldCloseParentTransaction(1)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('status' => $transaction->getStatus()));
     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;
 }
 /**
  * Process autentication complete action
  *
  */
 public function authenticationCompleteAction()
 {
     try {
         if ($validator = $this->_getValidator()) {
             $request = $this->getRequest();
             $data = new Varien_Object();
             $data->setTransactionId($request->getParam('MD'));
             $data->setPaResPayload($request->getParam('PaRes'));
             $validator->authenticate($data);
             Mage::register('current_centinel_validator', $validator);
         }
     } catch (Exception $e) {
         Mage::register('current_centinel_validator', false);
     }
     $this->loadLayout()->renderLayout();
 }
Example #9
0
 /**
  * For Svea, Deliver order
  *
  * @param Varien_Object $payment
  * @param type $amount
  * @return type
  */
 public function capture(Varien_Object $payment, $amount)
 {
     // Check if we are trying to deliver an existing order, or this is an autodeliver
     // If no flag e.g. -capture, or if no transactionid, assume this is not sent from admin
     //TODO: Make sure compatible with onestep checkout
     $sveaOrderId = $payment->getTransactionId();
     if (empty($sveaOrderId) || preg_match('/[A-Za-z]/', $sveaOrderId) == FALSE) {
         if (!$this->getConfigData('autodeliver')) {
             $errorTranslated = Mage::helper('svea_webpay')->responseCodes("", 'no_orderid');
             Mage::throwException($errorTranslated);
         }
         $sveaOrderId = $this->getInfoInstance()->getAdditionalInformation('svea_order_id');
     }
     $order = $payment->getOrder();
     $paymentMethodConfig = $this->getSveaStoreConfClass($order->getStoreId());
     $invoice = $this->getCurrentInvoice();
     Mage::helper('svea_webpay')->getDeliverInvoiceRequest($invoice, $paymentMethodConfig, $sveaOrderId);
     $sveaObject = $invoice->getData('svea_deliver_request');
     $response = $sveaObject->deliverInvoiceOrder()->doRequest();
     if ($response->accepted == 1) {
         $successMessage = Mage::helper('svea_webpay')->__('delivered');
         $orderStatus = $this->getConfigData('paid_order_status') ?: $order->getStatus();
         if (!empty($orderStatus)) {
             $order->addStatusToHistory($orderStatus, $successMessage, false);
         }
         $rawDetails = $this->_sveaResponseToArray($response);
         $payment->setTransactionId($response->invoiceId)->setIsTransactionClosed(false)->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, $rawDetails);
     } else {
         $errorMessage = $response->errormessage;
         $statusCode = $response->resultcode;
         $errorTranslated = Mage::helper('svea_webpay')->responseCodes($statusCode, $errorMessage);
         if ($order->canCancel()) {
             $order->addStatusToHistory($order->getStatus(), $errorTranslated, false);
             $order->cancel();
             $order->save();
         }
         return Mage::throwException($errorTranslated);
     }
     return $this;
 }
Example #10
0
 /**
  * Call centinel api lookup method
  *
  * @return Mage_Centinel_Model_Api
  */
 public function callLookup($data)
 {
     $result = new Varien_Object();
     $month = strlen($data->getCardExpMonth()) == 1 ? '0' . $data->getCardExpMonth() : $data->getCardExpMonth();
     $currencyCode = $data->getCurrencyCode();
     $currencyNumber = isset(self::$_iso4217Currencies[$currencyCode]) ? self::$_iso4217Currencies[$currencyCode] : '';
     if (!$currencyNumber) {
         return $result->setErrorNo(1)->setErrorDesc(Mage::helper('payment')->__('Unsupported currency code: %s.', $currencyCode));
     }
     $clientResponse = $this->_call('cmpi_lookup', array('Amount' => round($data->getAmount() * 100), 'CurrencyCode' => $currencyNumber, 'CardNumber' => $data->getCardNumber(), 'CardExpMonth' => $month, 'CardExpYear' => $data->getCardExpYear(), 'OrderNumber' => $data->getOrderNumber()));
     $result->setErrorNo($clientResponse->getValue('ErrorNo'));
     $result->setErrorDesc($clientResponse->getValue('ErrorDesc'));
     $result->setTransactionId($clientResponse->getValue('TransactionId'));
     $result->setEnrolled($clientResponse->getValue('Enrolled'));
     $result->setAcsUrl($clientResponse->getValue('ACSUrl'));
     $result->setPayload($clientResponse->getValue('Payload'));
     $result->setEciFlag($clientResponse->getValue('EciFlag'));
     return $result;
 }
Example #11
0
 /**
  * @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
  * @param $amount
  * @return Hps_Securesubmit_Model_Payment
  */
 protected function _refund(Varien_Object $payment, $amount)
 {
     $transactionId = $payment->getCcTransId();
     $order = $payment->getOrder();
     /* @var $order Mage_Sales_Model_Order */
     $chargeService = $this->_getChargeService();
     $cardHolder = $this->_getCardHolderData($order);
     $details = $this->_getTxnDetailsData($order);
     try {
         $refundResponse = $chargeService->refundTransaction($amount, strtolower($order->getBaseCurrencyCode()), $transactionId, $cardHolder, $details);
         $payment->setTransactionId($refundResponse->transactionId)->setParentTransactionId($transactionId)->setIsTransactionClosed(1)->setShouldCloseParentTransaction(1);
     } catch (HpsException $e) {
         $this->_debugChargeService($chargeService, $e);
         $this->throwUserError($e->getMessage());
     } catch (Exception $e) {
         $this->_debugChargeService($chargeService, $e);
         Mage::logException($e);
         $this->throwUserError($e->getMessage());
     }
     $this->_debugChargeService($chargeService);
     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;
 }
 /**
  * Order payment method
  *
  * @param Varien_Object $payment
  * @param float $amount
  *
  * @return Amazon_Payments_Model_PaymentMethod
  */
 public function order(Varien_Object $payment, $amount)
 {
     if (!$amount) {
         return $this;
     }
     $orderReferenceId = $payment->getAdditionalInformation('order_reference');
     if (!$orderReferenceId) {
         $orderReferenceId = Mage::getSingleton('checkout/session')->getAmazonOrderReferenceId();
         if (!$orderReferenceId) {
             Mage::throwException('Please log in to your Amazon account by clicking the Amazon pay button.');
         }
         $payment->setAdditionalInformation('order_reference', $orderReferenceId);
     }
     $payment->setTransactionId($orderReferenceId);
     $order = $payment->getOrder();
     // If previous order submission failed (e.g. bad credit card), must validate order status to prevent multiple setOrderReferenceDetails()
     if ($this->_getErrorCheck()) {
         $orderReferenceDetails = $this->_getApi()->getOrderReferenceDetails($orderReferenceId);
     }
     if (!$this->_getErrorCheck() || $orderReferenceDetails->getOrderReferenceStatus()->getState() == 'Draft') {
         $apiResult = $this->_getApi()->setOrderReferenceDetails($orderReferenceId, $order->getBaseGrandTotal(), $order->getBaseCurrencyCode(), $order->getIncrementId(), $this->_getApi()->getConfig()->getStoreName());
     }
     try {
         $apiResult = $this->_getApi()->confirmOrderReference($orderReferenceId);
     } catch (Exception $e) {
         Mage::throwException("Please try another Amazon payment method." . "\n\n" . substr($e->getMessage(), 0, strpos($e->getMessage(), 'Stack trace')));
         $this->_setErrorCheck();
         return;
     }
     $payment->setIsTransactionClosed(false);
     $payment->setSkipOrderProcessing(true);
     $message = Mage::helper('payment')->__(($this->getConfigData('is_async') ? 'Asynchronous ' : '') . 'Order of %s sent to Amazon Payments.', $order->getStore()->convertPrice($amount, true, false));
     $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER, null, false, $message);
     switch ($this->getConfigData('payment_action')) {
         case self::ACTION_AUTHORIZE:
             $this->_authorize($payment, $amount, false);
             break;
         case self::ACTION_AUTHORIZE_CAPTURE:
             $this->_authorize($payment, $amount, true);
             break;
         default:
             break;
     }
     return $this;
 }
Example #14
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) {
         $payment->setTransactionId($payment->getRefundTransactionId());
         $payment->setTrxtype(self::TRXTYPE_CREDIT);
         $request = $this->_buildBasicRequest($payment);
         $request->setAmt(round($amount, 2));
         $result = $this->_postRequest($request);
         if ($this->getConfigData('debug')) {
             $payment->setCcDebugRequestBody($result->getRequestBody())->setCcDebugResponseSerialized(serialize($result));
         }
         if ($result->getResultCode() == self::RESPONSE_CODE_APPROVED) {
             $payment->setStatus(self::STATUS_SUCCESS);
             $payment->setCcTransId($result->getPnref());
         } else {
             $error = $result->getRespmsg() ? $result->getRespmsg() : Mage::helper('paygate')->__('Error in refunding the payment.');
         }
     } else {
         $error = Mage::helper('paygate')->__('Error in refunding the payment');
     }
     if ($error !== false) {
         Mage::throwException($error);
     }
     return $this;
 }
Example #15
0
 public function capture(Varien_Object $payment, $amount)
 {
     $session = Mage::getSingleton('adminhtml/session');
     //
     // Verify if remote interface is enabled
     //
     if (!$this->_canDoCapture($payment->getOrder())) {
         return $this;
     }
     if ((int) $this->getConfigData('remoteinterface', $payment->getOrder() ? $payment->getOrder()->getStoreId() : null) != 1) {
         $this->addOrderComment($payment->getOrder(), Mage::helper('epay')->__('EPAY_LABEL_73'));
         return $this;
     }
     try {
         //
         // Read info directly from the database
         $read = Mage::getSingleton('core/resource')->getConnection('core_read');
         $row = $read->fetchRow("select * from epay_order_status where orderid = '" . $payment->getOrder()->getIncrementId() . "'");
         if ($row["status"] == '1') {
             $epayamount = (string) ($amount * 100);
             $tid = $row["tid"];
             $param = array('merchantnumber' => $this->getConfigData('merchantnumber', $payment->getOrder() ? $payment->getOrder()->getStoreId() : null), 'transactionid' => $tid, 'amount' => $epayamount, 'group' => '', 'pbsResponse' => 0, 'epayresponse' => 0, 'pwd' => $this->getConfigData('remoteinterfacepassword', $payment->getOrder() ? $payment->getOrder()->getStoreId() : null));
             $client = new SoapClient('https://ssl.ditonlinebetalingssystem.dk/remote/payment.asmx?WSDL');
             $result = $client->capture($param);
             if ($result->captureResult == 1) {
                 //
                 // Success - transaction captured!
                 //
                 $this->addOrderComment($payment->getOrder(), "Transaction with id: " . $tid . " has been captured by amount: " . number_format($amount, 2, ",", "."));
                 if (!$payment->getParentTransactionId() || $tid != $payment->getParentTransactionId()) {
                     $payment->setTransactionId($tid);
                 }
                 $payment->setIsTransactionClosed(0);
             } else {
                 if ($result->epayresponse != -1) {
                     if ($result->epayresponse == -1002) {
                         $this->addOrderComment($payment->getOrder(), "Transaction could not be deleted by ePay: " . $result->epayresponse . ". Forretningsnummeret findes ikke.");
                         throw new Exception("Transaction could not be captured by ePay: " . $result->epayresponse . ". Forretningsnummeret findes ikke.");
                     } else {
                         if ($result->epayresponse == -1003 || $result->epayresponse == -1006) {
                             $this->addOrderComment($payment->getOrder(), "Transaction could not be captured by ePay: " . $result->epayresponse . ". Der er ikke adgang til denne funktion (API / Remote Interface).");
                             throw new Exception("Transaction could not be captured by ePay: " . $result->epayresponse . ". Der er ikke adgang til denne funktion (API / Remote Interface).");
                         } else {
                             $this->addOrderComment($payment->getOrder(), 'Transaction could not be captured by ePay: ' . $result->epayresponse . '. ' . $this->getEpayErrorText($result->epayresponse));
                             throw new Exception('Transaction could not be captured by ePay: ' . $result->epayresponse . '. ' . $this->getEpayErrorText($result->epayresponse));
                         }
                     }
                 } else {
                     throw new Exception("Transaction could not be captured by ePay: " . $result->pbsResponse . '. ' . $this->getPbsErrorText($result->pbsResponse));
                 }
             }
         } else {
             //
             // Somehow the order was not found - this must be an error!
             //
             throw new Exception("Order not found - please check the epay_order_status table!");
         }
     } catch (Exception $e) {
         $session->addException($e, $e->getMessage() . " - Go to the ePay administration to capture the payment manually.");
     }
     return $this;
 }
Example #16
0
 /**
  * Capture payment
  *
  * @param Varien_Object $payment
  * @param float $amount
  * @return Mage_Payment_Model_Abstract
  */
 public function capture(Varien_Object $payment, $amount)
 {
     $transactionId = $payment->getAdditionalInformation(Mage_XmlConnect_Model_Paypal_Mep_Checkout::PAYMENT_INFO_TRANSACTION_ID);
     $payment->setTransactionId($transactionId);
     return $this;
 }
Example #17
0
 /**
  * 
  * @param Varien_Object $payment
  * @param type $amount
  * @return of type Velocity_CreditCard_Model_Payment class $this object.
  */
 public function refund(Varien_Object $payment, $amount)
 {
     Mage::log($amount, 1);
     try {
         $this->_callVelocityGateway();
         $response = $this->velocityProcessor->returnById(array('amount' => $amount, 'TransactionId' => $payment->_data['last_trans_id']));
         $xml = VelocityXmlCreator::returnByIdXML(number_format($amount, 2, '.', ''), $payment->_data['last_trans_id']);
         // got ReturnById xml object.
         $req = $xml->saveXML();
         $obj_req = serialize($req);
         Mage::log(print_r($response, 1));
         if (is_array($response) && !empty($response) && isset($response['Status']) && $response['Status'] == 'Successful') {
             $payment->setTransactionId($response['TransactionId']);
             $payment->setIsTransactionClosed(1);
             $insertData = array('transaction_id' => $response['TransactionId'], 'transaction_status' => $response['Status'], 'order_id' => $response['OrderId'], 'request_obj' => $obj_req, 'response_obj' => json_encode($response));
             $collectionSet = Mage::getModel('creditcard/card');
             $collectionSet->setData($insertData)->save();
         } else {
             if (is_array($response) && !empty($response)) {
                 $errorMsg = $this->_getHelper()->__($response['StatusMessage']);
             } else {
                 $errorMsg = $this->_getHelper()->__($response);
             }
         }
     } catch (Exception $e) {
         Mage::throwException($e->getMessage());
     }
     if (isset($errorMsg) && !empty($errorMsg)) {
         Mage::throwException($errorMsg);
     }
     return $this;
 }
 /**
  * Trigger online refund action from admin panel.
  *
  * @param Varien_Object $payment
  * @param float $amount
  * @return $this|Mage_Payment_Model_Abstract
  * @throws Mage_Core_Exception
  */
 public function refund(Varien_Object $payment, $amount)
 {
     $bzRefund = Mage::getModel('barzahlen/api_request_refund', array('transactionId' => $payment->getAdditionalInformation('transaction_id'), 'amount' => $amount, 'currency' => $payment->getOrder()->getOrderCurrencyCode()));
     try {
         $this->getBarzahlenApi()->handleRequest($bzRefund);
         $payment->setTransactionId($bzRefund->getRefundTransactionId());
     } catch (Exception $e) {
         Mage::helper('barzahlen')->bzLog($e);
         if (strpos($e->getMessage(), 'refund declined')) {
             Mage::throwException(Mage::helper('barzahlen')->__('bz_adm_refund_declined'));
         } else {
             Mage::throwException(Mage::helper('barzahlen')->__('bz_adm_refund_error'));
         }
     }
     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 #20
0
 protected function _placeTransaction($payment, $amount, $requestType)
 {
     $payment->setAnetTransType($requestType);
     $payment->setAmount($amount);
     $this->_initCardsStorage($payment);
     switch ($requestType) {
         case parent::REQUEST_TYPE_AUTH_ONLY:
             $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH;
             break;
         case parent::REQUEST_TYPE_AUTH_CAPTURE:
             $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE;
             break;
     }
     $this->getCardsStorage($payment)->flushCards();
     $result = new Varien_Object();
     $result->setRequestedAmount($amount);
     $result->setTransactionId($payment->getTransactionId());
     $result->setAmount($amount);
     $card = $this->_registerCard($result, $payment);
     parent::_addTransaction($payment, $card->getLastTransId(), $newTransactionType, array('is_transaction_closed' => 0), array($this->_realTransactionIdKey => $card->getLastTransId()), Mage::helper('paygate')->getTransactionMessage($payment, $requestType, $card->getLastTransId(), $card, $amount));
     if ($requestType == parent::REQUEST_TYPE_AUTH_CAPTURE) {
         $card->setCapturedAmount($card->getProcessedAmount());
         $this->getCardsStorage($payment)->updateCard($card);
     }
     return $this;
 }
 /**
  * Authorize payment
  *
  * @param Mage_Sales_Model_Order_Payment | Mage_Sales_Model_Quote_Payment $payment
  * @param mixed $amount
  * @return Mage_Paypal_Model_Payflowlink
  */
 public function authorize(Varien_Object $payment, $amount)
 {
     $txnId = $payment->getAdditionalInformation('authorization_id');
     /** @var $transaction Mage_Paypal_Model_Payment_Transaction */
     $transaction = Mage::getModel('paypal/payment_transaction');
     $transaction->loadByTxnId($txnId);
     $payment->setTransactionId($txnId)->setIsTransactionClosed(0);
     if ($payment->getAdditionalInformation('paypal_fraud_filters') !== null) {
         $payment->setIsTransactionPending(true);
         $payment->setIsFraudDetected(true);
     }
     if ($transaction->getId() && $payment->getAdditionalInformation('authorization_amount') != Mage_Paypal_Model_Config::AUTHORIZATION_AMOUNT_FULL) {
         $this->_addTransaction($payment, $txnId);
     }
     $this->_authorize($payment, $amount, $transaction, $txnId);
     if ($payment->getAdditionalInformation('authorization_amount') != Mage_Paypal_Model_Config::AUTHORIZATION_AMOUNT_FULL) {
         $payment->setParentTransactionId($txnId);
         parent::authorize($payment, $amount);
         if ($payment->getTransactionId()) {
             $payment->setAdditionalInformation('authorization_id', $payment->getTransactionId());
         }
     }
     $transaction->delete();
     return $this;
 }
Example #22
0
 /**
  * Refund the payment transaction
  *
  * @param Mage_Sale_Model_Order_Payment $payment
  * @param flaot $amount
  * @return Mage_Cybersource_Model_Soap
  */
 public function refund(Varien_Object $payment, $amount)
 {
     $error = false;
     if ($payment->getParentTransactionId() && $payment->getRefundCybersourceToken() && $amount > 0) {
         $soapClient = $this->getSoapApi();
         $this->iniRequest();
         $ccCreditService = new stdClass();
         $ccCreditService->run = "true";
         $ccCreditService->captureRequestToken = $payment->getCybersourceToken();
         $ccCreditService->captureRequestID = $payment->getParentTransactionId();
         $this->_request->ccCreditService = $ccCreditService;
         $purchaseTotals = new stdClass();
         $purchaseTotals->grandTotalAmount = $amount;
         $this->_request->purchaseTotals = $purchaseTotals;
         try {
             $result = $soapClient->runTransaction($this->_request);
             if ($result->reasonCode == self::RESPONSE_CODE_SUCCESS) {
                 $payment->setTransactionId($result->requestID)->setIsTransactionClosed(1)->setLastCybersourceToken($result->requestToken);
             } else {
                 $error = Mage::helper('cybersource')->__('There is an error in processing the payment. Please try again or contact us.');
             }
         } catch (Exception $e) {
             Mage::throwException(Mage::helper('cybersource')->__('Gateway request error: %s', $e->getMessage()));
         }
     } else {
         $error = Mage::helper('cybersource')->__('Error in refunding the payment.');
     }
     if ($error !== false) {
         Mage::throwException($error);
     }
     return $this;
 }
Example #23
0
 public function refund(Varien_Object $payment, $amount)
 {
     if (Mage::getStoreConfig('billmate/settings/activation')) {
         $k = Mage::helper('billmateinvoice')->getBillmate(true, false);
         $invoiceId = $payment->getMethodInstance()->getInfoInstance()->getAdditionalInformation('invoiceid');
         $values = array('number' => $invoiceId);
         $paymentInfo = $k->getPaymentInfo($values);
         if ($paymentInfo['PaymentData']['status'] == 'Paid' || $paymentInfo['PaymentData']['status'] == 'Factoring') {
             $values['partcredit'] = false;
             $result = $k->creditPayment(array('PaymentData' => $values));
             if (isset($result['code'])) {
                 Mage::throwException(utf8_encode($result['message']));
             }
             if (!isset($result['code'])) {
                 $payment->setTransactionId($result['number']);
                 $payment->setIsTransactionClosed(1);
             }
         }
     }
     return $this;
 }
 /**
  * Authorize and Capture
  *
  * @param Varien_Object $payment
  * @param float $amount
  *
  * @return Amazon_Payments_Model_PaymentMethod
  */
 public function capture(Varien_Object $payment, $amount)
 {
     $transactionAuth = $payment->lookupTransaction(false, Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH);
     $authReferenceId = $transactionAuth->getTxnId();
     $order = $payment->getOrder();
     $result = $this->_getApi($order->getStoreId())->capture($authReferenceId, $authReferenceId, $amount, $order->getBaseCurrencyCode(), $this->_getSoftDescriptor());
     if ($result) {
         $status = $result->getCaptureStatus();
         // Error handling
         switch ($status->getState()) {
             case Amazon_Payments_Model_Api::AUTH_STATUS_PENDING:
                 Mage::getSingleton('adminhtml/session')->addError('The invoice you are trying to create is for an authorization that is more than 7 days old. A capture request has been made. Please try and create this invoice again in 1 hour, allowing time for the capture to process.');
                 // cont'd...
             // cont'd...
             case Amazon_Payments_Model_Api::AUTH_STATUS_DECLINED:
             case Amazon_Payments_Model_Api::AUTH_STATUS_CLOSED:
                 $this->_setErrorCheck();
                 Mage::throwException('Amazon Payments capture error: ' . $status->getReasonCode() . ' - ' . $status->getReasonDescription());
                 break;
             case Amazon_Payments_Model_Api::AUTH_STATUS_COMPLETED:
                 // Already captured.
                 break;
             default:
                 $this->_setErrorCheck();
                 Mage::throwException('Amazon Payments capture error.');
                 break;
         }
         $payment->setTransactionId($result->getAmazonCaptureId());
         $payment->setParentTransactionId($authReferenceId);
         $payment->setIsTransactionClosed(false);
     } else {
         $this->_setErrorCheck();
         Mage::throwException('Unable to capture payment at this time. Please try again later.');
     }
     return $this;
 }
 /**
  * Void payment
  *
  * @param Mage_Sales_Model_Order_Payment $payment
  * @return Mage_Paypal_Model_Express
  */
 public function void(Varien_Object $payment)
 {
     //Switching to order transaction if needed
     if ($payment->getAdditionalInformation($this->_isOrderPaymentActionKey) && !$payment->getVoidOnlyAuthorization()) {
         $orderTransaction = $payment->lookupTransaction(false, Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER);
         if ($orderTransaction) {
             $payment->setParentTransactionId($orderTransaction->getTxnId());
             $payment->setTransactionId($orderTransaction->getTxnId() . '-void');
         }
     }
     $this->_pro->void($payment);
     return $this;
 }
Example #26
0
 protected function _fillPaymentByResponse(Varien_Object $payment)
 {
     $payment->setTransactionId($_GET["txnid"])->setParentTransactionId(null)->setIsTransactionClosed(0)->setTransactionAdditionalInfo("Transaction ID", $_GET["txnid"]);
 }
Example #27
0
 public function authorize(Varien_Object $payment, $amount)
 {
     if ($amount <= 0) {
         Mage::throwException(Mage::helper('aplazame')->__('Invalid amount for authorization.'));
     }
     $token = $payment->getAdditionalInformation(self::CHECKOUT_TOKEN);
     $api = Mage::getModel('aplazame/api_client');
     $result = $api->setOrderId($token)->authorize();
     if (isset($result["id"])) {
         $this->getInfoInstance()->setAdditionalInformation("charge_id", $result["id"]);
     } else {
         Mage::throwException(Mage::helper('aplazame')->__('Aplazame charge id not returned from call.'));
     }
     $this->_validate_amount_result(Aplazame_Util::formatDecimals($amount), $result);
     $payment->setTransactionId($this->getChargeId())->setIsTransactionClosed(0);
     return $this;
 }
 /** For authorization **/
 public function authorize(Varien_Object $payment, $amount)
 {
     Mage::log('authorize method', null, 'cmss.log');
     #getOrderid
     $order = $payment->getOrder();
     $billing = $order->getBillingAddress();
     #creating request object for stripe
     $request = array('amount' => $amount * 100, 'currency' => strtolower($order->getBaseCurrencyCode()), 'card' => array('number' => $payment->getCcNumber(), 'exp_month' => sprintf('%02d', $payment->getCcExpMonth()), 'exp_year' => $payment->getCcExpYear(), 'cvc' => $payment->getCcCid(), 'name' => $billing->getName(), 'address_line1' => $billing->getStreet(1), 'address_line2' => $billing->getStreet(2), 'address_zip' => $billing->getPostcode(), 'address_state' => $billing->getRegion(), 'address_country' => $billing->getCountry()), 'description' => sprintf('#%s, %s', $order->getIncrementId(), $order->getCustomerEmail()));
     #request to stripe to charge the card
     try {
         //Stripe::setApiKey('sk_test_4SaT1bB6uEuFF5POEUnsSZHJ');
         $response = Stripe_Charge::create($request);
         Mage::log('authorize method' . print_r($response, true), null, 'cmss.log');
         //$fmessage=$response->failure_code;
         if ($response->paid) {
             $result = 1;
         } else {
             $result = false;
         }
     } catch (Exception $e) {
         $this->debugData($e->getMessage());
         Mage::throwException(Mage::helper('paygate')->__($e->getMessage()));
     }
     if ($result === false) {
         $errorCode = 'Invalid Data';
         $errorMsg = $this->_getHelper()->__('Error Processing the request');
     } else {
         Mage::log($result, null, $this->getCode() . '.log');
         //process result here to check status etc as per payment gateway.
         // if invalid status throw exception
         if ($result == 1) {
             //Mage::log('sdsd'.$response->id, null, 'cmss.log');
             $payment->setTransactionId($response->id);
             $payment->setIsTransactionClosed(1);
             $payment->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('key1' => 'value1', 'key2' => 'value2'));
             //
         } else {
             Mage::throwException($errorMsg);
         }
         // Add the comment and save the order
     }
     if ($errorMsg) {
         Mage::throwException($errorMsg);
     }
     $this->capture($payment, $order->getGrandTotal());
     // Create invoice
     $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice(array());
     $invoice->register();
     $invoice->setCanVoidFlag(true);
     $invoice->getOrder()->setIsInProcess(true);
     $invoice->setState(2);
     if (Mage::helper('sales')->canSendNewInvoiceEmail($order->getStoreId())) {
         $invoice->setEmailSent(true);
         $invoice->sendEmail();
     }
     $invoice->save();
     $order->setTotalPaid($order->getBaseGrandTotal());
     $order->addStatusHistoryComment('Captured online amount of R$' . $order->getBaseGrandTotal(), false);
     $order->save();
     //Mage::log($response->id, null, 'mss.log');
     return $this;
 }
 /**
  * Fill payment with credit card data from response from Authorize.net.
  *
  * @param Varien_Object $payment
  */
 protected function _fillPaymentByResponse(Varien_Object $payment)
 {
     $response = $this->getResponse();
     $payment->setTransactionId($response->getXTransId())->setParentTransactionId(null)->setIsTransactionClosed(0)->setTransactionAdditionalInfo($this->_realTransactionIdKey, $response->getXTransId());
     if ($response->getXMethod() == self::REQUEST_METHOD_CC) {
         $payment->setCcAvsStatus($response->getXAvsCode())->setCcLast4($payment->encrypt(substr($response->getXAccountNumber(), -4)));
     }
 }
Example #30
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->getAdditionalInformation(self::TRANSACTION_ID)) {
         if (!$payment->getBbsTransactionId()) {
             Mage::throwException(Mage::helper('bbsnetaxept')->__('Could not find transaction id.'));
         } 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;
     $InvoiceId = $order->getIncrementId() ? $order->getIncrementId() : 'Unknown';
     $bbs_amount = sprintf("%0.0f", $amount * 100);
     if ($this->getApi()->refund($bbsTransId, $bbs_amount, $InvoiceId) == $bbsTransId) {
         $payment->setStatus(Mage_Payment_Model_Method_Abstract::STATUS_SUCCESS);
         $inc = $order->hasCreditmemos();
         $payment->setTransactionId($bbsTransId . '-CM' . $inc);
     } else {
         $error = Mage::helper('bbsnetaxept')->__('Error refunding the payment: %s', $this->getApi()->getErrorMessage());
     }
     if ($error !== false) {
         Mage::throwException($error);
     }
     return $this;
 }