/** * Возврат средств * * @param int $provider_id * @param string $bill_id * @param int $refund_id * * @internal param int $id * * @return Response */ public function update($provider_id, $bill_id, $refund_id) { $bill = Bill::getBill($bill_id, $provider_id); //Проверяем наличие счёта if (!$bill) { $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } //Проверяем refund_id на уникальность в этом счёте if (Refund::isRefundExist($bill_id, $refund_id)) { $data['error'] = Catalog::C_BILL_ALREADY_EXIST; return $this->responseFromGate($data); } //Проверяем статус if (!$bill->isPaid()) { $data['error'] = Catalog::C_BILL_NOT_FOUND; return $this->responseFromGate($data); } //Проверяем запрошенную сумму для отмены $amountQuery = Input::get('amount'); $validator = Validator::make(array('amount' => $amountQuery), Validators::rulesForRefundBill()); if (!$validator->passes()) { $data['error'] = Catalog::C_WRONG_FORMAT; return $this->responseFromGate($data); } //Вычисляем сууму для возврата $refundAmount = Refunds::calculateAmount($bill, $amountQuery); $data = array('bill_id' => $bill_id, 'refund_id' => $refund_id, 'amount' => $refundAmount, 'status' => 'processing'); Refunds::NewRefund($data); $data['user'] = $bill->user; $data['error'] = Catalog::C_WITHOUT_ERRORS; return $this->responseFromGate($data); }
/** * Создание нового счета * * @param int $provider_id * @param string $bill_id * * @return Response */ public function store($provider_id, $bill_id) { $data = Input::all(); $data['bill_id'] = $bill_id; $validator = Validator::make($data, Validators::rulesForNewBill()); //Если не пройдена валидация - отдаём ошибку формата if (!$validator->passes()) { $data['error'] = Catalog::C_WRONG_FORMAT; return $this->responseFromGate($data); } //Если сумма мала - отдаём ошибку маленькой суммы if ($data['amount'] < 10) { $data['error'] = Catalog::C_SMALL_AMOUNT; return $this->responseFromGate($data); } //Если сумма велика - отдаём ошибку большой суммы if ($data['amount'] > 15000) { $data['error'] = Catalog::C_BIG_AMOUNT; return $this->responseFromGate($data); } //Отдаём ошибку если счёт уже существует if (Bill::getBill($bill_id, $provider_id)) { $data = array('error' => Catalog::C_BILL_ALREADY_EXIST); return $this->responseFromGate($data); } //Создаём счёт и возвращаем его $bill = Bills::NewBill($data); if ($bill) { $data = $this->dataFromObj($bill); $data['error'] = 0; return $this->responseFromGate($data); } //Если не создан счёт, то отдаём техническую ошибку $data = array('error' => Catalog::C_TECHNICAL_ERROR); return $this->responseFromGate($data); }
/** * Проверка ввода при смене данных * * @param $data * * @return null */ private function getErrorFromChangeData($data) { $data['username'] = e($data['username']); $validator = Validator::make($data, Validators::rulesForChangeAccData(), Validators::messagesForErrors()); $userMessages = $validator->messages(); if ($validator->fails()) { $result['errors'] = array('username' => $userMessages->first('username'), 'callback' => $userMessages->first('callback'), 'email' => $userMessages->first('email'), 'key' => $userMessages->first('key'), 'password' => $userMessages->first('password'), 'confirmPassword' => $userMessages->first('confirmPassword')); return $result; } return null; }