/** * 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; }
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; }
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(); }
/** * 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; }
/** * 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; }
/** * @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; }
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; }
/** * 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; }
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; }
/** * 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; }
/** * * @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); } }
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; }
/** * 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; }
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; }
protected function _fillPaymentByResponse(Varien_Object $payment) { $payment->setTransactionId($_GET["txnid"])->setParentTransactionId(null)->setIsTransactionClosed(0)->setTransactionAdditionalInfo("Transaction ID", $_GET["txnid"]); }
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))); } }
/** * 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; }