Example #1
0
 /**
  *  Building request array
  *
  *  @param    Varien_Object
  *  @return	  array
  */
 protected function _buildRequest(Varien_Object $payment)
 {
     $order = $payment->getOrder();
     $billing = $order->getBillingAddress();
     $streets = $billing->getStreet();
     $street = isset($streets[0]) && $streets[0] != '' ? $streets[0] : (isset($streets[1]) && $streets[1] != '' ? $streets[1] : '');
     $request = Mage::getModel('chronopay/gateway_request')->setOpcode($payment->getOpcode())->setProductId($this->getConfigData('product_id'));
     switch ($request->getOpcode()) {
         case self::OPCODE_CUSTOMER_FUND_TRANSFER:
             $request->setCustomer($order->getCustomerId())->setAmount(sprintf('%.2f', $payment->getAmount()))->setCurrency($order->getBaseCurrencyCode());
             break;
         case self::OPCODE_CHARGING:
         case self::OPCODE_REFUND:
         case self::OPCODE_AUTHORIZE:
         case self::OPCODE_VOID_AUTHORIZE:
             $request->setFname($billing->getFirstname())->setLname($billing->getLastname())->setCardholder($payment->getCcOwner())->setZip($billing->getPostcode())->setStreet($street)->setCity($billing->getCity())->setState($billing->getRegionModel()->getCode())->setCountry($billing->getCountryModel()->getIso3Code())->setEmail($order->getCustomerEmail())->setPhone($billing->getTelephone())->setIp($this->_getIp())->setCardNo($payment->getCcNumber())->setCvv($payment->getCcCid())->setExpirey($payment->getCcExpYear())->setExpirem(sprintf('%02d', $payment->getCcExpMonth()))->setAmount(sprintf('%.2f', $payment->getAmount()))->setCurrency($order->getBaseCurrencyCode());
             break;
         default:
             Mage::throwException(Mage::helper('chronopay')->__('Invalid operation code.'));
             break;
     }
     $request->setShowTransactionId(1);
     if ($this->getTransactionId()) {
         $request->setTransaction($this->getTransactionId());
     }
     $hash = $this->_getHash($request);
     $request->setHash($hash);
     return $request;
 }