getBody(); $studentId = (int)($body['student_id'] ?? $request->user_id ?? 0); $courseId = (int)($body['course_id'] ?? 0); if (!$studentId || !$courseId) { $response->status(400)->json([ 'status' => 'error', 'message' => 'معرف الطالب ومعرف الدورة مطلوبان لإصدار مطالبة كليك' ]); return; } $res = CliqPaymentService::initiatePayment($studentId, $courseId); $status = ($res['status'] ?? 'error') === 'success' ? 200 : 400; $response->status($status)->json($res); } /** * رفع إيصال كليك والتحقق الذكي بالذكاء الاصطناعي * POST /api/payment/cliq/submit-receipt */ public function submitReceipt(Request $request, Response $response): void { $body = $request->getBody(); $studentId = (int)($body['student_id'] ?? $request->user_id ?? 0); $referenceCode = trim((string)($body['reference_code'] ?? '')); $receiptBase64 = (string)($body['receipt_image'] ?? ''); $manualTxId = isset($body['bank_transaction_id']) ? (string)$body['bank_transaction_id'] : null; if (!$studentId || empty($referenceCode)) { $response->status(400)->json([ 'status' => 'error', 'message' => 'معرف الطالب والرمز المرجعي مطلوبان' ]); return; } $res = CliqPaymentService::verifyPaymentReceipt($studentId, $referenceCode, $receiptBase64, $manualTxId); $status = ($res['status'] ?? 'error') === 'success' ? 200 : 400; $response->status($status)->json($res); } /** * طلب سحب أرباح للمعلم عبر كليك * POST /api/teacher/payout/request */ public function requestTeacherPayout(Request $request, Response $response): void { $body = $request->getBody(); $teacherId = (int)($body['teacher_id'] ?? $request->user_id ?? 1); $amountJod = (float)($body['amount_jod'] ?? 0.0); $cliqAlias = trim((string)($body['cliq_alias'] ?? '')); if ($amountJod <= 0 || empty($cliqAlias)) { $response->status(400)->json([ 'status' => 'error', 'message' => 'المبلغ ومعرّف كليك مطلوبان لإتمام طلب السحب' ]); return; } $res = CliqPaymentService::requestTeacherPayout($teacherId, $amountJod, $cliqAlias); $status = ($res['status'] ?? 'error') === 'success' ? 200 : 400; $response->status($status)->json($res); } /** * استعلام المعلم عن حالة طلبات السحب في طابور كليك * GET /api/teacher/payout/status */ public function getTeacherPayoutStatus(Request $request, Response $response): void { $teacherId = (int)($request->user_id ?? $_GET['teacher_id'] ?? 1); $payouts = CliqPaymentService::getTeacherPayouts($teacherId); $response->json([ 'status' => 'success', 'data' => $payouts ]); } /** * معالجة طابور السحب المالي (تُستدعى أيضاً عبر الكرون جوب أو المشرف) * POST /api/admin/payout/process-queue */ public function processPayoutQueue(Request $request, Response $response): void { $res = CliqPaymentService::processPayoutQueue(); $response->json($res); } }