$material_id, 'user_id' => auth()->id() ]); $order->category_id = $material->category_id; $order->price = $material->price; $order->title = $material->title; $order->registered = 0; $order->payed = 0; $order->download_count = $material->download_count; $order->downloaded = 0; if($material->day_count != 0) $order->last_date = Carbon::today()->addDays($material->day_count); else $order->last_date = null; $order->oid = str_replace('-','',Str::orderedUuid()); $order->save(); //todo update order_count on category_material return $this->register($order); } private function register(Order $order){ $url = config('app.gateway_url'); $user = config('app.gateway_user'); $pwd = config('app.gateway_password'); // dd($pwd); if(!($user && $url && $pwd)){ throw new MethodNotAllowedException(); } $client = new Client(['base_uri' => $url]); try{ $response = $client->request('POST', 'register.do', [ 'connect_timeout' => 15, 'timeout' => 15, 'verify' => false, 'form_params' => [ 'userName' => $user, 'password' => $pwd, 'orderNumber' => $order->oid, 'currency' => 934, 'language' => 'ru', 'description'=> $order->title, 'amount' =>$order->price * 100,// amount w kopeykah 'returnUrl' => route('order_status', $order->id), //'failUrl' => route('paymentFail', $order->id) ] ]); $data = json_decode($response->getBody(), true); if($data['errorCode'] == 0){ $order->registered = 1; $order->orderId = $data['orderId']; $order->formUrl = $data['formUrl']; $url = $order->formUrl; } else { // $order->status = 'register_failed'; $order->errorCode = $data['errorCode']; $order->errorMessage = $data['errorMessage']; $order->formUrl = url('order',$order->id); $url = redirect()->back(); request()->session()->flash('status','danger'); request()->session()->flash('status_message',$order->errorMessage); } $order->save(); }catch (\Exception $ex){ request()->session()->flash('status','danger'); request()->session()->flash('status_message',trans('abonent.gateway_not_responding_message')); dd($ex); $url = redirect()->back(); } return redirect($url); } public function result($order_id){ $order = Order::findOrFail($order_id); $url = config('app.gateway_url'); $user = config('app.gateway_user'); $pwd = config('app.gateway_password'); if(!($user && $url && $pwd)){ throw new MethodNotAllowedException(); } $client = new Client(['base_uri' => $url]); try{ $response = $client->request('POST', 'getOrderStatus.do', [ 'verify' => false, 'connect_timeout' => 15, 'timeout' => 15, 'form_params' => [ 'userName' => $user, 'password' => $pwd, 'orderId' => $order->orderId, ] ]); $data = json_decode($response->getBody(), true); $order->errorCode = $data['ErrorCode']; $order->orderStatus = $data['OrderStatus']; if($data['ErrorCode'] == 0){ if($data['OrderStatus'] == 2){ //payment successfull $order->payed = 1; // $this->makePayment($order); request()->session()->flash('status','success'); request()->session()->flash('status_message',trans('abonent.payment_successfull')); //$order->errorMessage = trans('abonent.payment_successfull'); $status_message = 'Проведена полная авторизация суммы заказа'; } elseif($data['OrderStatus'] == 0){//order registered but not payed yet $status_message = 'Заказ зарегистрирован, но не оплачен'; } elseif ($data['OrderStatus'] == 1){//Предавторизованная сумма захолдирована (для двухстадийных платежей) $status_message ='Предавторизованная сумма захолдирована (для двухстадийных платежей)'; } elseif ($data['OrderStatus'] == 4){//Предавторизованная сумма захолдирована (для двухстадийных платежей) $status_message ='По транзакции была проведена операция возврата'; } elseif ($data['OrderStatus'] == 5){//Предавторизованная сумма захолдирована (для двухстадийных платежей) $status_message ='Инициирована авторизация через ACS банка-эмитента'; } else{//unsuccessfull Авторизация отменена $status_message ='Авторизация отменена'; } } else{ // $order->status = 'payment_failed'; $order->errorMessage = $data['ErrorMessage']; } $order->save(); } catch (\Exception $e){ request()->session()->flash('status','danger'); request()->session()->flash('status_message','Bank bilen aragatnaşyga geçip bolmady birsalymdan täzeden synanşyp görmegiňizi haýyş edýäris'); redirect()->back(); } return view('order_complete')->with('order',$order); } }