} $method = __paramInit('string', 'm', null, null); $bodyRaw = file_get_contents('php://input'); if (empty($bodyRaw)) { exit; } $xml = simplexml_load_string($bodyRaw); $json = json_encode($xml); $decodedArray = json_decode($json, true); $is_fail = false; $clientOrderId = @$decodedArray['@attributes']['clientOrderId']; if (!$clientOrderId) { $is_fail = true; } $converter = new Array2XML(); $converter->setConvertFromEncoding('windows-1251'); $converter->setTopNodeName($method . 'Response'); if ($is_fail) { $converter->importArray(array('clientOrderId' => $clientOrderId, 'status' => 3, 'error' => 41, 'processedDT' => date('c'))); echo $converter->saveXml(); } switch ($method) { case 'testDeposition': /* * <?xml version="1.0" encoding="UTF-8"?> * <testDepositionResponse clientOrderId="12345" status="0" processedDT="2011-07-01T20:38:01.000Z"/> */ $converter->importArray(array('@attributes' => array('clientOrderId' => $clientOrderId, 'status' => 0, 'processedDT' => date('c')))); break; case 'makeDeposition': /*
/** * @param string $uri * @param string $params * @return OriginalServerResponse */ private function makePostCurlRequest($uri, $params) { $cmd = key($params); $params = current($params); $converter = new Array2XML(); $converter->setConvertFromEncoding('windows-1251'); $converter->setTopNodeName($cmd); $converter->importArray($params); $data = $converter->saveXml(); $crypt = $this->getCryptOption(); if ($crypt) { $cryptBlock = new CryptBlock($crypt); $encryptData = $cryptBlock->encrypt($data); } else { $encryptData = $data; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/log.php"; $log = new \log('reserves_payout/' . SERVER . '-%d%m%Y.log'); $log->writeln(PHP_EOL . PHP_EOL); $log->writeln('[' . date('d.m.Y H:i:s') . ']'); $log->writeln($data); $headers = $this->prepareRequestHeaders(); $curl = curl_init($uri); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); if ($crypt) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSLCERT, $crypt['encrypt_cert_path']); curl_setopt($curl, CURLOPT_SSLKEY, $crypt['private_key_path']); curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $crypt['passphrase']); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl, CURLOPT_TIMEOUT, 80); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $encryptData); //$this->writeMessageToLogFile($this->prepareLogMessage($uri, $params)); $responseRaw = curl_exec($curl); $errorCode = curl_errno($curl); $errorMessage = curl_error($curl); $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); $responseHeaderSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $responseHeadersRaw = trim(substr($responseRaw, 0, $responseHeaderSize)); $responseBodyRaw = trim(substr($responseRaw, $responseHeaderSize)); curl_close($curl); if ($responseCode == 200) { if ($crypt && $cryptBlock->isReqDecrypt()) { $responseBodyRaw = $cryptBlock->decrypt($responseBodyRaw); } $log->writeln($responseBodyRaw); } /* $this->writeMessageToLogFile( $this->prepareLogMessageExtended($uri, $params, $responseCode, $errorCode, $errorMessage) ); */ $this->originalServerResponse = new OriginalServerResponse(); $this->originalServerResponse->setCode($responseCode); $this->originalServerResponse->setHeadersRaw($responseHeadersRaw); $this->originalServerResponse->setBodyRaw($responseBodyRaw); $this->originalServerResponse->setErrorCode($errorCode); $this->originalServerResponse->setErrorMessage($errorMessage); }