public static function submit($url, $params)
 {
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_HEADER, 1);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
     if (defined('__GIROSOLUTION_SDK_CERT__')) {
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
         curl_setopt($ch, CURLOPT_CAINFO, str_replace('\\', '/', __GIROSOLUTION_SDK_CERT__));
     }
     // if(defined('__GIROSOLUTION_SDK_SSL_VERIFY_OFF__') && __GIROSOLUTION_SDK_SSL_VERIFY_OFF__) {
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
     // }
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
     }
     $result = curl_exec($ch);
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         GiroCheckout_SDK_Debug_helper::getInstance()->logRequest(curl_getinfo($ch), $params);
     }
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         GiroCheckout_SDK_Debug_helper::getInstance()->logReply($result, curl_error($ch));
     }
     if ($result === false) {
         throw new Exception('cURL: submit failed.');
     }
     curl_close($ch);
     return self::getHeaderAndBody($result);
 }
 public function __construct($message = null, $code = 0)
 {
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         GiroCheckout_SDK_Debug_helper::getInstance()->LogException($message);
     }
     parent::__construct($message, $code);
 }
 public function writeLog($string)
 {
     $path = str_replace('\\', '/', __GIROCHECKOUT_SDK_DEBUG_LOG_PATH__);
     if (!is_dir($path)) {
         if (!mkdir($path)) {
             throw new Exception('Log directory does not exist. Please create directory: ' . $path . '.');
         }
         $htfp = fopen($path . '/.htaccess', 'w');
         fwrite($htfp, "Order allow,deny\nDeny from all");
         fclose($htfp);
     }
     if (!self::$fp) {
         self::$fp = fopen($path . self::$logFileName, 'a');
         if (!self::$fp) {
             throw new Exception('Log File (' . $path . self::$logFileName . ') is not writeable.');
         }
     }
     fwrite(self::$fp, $string);
 }
 /**
  * Submits the request to the GiroCheckout API by using the given request method. Uses all given and needed
  * params in the correct order.
  *
  * @return boolean
  */
 public function submit()
 {
     $header = array();
     $body = '';
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         GiroCheckout_SDK_Debug_helper::getInstance()->logParamsSet($this->params);
     }
     try {
         $submitParams = $this->requestMethod->getSubmitParams($this->params);
         if ($this->requestMethod->needsHash()) {
             $submitParams['hash'] = GiroCheckout_SDK_Hash_helper::getHMACMD5Hash($this->secret, $submitParams);
         }
         $submitParams['sourceId'] = $this->getHostSourceId() . ';' . __GIROCHECKOUT_SDK_VERSION__ . ';';
         if (isset($this->params['sourceId'])) {
             $submitParams['sourceId'] .= $this->params['sourceId'];
         } else {
             $submitParams['sourceId'] .= ';';
         }
         list($header, $body) = GiroCheckout_SDK_Curl_helper::submit($this->requestMethod->getRequestURL(), $submitParams);
         $response = GiroCheckout_SDK_curl_helper::getJSONResponseToArray($body);
         if ($response['rc'] == 5000 || $response['rc'] == 5001) {
             throw new GiroCheckout_SDK_Exception_helper('authentication failure');
         } elseif (!isset($header['hash'])) {
             throw new GiroCheckout_SDK_Exception_helper('hash in response is missing');
         } elseif (isset($header['hash']) && $header['hash'] !== GiroCheckout_SDK_Hash_helper::getHMACMD5HashString($this->secret, $body)) {
             throw new GiroCheckout_SDK_Exception_helper('hash mismatch in response');
         } else {
             $this->response = $this->requestMethod->checkResponse($response);
             if (__GIROCHECKOUT_SDK_DEBUG__) {
                 GiroCheckout_SDK_Debug_helper::getInstance()->logReplyParams($this->response);
             }
         }
     } catch (Exception $e) {
         throw new GiroCheckout_SDK_Exception_helper('Failure: ' . $e->getMessage() . "\n" . implode("\r\n", $header) . $body);
     }
     return TRUE;
 }
 public function sendOtherStatus()
 {
     if (__GIROCHECKOUT_SDK_DEBUG__) {
         GiroCheckout_SDK_Debug_helper::getInstance()->logNotificationInput('sendOtherStatus');
     }
     header('HTTP/1.1 404 Not Found');
 }