コード例 #1
0
 /**
  * Проверяем header уведомлений и ответов от PayQR на соответствие значению SecretKeyIn
  *
  * @param $secretKeyIn
  * @return bool
  */
 public static function checkHeader($secretKeyIn, $headers = false)
 {
     if (!payqr_config::$checkHeader) {
         return true;
     }
     if (!$headers) {
         if (!function_exists('getallheaders')) {
             $headers = payqr_base::getallheaders();
         } else {
             $headers = getallheaders();
         }
     }
     if (!$headers) {
         header("HTTP/1.0 404 Not Found");
         payqr_logs::log("Не удалось выполнить проверку входящего секретного ключа SecretKeyIn, отсутствует headers", __FILE__ . " " . __METHOD__, __LINE__);
         return false;
     }
     // Проверяем соответствие пришедшего значения поля PQRSecretKey значению SecretKeyIn из конфигурации библиотеки
     if (isset($headers['PQRSecretKey']) && $headers['PQRSecretKey'] == $secretKeyIn) {
         return true;
     }
     foreach ($headers as $key => $header) {
         $headers[strtolower($key)] = $header;
     }
     if (isset($headers['pqrsecretkey']) && $headers['pqrsecretkey'] == $secretKeyIn) {
         return true;
     }
     header("HTTP/1.0 404 Not Found");
     payqr_logs::log("Входящий секретный ключ из headers не совпадает с входящим ключом из файла конфигурации \n\r Текущее значение SecretKeyIn из вашего payqr_config.php: " . $secretKeyIn . " \n\r Содержание headers полученного уведомления от PayQR: " . print_r($headers, true), __FILE__ . " " . __METHOD__, __LINE__);
     return false;
 }
コード例 #2
0
ファイル: payqr_receiver.php プロジェクト: rakot9/modx_payqr
 public function __construct()
 {
     payqr_base::checkConfig();
     $this->objectResponse = false;
     $this->objectOrder = false;
     $this->orderId = 0;
     $this->errors = array();
 }
コード例 #3
0
ファイル: payqr_no_curl.php プロジェクト: rakot9/modx_payqr
 /**
  * Отправка POST-запроса
  * @param $url
  * @param $postdata
  * @return bool|payqr_curl_response
  */
 public function post($url, $postdata)
 {
     if (is_array($postdata)) {
         $postdata = payqr_base::http_build_query($postdata, '', '&');
     }
     $url_obj = parse_url($url);
     if (!isset($url_obj['host'])) {
         payqr_logs::log(__FILE__ . "\n\r" . __METHOD__ . "\n\r L:" . __LINE__ . "\n\r" . " Неверный параметр url: " . $url . " не удалось определить host для запроса");
         return false;
     }
     $host = $url_obj['host'];
     $errno = "";
     $errstr = "";
     $fp = fsockopen("ssl://" . $host, 443, &$errno, &$errstr, intval(payqr_config::$maxTimeOut));
     if (!$fp) {
         payqr_logs::log(__FILE__ . "\n\r" . __METHOD__ . "\n\r L:" . __LINE__ . "\n\r" . 'Ошибка при запросе ' . $url . ' ' . $errstr($errno) . "\n");
     } else {
         $out = "POST {$url} HTTP/1.1\r\n";
         $out .= "User-Agent: PayQr Lib\r\n";
         $out .= "Host: {$host}\r\n";
         $out .= "Accept: */*\r\n";
         if (is_array($this->headers)) {
             foreach ($this->headers as $key => $value) {
                 $out .= "{$key}: {$value}\r\n";
             }
         }
         $out .= "Connection: Close\r\n\r\n";
         $out .= "{$postdata}\n\n";
         $out .= "\r\n";
         fwrite($fp, $out);
         $output = "";
         while (!feof($fp)) {
             $output .= fgets($fp, 1024);
         }
         fclose($fp);
         $response = false;
         if ($output) {
             $response = new payqr_curl_response($output);
         } else {
             payqr_logs::log(__FILE__ . "\n\r" . __METHOD__ . "\n\r L:" . __LINE__ . "\n\r" . 'Ошибка при запросе ' . $url . ' пустой или неправильный ответ ' . print_r($output, true) . "\n");
         }
         return $response;
     }
 }
コード例 #4
0
ファイル: payqr_logs.php プロジェクト: rakot9/modx_payqr
 /**
  * Добавление записи в лог файл
  *
  * @param $file
  * @param $message
  */
 public static function log($message, $file_name = false, $line = false)
 {
     $micro_date = microtime();
     $date_array = explode(" ", $micro_date);
     $date = date("Y-m-d H:i:s", $date_array[1]);
     $message = mb_convert_encoding($message, 'utf-8', mb_detect_encoding($message));
     $message = html_entity_decode($message, ENT_NOQUOTES, 'UTF-8');
     $message = payqr_base::encode($message);
     if (!payqr_config::$enabledLog) {
         return;
     }
     if ($file_name && $line) {
         @file_put_contents(payqr_config::$logFile, "\r\n==============" . $date . " " . $date_array[0] . "==============\r\n", FILE_APPEND);
         @file_put_contents(payqr_config::$logFile, "\r\n====" . $file_name . " Line: " . $line . "=====\r\n", FILE_APPEND);
     } else {
         @file_put_contents(payqr_config::$logFile, "\r\n==============" . $date . " " . $date_array[0] . "==============\r\n", FILE_APPEND);
     }
     @file_put_contents(payqr_config::$logFile, $message, FILE_APPEND);
 }