/** * Смена статуса заказа * * @param $newStatus */ public function changeStatus($newStatus) { //Не меняем статус с "на возврате" на статус "оплачено" if ($this->status == self::C_ORDER_STATUS_RETURNING && $newStatus == self::C_ORDER_STATUS_PAID) { return; } if ($this->status != $newStatus) { Order::whereId($this->id)->whereStatus($this->status)->update(array('status' => $newStatus)); } $order = Order::find($this->id); $this->status = $order->status; }
/** * Проверка статуса возврата с несозданным возвратом */ public function testShowStatusPayReturn() { App::bind('FintechFab\\QiwiSdk\\Curl', function () { $args = array(1, 'GET', null, 1); $this->mock->shouldReceive('request')->withArgs($args)->andReturn((object) array('response' => (object) array('result_code' => 0, 'refund' => (object) array('status' => 'processing')))); return $this->mock; }); $order = Order::find(1); $order->idLastReturn = 1; $order->save(); $payReturn = new PayReturn(); $payReturn->create(array('order_id' => $order->id, 'sum' => 15, 'status' => 'onReturn')); $resp = $this->call('POST', Config::get('ff-qiwi-shop::testConfig.testUrl') . '/action/statusReturn', array('order_id' => '1')); $this->assertContains('Текущий статус возврата - на возврате', $resp->original['message']); }
/** * Обработка callback запроса * * @return string */ public function processCallback() { $request = Request::header(); Log::info('Пришёл запрос callback с такими заголовками ', $request); $provider = $this->getProvider(); $oSettings = Setting::whereGateId($provider['login'])->first(); $this->setConfigForGateway($oSettings); $requestParams = Input::all(); Log::info('Получены параметры в qiwi-shop для обработки callback:', array('$requestParams' => $requestParams, '$provider' => $provider)); $gate = new Gateway($this->makeCurl()); if ($gate->doParseCallback($requestParams)) { $order = Order::find($gate->getCallbackOrderId()); if (!$order) { $gate->createCallbackResponse(Gateway::C_BILL_NOT_FOUND); return $gate->doCallbackResponse(); } $newStatus = $gate->getValueBillStatus(); Log::info('Статусы заказов после обработки callback:', array('oldStatus' => $order->status, 'newStatus' => $newStatus)); if ($order->status != $newStatus) { $order->status = $newStatus; $order->save(); } } return $gate->doCallbackResponse(); }