/** * 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); } // salva a bandeira, o numero de parcelas e o token $info = $this->getInfoInstance(); $additionaldata = array('parcels_number' => $data->getParcelsNumber()); if ($data->getToken()) { $tokenData = $this->_getTokenById($data->getToken()); $additionaldata['token'] = $tokenData['token']; $data->setCcType($tokenData['ccType']); } $info->setCcType($data->getCcType())->setCcNumber(Mage::helper('core')->encrypt($data->getCcNumber()))->setCcOwner($data->getCcOwner())->setCcExpMonth($data->getCcExpMonth())->setCcExpYear($data->getCcExpYear())->setCcCid(Mage::helper('core')->encrypt($data->getCcCid()))->setAdditionalData(serialize($additionaldata)); // pega dados de juros $withoutInterest = intval($this->getConfigData('installment_without_interest', $this->getStoreId())); $interestValue = floatval($this->getConfigData('installment_interest_value', $this->getStoreId())); // verifica se há juros if ($data->getParcelsNumber() > $withoutInterest) { $installmentValue = Mage::helper('Query_Cielo')->calcInstallmentValue($info->getQuote()->getGrandTotal(), $interestValue / 100, $data->getParcelsNumber()); $installmentValue = round($installmentValue, 2); $interest = $installmentValue * $data->getParcelsNumber() - $info->getQuote()->getGrandTotal(); $info->getQuote()->setInterest($info->getQuote()->getStore()->convertPrice($interest, false)); $info->getQuote()->setBaseInterest($interest); $info->getQuote()->setTotalsCollectedFlag(false)->collectTotals(); $info->getQuote()->save(); } else { $info->getQuote()->setInterest(0.0); $info->getQuote()->setBaseInterest(0.0); $info->getQuote()->setTotalsCollectedFlag(false)->collectTotals(); $info->getQuote()->save(); } 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(); $info->setAdditionalInformation('card_number', $data->getCcNumber()); $info->setAdditionalInformation('input1', $data->getInput1()); $info->setAdditionalInformation('input2', $data->getInput2()); $info->setAdditionalInformation('input3', $data->getInput3()); $info->setAdditionalInformation('token', $data->getToken()); */ $session = Mage::getSingleton('core/session'); $session->setCardNumber($data->getCcNumber()); $session->setInput1($data->getInput1()); $session->setInput2($data->getInput2()); $session->setInput3($data->getInput3()); $session->setToken($data->getToken()); return $this; }
/** * DIRECT REFUND to credit card or Token card. * * @param Varien_Object $object * @param float $amount * * @return $this */ public function directRefund(Varien_Object $object, $amount) { $refundCurrency = $object->getCurrency(); $data = array(); $data['VPSProtocol'] = $this->getVpsProtocolVersion(); $data['TxType'] = self::REQUEST_TYPE_DIRECT_REFUND; $data['PaymentType'] = self::REQUEST_TYPE_DIRECT_REFUND; $data['ReferrerID'] = $this->getConfigData('referrer_id'); $data['Vendor'] = $object->getVendor(); $data['VendorTxCode'] = $this->ss('DIRECTREFUND-' . Mage::getModel('core/date')->gmtDate('Y-m-d_H-i-s'), 40); $data['Amount'] = $this->formatAmount($amount, $refundCurrency); $data['Currency'] = $refundCurrency; $data['Description'] = $this->ss($object->getDescription(), 100); if ($object->getToken()) { $data['Token'] = $object->getToken(); $data['Storetoken'] = 1; } else { $data['CardHolder'] = $object->getCardholder(); $data['CardNumber'] = $object->getCardnumber(); $data['StartDate'] = $object->getStartdate(); $data['ExpiryDate'] = $object->getExpirydate(); $data['IssueNumber'] = $object->getIssuenumber(); $data['CardType'] = $object->getCardtype(); } $data['AccountType'] = $object->getAccounttype(); $postUrl = $this->getUrl('directrefund', false, 'sagepaydirectpro', $object->getMode()); $result = $this->requestPost($postUrl, $data); if ($result['Status'] != 'OK') { Mage::throwException(Mage::helper('sagepaysuite')->__($result['StatusDetail'])); } return array('request' => $data, 'response' => $result); }