user(); $order = Order::with(['invoice', 'orderItems', 'customer']) ->where('id', $orderId) ->where('customer_id', $customer->id) ->first(); if (!$order) { return response()->json([ 'error' => true, 'message' => 'Không tìm thấy đơn hàng' ], 404); } if ($order->status == 2) { // Already paid return response()->json([ 'error' => true, 'message' => 'Đơn hàng đã được thanh toán' ], 400); } // Kiểm tra credit if ($customer->credit < $order->amount) { return response()->json([ 'error' => true, 'message' => 'Số dư không đủ để thanh toán', 'data' => [ 'required' => $order->amount, 'current_credit' => $customer->credit, 'shortage' => $order->amount - $customer->credit ] ], 400); } // Dispatch job để xử lý thanh toán và tạo VM ProcessOrderPaymentJob::dispatch($order); return response()->json([ 'error' => false, 'message' => 'Đơn hàng đang được xử lý. Bạn sẽ nhận được thông báo khi hoàn tất.', 'data' => [ 'order_id' => $order->id, 'order_num' => $order->order_num, 'status' => 'processing' ] ]); } catch (\Exception $e) { Log::error('Pay order error: ' . $e->getMessage()); return response()->json([ 'error' => true, 'message' => 'Có lỗi xảy ra khi thanh toán đơn hàng' ], 500); } } }