/** * 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); }