/** * Send request and parse response * * @param Axis_Object $request * @return Axis_Object */ protected function _postRequest(Axis_Object $request) { $result = new Axis_Object(); $httpClient = new Zend_Http_Client(); $httpClient->setUri($this->_config->gateway); $httpClient->setConfig(array('maxredirects' => 0, 'timeout' => 30)); $params = array_diff_key($request->getData(), array_fill_keys(array('anet_trans_type', 'last_trans_id', 'cc_trans_id'), 1)); $httpClient->setParameterPost($params); $httpClient->setMethod(Zend_Http_Client::POST); try { $response = $httpClient->request()->getBody(); } catch (Exception $e) { $message = $e->getCode() . 'Gateway request error: ' . $e->getMessage(); $this->log($message); throw new Axis_Exception($message); } $r = explode(',', $response); if (!$r) { throw new Axis_Exception('Error in payment gateway'); } $result->setResponseCode((int) str_replace('"', '', $r[0]))->setResponseSubcode((int) str_replace('"', '', $r[1]))->setResponseReasonCode((int) str_replace('"', '', $r[2]))->setResponseReasonText($r[3])->setApprovalCode($r[4])->setAvsResultCode($r[5])->setTransactionId($r[6])->setInvoiceNumber($r[7])->setDescription($r[8])->setAmount($r[9])->setMethod($r[10])->setTransactionType($r[11])->setCustomerId($r[12])->setMd5Hash($r[37])->setCardCodeResponseCode($r[39]); return $result; }