/** * процессинг по запросу pay * подтверждает транзакцию на оплату по ранее созданной записи */ private function processPayRequest() { // может быть уже была оплата, сразу ответим "ок" $pay = PaymentCloud::whereCustomerId($this->params['customer_id'])->wherePaymentId($this->params['payment_id'])->whereWaiting(0)->first(); if ($pay) { $this->responseSuccess(); } // такая транзакция уже должна быть в нашей базе, и не оплаченная $pay = PaymentCloud::whereCustomerId($this->params['customer_id'])->wherePaymentId($this->params['payment_id'])->whereWaiting(1)->first(); // если ее нет, значит ничего не делаем if (!$pay) { Reporter::payTransactionLost($this->params['customer_id'], $this->params['order_id'], $this->params['payment_id']); $this->responseError(13); } Reporter::payTransactionFound($this->params['customer_id'], $this->params['order_id'], $this->params['payment_id'], $pay->id); // обновляем транзакцию как оплаченную $pay->request = $this->params['request']; $isNew = false; if (!PaymentCloud::checkTokenCard($this->params['customer_id'], $this->params['card_pan'])) { $isNew = true; } $pay->paid($this->params['token'], $isNew); Reporter::payTransactionPaid($this->params['customer_id'], $this->params['order_id'], $this->params['payment_id'], $pay->id); $this->responseSuccess(); }