سلام خسته نباشید ممنون از این پروژه عالی .
من برای بهینه تر و کوتاه تر شدن متد اومدم ، Order , orderItem , Payment , user رو بردم توی متد های جداگانه و پرایوت توی کلاس PaymentController و داخل متد pay همه رو صدا زدم و مراحل به درستی کار کردن .
میخواستم بدونم درست انجام دادم ؟
public function pay (PayRequest $request)
{
try {
$user = $this->setUser($request);
$orderItem = json_decode(Cookie::get('basket'),true);
if(count($orderItem) <= 0){
throw new \InvalidArgumentException('سبد خرید شما خالی میباشد');
}
$products = Product::findMany(array_keys($orderItem)) ;
$totalPrice = $products->sum( 'price' ) ;
$ref_code = Str::random(30) ;
$createdOrder = $this->setOrder($totalPrice , $user , $ref_code);
$this->setOrderItems($products,$createdOrder);
$this->setPayment($createdOrder , $ref_code);
$idPayRequest = new IDPayRequest([
'amount' => $totalPrice,
'user' => $user,
'order_id' => $ref_code,
'apiKey' => config('services.gateways.id_pay.api_key'),
]);
$paymentService = new PaymentService(PaymentService::IDPAY , $idPayRequest);
return $paymentService->pay();
}catch (\Exception $e) {
return back()->with('failed' , $e->getMessage());
}
}