public function postSettings() { $data = Input::only('name', 'gateId', 'password', 'key', 'lifetime', 'gateUrl', 'payUrl'); $validate = Validator::make($data, Validators::rulesForSetting(), Validators::messagesForErrors()); $userMessages = $validate->messages(); if ($validate->fails()) { $result['errors'] = array('name' => $userMessages->first('name'), 'gateId' => $userMessages->first('gateId'), 'password' => $userMessages->first('password'), 'key' => $userMessages->first('key'), 'lifetime' => $userMessages->first('lifetime'), 'gateUrl' => $userMessages->first('gateUrl'), 'payUrl' => $userMessages->first('payUrl')); return $result; } $data['user_id'] = Config::get('ff-qiwi-shop::user_id'); $setting = Setting::find($data['user_id']) != null ? Setting::find($data['user_id']) : new Setting(); $setting->newSettings($data); return array('message' => 'Настройки сохранены'); }
/** * Возврат оплаты * * @param Order $order * * @return array */ public function payReturn($order) { $data = Input::all(); //Проверяем данные на валидность и возвращаем если ошибка $validator = Validator::make($data, Validators::rulesForPayReturn(), Validators::messagesForErrors()); $userMessages = $validator->messages(); if ($validator->fails()) { $result['error'] = array('sum' => $userMessages->first('sum'), 'comment' => $userMessages->first('comment')); return $result; } //Возможен ли возврат указанной суммы, //учитывая прошлые возвраты по этому счёту $isAllowedSum = PaysReturn::isAllowedSum($order, $data['sum']); if (!$isAllowedSum) { $result['error'] = array('sum' => 'Слишком большая сумма'); return $result; } //Если не закончен придыдущий возврат, то не даём сделать новый if ($order->isOnReturn()) { return $this->resultMessage('Дождитесь окончания предыдущего возврата.'); } //Создаём возврат в таблице и начинаем возврат $payReturn = PaysReturn::newPayReturn($data); if (!$payReturn) { return $this->resultMessage('Возврат не создан, повторите попытку.'); } $gate = new Gateway($this->makeCurl()); $isSuccess = $gate->payReturn($payReturn->order_id, $payReturn->id, $payReturn->sum); //Если ошибка, то удаляем наш возврат из таблицы if (!$isSuccess) { PayReturn::find($payReturn->id)->delete(); return $this->resultMessage($gate->getError()); } //Меняем статус заказа при успешном возврате $order->changeAfterReturn($payReturn->id); $message = 'Сумма ' . $data['sum'] . ' руб. по счёту № ' . $order->id . ' отправлена на возврат'; return $this->resultMessage($message, 'Сообщение'); }