Пример #1
0
 /**
  * Получаем уведомление
  */
 public function receive()
 {
     // Получаем данные из тела запроса
     $json = file_get_contents('php://input');
     // логируем тело запроса
     PayqrLog::log("REQUEST\n" . $json);
     // Проверяем валидность JSON данных
     PayqrJsonValidator::validate($json);
     // Получаем объект события из уведомления
     $this->objectEvent = json_decode($json);
     // Проверяем что уведомление действительно от PayQR (по секретному ключу SecretKeyIn)
     if (!PayqrAuth::checkHeader(PayqrConfig::$secretKeyIn)) {
         // если уведомление пришло не от PayQR, вызываем исключение
         throw new PayqrExeption("Неверный параметр ['PQRSecretKey'] в header уведомления", 1);
     }
     // Проверяем наличие свойства типа объекта
     if (!isset($this->objectEvent->object) || !isset($this->objectEvent->id) || !isset($this->objectEvent->type)) {
         throw new PayqrExeption("В уведомлении отстутствуют обязательные параметры object, id, type", 1, $json);
     }
     $this->event = $this->objectEvent->type;
     $this->type = $this->objectEvent->data->object;
     PayqrLog::log("Тип события: " . $this->event . "\nИдентификатор события: " . $this->objectEvent->data->id);
     // В зависимости от того какого типа уведомление, создаем объект
     switch ($this->type) {
         case self::INVOICE:
             $this->objectHandler = new PayqrInvoice($this->objectEvent);
             break;
         case self::REVERT:
             $this->objectHandler = new PayqrRevert($this->objectEvent);
             break;
         case self::OFFER:
             $this->objectHandler = new PayqrOffer($this->objectEvent);
             break;
         case self::RECEIPT:
             $this->objectHandler = new PayqrReceipt($this->objectEvent);
             break;
         default:
             throw new PayqrExeption("В уведомлении отстутствуют обязательные параметры object id type", 1, $json);
             return;
     }
     // если все прошло успешно, возвращаем объект
     return $this->objectHandler;
 }
Пример #2
0
 private function getObject()
 {
     PayqrJsonValidator::validate($this->request->body);
     return json_decode($this->request->body);
 }