Ejemplo n.º 1
0
 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' => 'Настройки сохранены');
 }
Ejemplo n.º 2
0
 /**
  * Возврат оплаты
  *
  * @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, 'Сообщение');
 }