예제 #1
0
 /**
  * процессинг по запросу 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();
 }