Example #1
0
 /**
  * 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;
 }
 /**
  * @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;
 }
Example #3
0
 /**
  * Place an order with authorization or capture action
  *
  * @param Mage_Sales_Model_Order_Payment $payment
  * @param float $amount
  * @return Mage_Paypal_Model_Direct
  */
 protected function _placeOrder(Mage_Sales_Model_Order_Payment $payment, $amount)
 {
     $order = $payment->getOrder();
     $api = $this->_pro->getApi()->setPaymentAction($this->_pro->getConfig()->paymentAction)->setIpAddress(Mage::app()->getRequest()->getClientIp(false))->setAmount($amount)->setCurrencyCode($order->getBaseCurrencyCode())->setInvNum($order->getIncrementId())->setEmail($order->getCustomerEmail())->setNotifyUrl(Mage::getUrl('paypal/ipn/'))->setCreditCardType($payment->getCcType())->setCreditCardNumber($payment->getCcNumber())->setCreditCardExpirationDate($this->_getFormattedCcExpirationDate($payment->getCcExpMonth(), $payment->getCcExpYear()))->setCreditCardCvv2($payment->getCcCid())->setMaestroSoloIssueNumber($payment->getCcSsIssue());
     if ($payment->getCcSsStartMonth() && $payment->getCcSsStartYear()) {
         $year = sprintf('%02d', substr($payment->getCcSsStartYear(), -2, 2));
         $api->setMaestroSoloIssueDate($this->_getFormattedCcExpirationDate($payment->getCcSsStartMonth(), $year));
     }
     if ($this->getIsCentinelValidationEnabled()) {
         $this->getCentinelValidator()->exportCmpiData($api);
     }
     // add shipping and billing addresses
     if ($order->getIsVirtual()) {
         $api->setAddress($order->getBillingAddress())->setSuppressShipping(true);
     } else {
         $api->setAddress($order->getShippingAddress());
         $api->setBillingAddress($order->getBillingAddress());
     }
     // add line items
     $api->setPaypalCart(Mage::getModel('paypal/cart', array($order)))->setIsLineItemsEnabled($this->_pro->getConfig()->lineItemsEnabled);
     // call api and import transaction and other payment information
     $api->callDoDirectPayment();
     $this->_importResultToPayment($api, $payment);
     try {
         $api->callGetTransactionDetails();
     } catch (Mage_Core_Exception $e) {
         // if we recieve errors, but DoDirectPayment response is Success, then set Pending status for transaction
         $payment->setIsTransactionPending(true);
     }
     $this->_importResultToPayment($api, $payment);
     return $this;
 }
Example #4
0
 /**
  * Place an order with authorization or capture action
  *
  * @param Mage_Sales_Model_Order_Payment $payment
  * @param float $amount
  * @return Mage_Paypal_Model_Direct
  */
 protected function _placeOrder(Mage_Sales_Model_Order_Payment $payment, $amount)
 {
     $order = $payment->getOrder();
     $api = $this->_pro->getApi()->setPaymentAction($this->_pro->getConfig()->paymentAction)->setIpAddress(Mage::app()->getRequest()->getClientIp(false))->setAmount($amount)->setCurrencyCode($order->getBaseCurrencyCode())->setInvNum($order->getIncrementId())->setEmail($order->getCustomerEmail())->setNotifyUrl(Mage::getUrl('paypal/ipn/direct'))->setCreditCardType($payment->getCcType())->setCreditCardNumber($payment->getCcNumber())->setCreditCardExpirationDate(sprintf('%02d%02d', $payment->getCcExpMonth(), $payment->getCcExpYear()))->setCreditCardCvv2($payment->getCcCid());
     // add shipping address
     if ($order->getIsVirtual()) {
         $api->setAddress($order->getBillingAddress())->setSuppressShipping(true);
     } else {
         $api->setAddress($order->getShippingAddress());
     }
     // add line items
     if ($this->_pro->getConfig()->lineItemsEnabled) {
         list($items, $totals) = Mage::helper('paypal')->prepareLineItems($order);
         $api->setLineItems($items)->setLineItemTotals($totals);
     }
     // call api and import transaction and other payment information
     $api->callDoDirectPayment();
     $payment->setTransactionId($api->getTransactionId())->setIsTransactionClosed(0)->setIsPaid($api->isPaid($api->getPaymentStatus()));
     Mage::getModel('paypal/info')->importToPayment($api, $payment);
     return $this;
 }
 /**
  * Place an order with authorization or capture action
  *
  * @param Mage_Sales_Model_Order_Payment $payment
  * @param float $amount
  * @return Mage_Paypal_Model_Direct
  */
 protected function _placeOrder(Mage_Sales_Model_Order_Payment $payment, $amount)
 {
     $order = $payment->getOrder();
     $api = $this->_pro->getApi()->setPaymentAction($this->_pro->getConfig()->paymentAction)->setIpAddress(Mage::app()->getRequest()->getClientIp(false))->setAmount($amount)->setCurrencyCode($order->getBaseCurrencyCode())->setInvNum($order->getIncrementId())->setEmail($order->getCustomerEmail())->setNotifyUrl(Mage::getUrl($this->_notifyAction))->setCreditCardType($payment->getCcType())->setCreditCardNumber($payment->getCcNumber())->setCreditCardExpirationDate(sprintf('%02d%02d', $payment->getCcExpMonth(), $payment->getCcExpYear()))->setCreditCardCvv2($payment->getCcCid())->setMaestroSoloIssueNumber($payment->getCcSsIssue());
     if ($payment->getCcSsStartMonth() && $payment->getCcSsStartYear()) {
         $api->setMaestroSoloIssueDate(sprintf('%02d%02d', $payment->getCcSsStartMonth(), preg_replace('~\\d\\d(\\d\\d)~', '$1', $payment->getCcSsStartYear())));
     }
     if ($this->getIsCentinelValidationEnabled()) {
         $this->getCentinelValidator()->exportCmpiData($api);
     }
     // add shipping address
     if ($order->getIsVirtual()) {
         $api->setAddress($order->getBillingAddress())->setSuppressShipping(true);
     } else {
         $api->setAddress($order->getShippingAddress());
     }
     // add line items
     if ($this->_pro->getConfig()->lineItemsEnabled && Mage::helper('paypal')->doLineItemsMatchAmount($order, $amount)) {
         //For transfering line items order amount must be equal to cart total amount
         list($items, $totals) = Mage::helper('paypal')->prepareLineItems($order);
         $api->setLineItems($items)->setLineItemTotals($totals);
     }
     // call api and import transaction and other payment information
     $api->callDoDirectPayment();
     $this->_importResultToPayment($api, $payment);
     return $this;
 }
 /**
  * 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;
 }
Example #7
0
 /**
  * @param Mage_Sales_Model_Order_Payment $payment
  * @param float $amount
  * @return array|false
  */
 protected function callDoRefund($payment, $amount)
 {
     // Build the XML request
     $xml = new SimpleXMLElement('<ewaygateway></ewaygateway>');
     $xml->addChild('ewayCustomerID', $this->getCustomerId());
     $xml->addChild('ewayTotalAmount', $this->getFormattedAmount($amount));
     $xml->addChild('ewayCardExpiryMonth', $payment->getCcExpMonth());
     $xml->addChild('ewayCardExpiryYear', substr($payment->getCcExpYear(), 2, 2));
     $xml->addChild('ewayOriginalTrxnNumber', $this->getOriginalTransactionId($payment->getLastTransId()));
     $xml->addChild('ewayRefundPassword', $this->getRefundPassword());
     $xml->addChild('ewayOption1', '');
     $xml->addChild('ewayOption2', '');
     $url = $this->getApiRefundUrl();
     // Convert to string before sending to the gateway
     return $this->call($xml->asXML(), $url);
 }