Пример #1
0
 /**
  * @param HttpRequest $httpRequest
  * @param boolean $onlyAllowHttps
  *
  * @return HttpResponse
  */
 public function execute($httpRequest, $onlyAllowHttps = true)
 {
     $url = $httpRequest->getUrl();
     $post = $httpRequest->getMethod() == HttpRequest::METH_POST ? 1 : 0;
     $xml = $httpRequest->getBody();
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, $post);
     curl_setopt($ch, CURLOPT_USERAGENT, "realex sdk version 0.1");
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $this->connectTimeout);
     curl_setopt($ch, CURLOPT_TIMEOUT_MS, $this->socketTimeout);
     if ($onlyAllowHttps === false) {
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     }
     $responseXml = curl_exec($ch);
     $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     $errorNumber = curl_errno($ch);
     if ($errorNumber) {
         $this->logger->error("Exception communicating with Realex. Error number: " . $errorNumber . ". Description: " . curl_error($ch));
         curl_close($ch);
         throw new RealexException("Exception communicating with Realex");
     }
     curl_close($ch);
     $response = new HttpResponse();
     $response->setResponseCode($statusCode);
     $response->setBody($responseXml);
     return $response;
 }
Пример #2
0
 /**
  * Test sending a message, expecting an exception due to failure response.
  *
  */
 public function testSendMessageFailure404()
 {
     // Dummy and Mock required objects
     $statusCode = 404;
     $this->setExpectedException("com\\realexpayments\\remote\\sdk\\RealexException", "Exception communicating with Realex");
     try {
         $endpoint = 'https://some-test-endpoint';
         $onlyAllowHttps = true;
         $xml = "<element>test response xml</element>";
         $httpResponse = new HttpResponse();
         $httpResponse->setResponseCode($statusCode);
         $httpResponse->setBody($xml);
         /** @var HttpConfiguration $configurationMock */
         $configurationMock = \Phockito::mock("com\\realexpayments\\remote\\sdk\\http\\HttpConfiguration");
         \Phockito::when($configurationMock->getEndPoint())->return($endpoint);
         \Phockito::when($configurationMock->isOnlyAllowHttps())->return($onlyAllowHttps);
         /** @var HttpClient $httpClientMock */
         $httpClientMock = \Phockito::mock("com\\realexpayments\\remote\\sdk\\http\\HttpClient");
         /** @var HttpRequest $anything */
         \Phockito::when($httpClientMock->execute(\Hamcrest_Core_IsAnything::anything(), \Hamcrest_Core_IsAnything::anything()))->return($httpResponse);
         // execute the method
         $response = HttpUtils::sendMessage($xml, $httpClientMock, $configurationMock);
     } catch (RealexException $e) {
         throw $e;
     } catch (Exception $e) {
         $this->fail("Unexpected exception:" . $e->getMessage());
     }
 }