/** * Update current token * * @param Varien_Object $billing * @param Varien_Object $infoInstance * @return Eway_Rapid31_Model_Request_Token */ public function updateToken(Varien_Object $billing, Varien_Object $infoInstance) { if (!Mage::helper('ewayrapid')->isBackendOrder() && !Mage::getSingleton('ewayrapid/config')->canEditToken()) { Mage::throwException(Mage::helper('ewayrapid')->__('Customers are not allowed to edit token.')); } // Empty Varien_Object's data $this->unsetData(); $customerParam = Mage::getModel('ewayrapid/field_customer'); $customerParam->setTitle($billing->getPrefix())->setFirstName($billing->getFirstname())->setLastName($billing->getLastname())->setCompanyName($billing->getCompany())->setJobDescription($billing->getJobDescription())->setStreet1($billing->getStreet1())->setStreet2($billing->getStreet2())->setCity($billing->getCity())->setState($billing->getRegion())->setPostalCode($billing->getPostcode())->setCountry(strtolower($billing->getCountryModel()->getIso2Code()))->setEmail($billing->getEmail())->setPhone($billing->getTelephone())->setMobile($billing->getMobile())->setFax($billing->getFax()); $customerHelper = Mage::helper('ewayrapid/customer'); $customerTokenId = $customerHelper->getCustomerTokenId($infoInstance->getSavedToken()); if ($customerTokenId) { $customerParam->setTokenCustomerID($customerTokenId); } else { Mage::throwException(Mage::helper('ewayrapid')->__('An error occurred while updating token: Token info does not exist.')); } $cardDetails = Mage::getModel('ewayrapid/field_cardDetails'); $cardDetails->setName($infoInstance->getCcOwner())->setExpiryMonth($infoInstance->getCcExpMonth())->setNumber('444433XXXXXX1111')->setExpiryYear($infoInstance->getCcExpYear())->setCVN($infoInstance->getCcCid()); $customerParam->setCardDetails($cardDetails); $this->setCustomer($customerParam); $response = $this->_doRapidAPI('Customer', 'PUT'); if ($response->isSuccess()) { $customerReturn = $response->getCustomer(); $customerReturn['RegionId'] = !$billing->getRegion() && $billing->getRegionId() ? $billing->getRegionId() : ''; unset($customerReturn['CardDetails']); $tokenInfo = array('Token' => $response->getTokenCustomerID(), 'Owner' => $infoInstance->getCcOwner(), 'ExpMonth' => $infoInstance->getCcExpMonth(), 'ExpYear' => $infoInstance->getCcExpYear(), 'Address' => Mage::getModel('ewayrapid/field_customer')->addData($customerReturn)); Mage::helper('ewayrapid/customer')->updateToken($infoInstance->getSavedToken(), $tokenInfo); return $this; } else { Mage::throwException(Mage::helper('ewayrapid')->__('An error occurred while updating token. Please try again. (Error message: %s)', $response->getMessage())); } }
/** * Assign data to info model instance * * @param mixed $data * @return Mage_Payment_Model_Info */ public function assignData($data) { if (!$data instanceof Varien_Object) { $data = new Varien_Object($data); } $info = $this->getInfoInstance(); if (Mage::getStoreConfig('payment/ewayrapid_general/connection_type') === Eway_Rapid31_Model_Config::CONNECTION_TRANSPARENT && !$this->_isBackendOrder) { $info->setTransparentSaved($data->getTransparentSaved()); } if ($data->getSavedToken() == Eway_Rapid31_Model_Config::TOKEN_NEW) { if ($this->_connectionType === Eway_Rapid31_Model_Config::CONNECTION_SHARED_PAGE && !$this->_isBackendOrder) { Mage::getSingleton('core/session')->setData('newToken', 1); } $info->setIsNewToken(true); } else { if ($this->_connectionType === Eway_Rapid31_Model_Config::CONNECTION_SHARED_PAGE && !$this->_isBackendOrder) { Mage::getSingleton('core/session')->setData('editToken', $data->getSavedToken()); } $info->setSavedToken($data->getSavedToken()); // Update token if ($data->getCcOwner()) { $info->setIsUpdateToken(true); } } parent::assignData($data); Mage::helper('ewayrapid')->serializeInfoInstance($info); return $this; }
/** * Assign data to info model instance * * @param mixed $data * @return Mage_Payment_Model_Info */ public function assignData($data) { if (!$data instanceof Varien_Object) { $data = new Varien_Object($data); } $info = $this->getInfoInstance(); if (!$this->_isBackendOrder && $this->_connectionType === Eway_Rapid31_Model_Config::CONNECTION_SHARED_PAGE) { //Mage::getSingleton('core/session')->setData('sharedpagePaypal', $data->getSharedpageNotsaved()); Mage::getSingleton('core/session')->setData('sharedpagePaypal', 'paypal'); } elseif (!$this->_isBackendOrder && $this->_connectionType === Eway_Rapid31_Model_Config::CONNECTION_TRANSPARENT) { $info->setTransparentNotsaved($data->getTransparentNotsaved()); //Option choice if ($data->getMethod() == 'ewayrapid_saved' && !$data->getTransparentSaved()) { Mage::throwException(Mage::helper('payment')->__('Please select an option payment for eWay saved')); } elseif ($data->getMethod() == 'ewayrapid_notsaved' && !$data->getTransparentNotsaved()) { Mage::throwException(Mage::helper('payment')->__('Please select an option payment for eWay not saved')); } //New Token if ($data->getMethod() == 'ewayrapid_saved' && $data->getTransparentSaved() == Eway_Rapid31_Model_Config::PAYPAL_STANDARD_METHOD && $data->getSavedToken() == Eway_Rapid31_Model_Config::TOKEN_NEW && Mage::helper('ewayrapid/customer')->checkTokenListByType(Eway_Rapid31_Model_Config::PAYPAL_STANDARD_METHOD)) { Mage::throwException(Mage::helper('payment')->__('You could only save one PayPal account, please select PayPal account existed to payent.')); } if ($data->getTransparentNotsaved()) { Mage::getSingleton('core/session')->setTransparentNotsaved($data->getTransparentNotsaved()); } if ($data->getTransparentSaved()) { Mage::getSingleton('core/session')->setTransparentSaved($data->getTransparentSaved()); } if ($data->getMethod()) { Mage::getSingleton('core/session')->setMethod($data->getMethod()); } if ($data->getSavedToken()) { Mage::getSingleton('core/session')->setSavedToken($data->getSavedToken()); if (is_numeric($data->getSavedToken())) { $token = Mage::helper('ewayrapid/customer')->getTokenById($data->getSavedToken()); /* @var Eway_Rapid31_Model_Request_Token $model */ $model = Mage::getModel('ewayrapid/request_token'); $type = $model->checkCardName($token); Mage::getSingleton('core/session')->setTransparentSaved($type); unset($model); unset($token); } } $infoCard = new Varien_Object(); Mage::getSingleton('core/session')->setInfoCard($infoCard->setCcType($data->getCcType())->setOwner($data->getCcOwner())->setLast4($this->_isClientSideEncrypted($data->getCcNumber()) ? 'encrypted' : substr($data->getCcNumber(), -4))->setCard($data->getCcNumber())->setNumber($data->getCcNumber())->setCid($data->getCcCid())->setExpMonth($data->getCcExpMonth())->setExpYear($data->getCcExpYear())); } else { $info->setCcType($data->getCcType())->setCcOwner($data->getCcOwner())->setCcLast4($this->_isClientSideEncrypted($data->getCcNumber()) ? 'encrypted' : substr($data->getCcNumber(), -4))->setCcNumber($data->getCcNumber())->setCcCid($data->getCcCid())->setCcExpMonth($data->getCcExpMonth())->setCcExpYear($data->getCcExpYear()); } return $this; }