public function calculateCorvusPrice(CalculateCorvusPrice $request): JsonResponse 	{ 		$productPrice = $orderNumber = $shippingPrice = $itemsCount = $totalWeight = 0; 		$cart = '';  		$corvusPayHandler = new CorvusPayHandler;  		$items = $request->items;  		foreach ($items as $key => $item) { 			$item_object = OrderItem::getItemModel($item);  			$productPrice += $item_object->getPrice() * $item['quantity']; 			$cart .= $item_object->id . 'x' . $item['quantity'] . ($key === array_key_last($items) ? '' : ','); 			$itemsCount += $item['quantity']; 			$totalWeight += $item['quantity'] * $item_object->weight; 		}  		// 1. shipping price 		if ($request->delivery_country) { 			$shippingPrice = Order::checkDeliveryServiceAndCalculateShipping($request->delivery_country, $request->delivery_zip_code, $request->items, $totalWeight); 		}  		// 2. product price + shipping price 		$finalPrice = round($productPrice + $shippingPrice, 2);  		$cart = substr($cart, 0, 255); // make sure it doesnt go over limit 		$orderNumber = Str::uuid();  		$corvusSignature = $corvusPayHandler->calculateFormSignature($orderNumber, $cart, $finalPrice, $request->lang);  		return response()->json([ 			'data' => [ 				'corvus_order_number' => $orderNumber, 				'cart' => $cart, 				'shipping_price' => $shippingPrice, 				'total_price' => $finalPrice, 				'corvus_signature' => $corvusSignature, 				'is_offer' => $itemsCount > Order::MAX_ORDER_ITEMS, 			], 		]); 	}