Update Saqel Platform: 2026-09-04 03:20:29
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/**
|
||||
* ==============================================================================
|
||||
* SAQEL ENTERPRISE - CLIQ PAYMENT & TEACHER PAYOUT CONTROLLER
|
||||
* ==============================================================================
|
||||
*
|
||||
* ملف: CliqPaymentController.php
|
||||
* إدارة نقاط النهاية البرمجية لمدفوعات كليك الفورية للطلبة وطابور السحب المالي للمعلمين.
|
||||
*/
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use App\Core\Request;
|
||||
use App\Core\Response;
|
||||
use App\Services\CliqPaymentService;
|
||||
use App\Services\StudentAccessControlService;
|
||||
|
||||
class CliqPaymentController
|
||||
{
|
||||
/**
|
||||
* طلب دفع كليك لطالب خارجي
|
||||
* POST /api/payment/cliq/initiate
|
||||
*/
|
||||
public function initiatePayment(Request $request, Response $response): void
|
||||
{
|
||||
$body = $request->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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user