Beispiel #1
0
 /**
  * Получаем уведомление
  */
 public function receiving()
 {
     // Проверяем что уведомление действительно от PayQR (по секретному ключу SecretKeyIn)
     payqr_logs::log('payqr_receiver::receiving()');
     if (!payqr_authentication::checkHeader(payqr_config::$secretKeyIn)) {
         // если уведомление пришло не от PayQR, вызываем исключение
         throw new payqr_exeption("Неверный параметр ['PQRSecretKey'] в header уведомления", 1);
     }
     // Получаем данные из тела запроса
     $json = file_get_contents('php://input');
     // Проверяем валидность JSON данных
     payqr_json_validator::validate($json);
     // Получаем объект события из уведомления
     $this->objectEvent = json_decode($json);
     // Проверяем наличие свойства типа объекта
     if (!isset($this->objectEvent->object) || !isset($this->objectEvent->id) || !isset($this->objectEvent->type)) {
         throw new payqr_exeption("В уведомлении отстутствуют обязательные параметры object id type", 1, $json);
     }
     // Сохраняем тип уведомления
     $this->type = $this->objectEvent->type;
     payqr_logs::log("invoice.type: " . $this->type);
     // В зависимости от того какого типа уведомление, создаем объект
     switch ($this->objectEvent->data->object) {
         case 'invoice':
             $this->objectOrder = new payqr_invoice($this->objectEvent->data, $this->objectEvent->livemode);
             break;
         case 'revert':
             $this->objectOrder = new payqr_revert($this->objectEvent->data, $this->objectEvent->livemode);
             break;
         default:
             throw new payqr_exeption("В уведомлении отстутствуют обязательные параметры object id type", 1, $json);
             return false;
     }
     payqr_logs::log("Идентификатор счета на оплату: " . $this->objectEvent->id);
     // если все прошло успешно, возвращаем идентификатор счета на оплату
     return $this->objectEvent->id;
 }
 /**
  * Проверяем ответ от PayQR на отправленный запрос в PayQR
  */
 private function check_response(payqr_curl_response $response)
 {
     // Проверяем что ответ не пустой
     if (empty($response)) {
         throw new payqr_exeption("Получен пустой ответ", 0);
     }
     // Проверяем код ответа
     if (!isset($response->headers['Status-Code'])) {
         throw new payqr_exeption("Отсутствует заголовок с кодом ответа " . print_r($response, true), 0, $response);
     }
     // Проверяем код ответа
     if ($response->headers['Status-Code'] != '200' && $response->headers['Status-Code'] != '100') {
         $r = json_decode($response->body);
         // получаем сообщение ошибки от PayQr
         if (isset($r->message)) {
             $this->error_message[] = $r->message;
         }
         throw new payqr_exeption("Получен ответ с кодом ошибки " . $response->headers['Status-Code'] . " " . print_r($response, true), 0, $response);
     }
     // Проверяем заголовок ответа
     if (!payqr_authentication::checkHeader(payqr_config::$secretKeyIn, $response->headers)) {
         throw new payqr_exeption("Неверный параметр ['PQRSecretKey'] в headers ответа" . print_r($response, true), 0, $response);
     }
 }