/** * @param Mage_Sales_Model_Order_Payment $payment * @return array */ protected function getVaultParams($payment) { $params = array(); $params['card_number'] = $payment->getCcNumber(); $params['card_expiry_month'] = $payment->getCcExpMonth() < 10 ? '0' . $payment->getCcExpMonth() : $payment->getCcExpMonth(); $params['card_expiry_year'] = $payment->getCcExpYear(); $params['cvc'] = $payment->getCcCid(); $params['multi_use'] = 1; //Add card holder $billing = $payment->getOrder()->getBillingAddress(); $defaultOwner = $billing->getFirstname() && $billing->getLastname() ? $billing->getFirstname() . ' ' . $billing->getLastname() : $billing->getEmail(); $params['card_holder'] = $payment->getCcOwner() ? $payment->getCcOwner() : $defaultOwner; $this->_debug($params); return $params; }
/** * Convert order payment to quote payment * * @param Mage_Sales_Model_Order_Payment $payment * @return Mage_Sales_Model_Quote_Payment */ public function paymentToQuotePayment(Mage_Sales_Model_Order_Payment $payment, $quotePayment = null) { if (!$quotePayment instanceof Mage_Sales_Model_Quote_Payment) { $quotePayment = Mage::getModel('sales/quote_payment'); } $quotePayment->setStoreId($payment->getStoreId())->setCustomerPaymentId($payment->getCustomerPaymentId())->setMethod($payment->getMethod())->setAdditionalData($payment->getAdditionalData())->setPoNumber($payment->getPoNumber())->setCcType($payment->getCcType())->setCcNumberEnc($payment->getCcNumberEnc())->setCcLast4($payment->getCcLast4())->setCcOwner($payment->getCcOwner())->setCcCidEnc($payment->getCcCidEnc())->setCcExpMonth($payment->getCcExpMonth())->setCcExpYear($payment->getCcExpYear()); return $quotePayment; }
/** * Genesis Sale (Auth/Capture) Payment Method with 3D-Secure * * @param Varien_Object|Mage_Sales_Model_Order_Payment $payment * @param String $amount * * @return EMerchantPay_Genesis_Model_Direct */ private function _sale3d($payment, $amount) { Mage::log('Sale 3D-Secure transaction for order #' . $payment->getOrder()->getIncrementId()); try { $this->getHelper()->initClient($this->getCode()); $order = $payment->getOrder(); $billing = $order->getBillingAddress(); $shipping = $order->getShippingAddress(); $genesis = new \Genesis\Genesis('Financial\\Cards\\Sale3D'); $genesis->request()->setTransactionId($this->getHelper()->genTransactionId($order->getIncrementId()))->setRemoteIp($this->getHelper('core/http')->getRemoteAddr(false))->setUsage($this->getHelper()->getItemList($order))->setCurrency($order->getBaseCurrencyCode())->setAmount($amount)->setCardHolder($payment->getCcOwner())->setCardNumber($payment->getCcNumber())->setExpirationYear($payment->getCcExpYear())->setExpirationMonth($payment->getCcExpMonth())->setCvv($payment->getCcCid())->setCustomerEmail($order->getCustomerEmail())->setCustomerPhone($billing->getTelephone())->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())->setNotificationUrl($this->getHelper()->getNotifyURL('direct'))->setReturnSuccessUrl($this->getHelper()->getSuccessURL('direct'))->setReturnFailureUrl($this->getHelper()->getFailureURL('direct')); $genesis->execute(); $this->setGenesisResponse($genesis->response()->getResponseObject()); // Hold transaction creation $payment->setTransactionId($this->getGenesisResponse()->unique_id)->setIsTransactionClosed(false)->setIsTransactionPending(true)->setPreparedMessage($this->getHelper()->__('3D-Secure: Redirecting customer to a verification page.'))->setTransactionAdditionalInfo(array(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS => $this->getHelper()->getArrayFromGatewayResponse($this->getGenesisResponse())), null); $payment->save(); if ($this->getGenesisResponse()->status == \Genesis\API\Constants\Transaction\States::DECLINED) { throw new \Genesis\Exceptions\ErrorAPI($this->getGenesisResponse()->message); } // Save the redirect url with our $this->getHelper()->getCheckoutSession()->setEmerchantPayDirectRedirectUrl($this->getGenesisResponse()->redirect_url); } catch (Exception $exception) { Mage::logException($exception); Mage::throwException($this->getHelper()->__($exception->getMessage())); } return $this; }
/** * Get the Simple XML objected used for pre-auth and capture payment transactions. * * @param Mage_Sales_Model_Order_Payment $payment * @param float $amount * @return SimpleXMLElement */ protected function getPaymentXmlObject($payment, $amount) { $order = $payment->getOrder(); $billing = $order->getBillingAddress(); $formattedAddress = $this->getEwayHelper()->getOrderAddressString($billing); $invoiceDesc = $this->getEwayHelper()->getInvoiceDescription($order); // Build the XML request $xml = new SimpleXMLElement('<ewaygateway></ewaygateway>'); $xml->addChild('ewayCustomerID', $this->getCustomerId()); $xml->addChild('ewayTotalAmount', $this->getFormattedAmount($amount)); $xml->addChild('ewayCustomerFirstName', str_replace('&', '&', trim($billing->getFirstname()))); $xml->addChild('ewayCustomerLastName', str_replace('&', '&', trim($billing->getLastname()))); $xml->addChild('ewayCustomerEmail', str_replace('&', '&', trim($order->getCustomerEmail()))); $xml->addChild('ewayCustomerAddress', str_replace('&', '&', trim($formattedAddress))); $xml->addChild('ewayCustomerPostcode', str_replace('&', '&', trim($billing->getPostcode()))); $xml->addChild('ewayCustomerInvoiceDescription', str_replace('&', '&', trim($invoiceDesc))); $xml->addChild('ewayCustomerInvoiceRef', $order->getIncrementId()); $xml->addChild('ewayCardHoldersName', str_replace('&', '&', $payment->getCcOwner())); $xml->addChild('ewayCardNumber', $payment->getCcNumber()); $xml->addChild('ewayCardExpiryMonth', $payment->getCcExpMonth()); $xml->addChild('ewayCardExpiryYear', substr($payment->getCcExpYear(), 2, 2)); $xml->addChild('ewayTrxnNumber', ''); $xml->addChild('ewayOption1', ''); $xml->addChild('ewayOption2', ''); $xml->addChild('ewayOption3', ''); if ($this->hasVerification()) { $xml->addChild('ewayCVN', $payment->getCcCid()); } return $xml; }