public function testPayReturnFailSum() { $connector = new Gateway($this->mock); $isSuccess = $connector->payReturn(123, 1, 0); $this->assertFalse($isSuccess); $this->assertEquals('Сумма слишком мала', $connector->getError()); }
/** * Возврат оплаты * * @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, 'Сообщение'); }