$receiver, // رقم المستلم "type" => "text", "message" => $messageBody, "instance_id" => "6863C59A7AFBD", // المعرف المأخوذ من مثال cURL "access_token"=> "68617b9b8fe53" // مفتاح الوصول المأخوذ من مثال cURL ]; error_log("Sending OTP to $receiver via RaseelPlus. Message: $messageBody"); // استدعاء الـ API $response = callAPI("POST", $apiUrl, json_encode($payload)); error_log("RaseelPlus API Response: " . print_r($response, true)); // --- نهاية التعديل --- // التحقق من الاستجابة من الـ API // ملاحظة: قد تحتاج إلى تعديل هذا الشرط بناءً على شكل الاستجابة الفعلي من RaseelPlus // نفترض هنا أن الاستجابة الناجحة تحتوي على "status":"success" أو شيء مشابه if ($response && !isset($response->error) && (isset($response->status) && $response->status == 'success' || isset($response->message))) { // تحديد وقت انتهاء صلاحية الرمز (بعد 5 دقائق) $expiration_time = date('Y-m-d H:i:s', strtotime('+5 minutes')); $created_at = date('Y-m-d H:i:s'); error_log("API call successful. Saving to DB: phone=$receiver, token=$otp, expires=$expiration_time"); try { // تشفير البيانات قبل حفظها (ممارسة أمنية جيدة) // $receiver_encrypted = $encryptionHelper->encryptData($receiver); // $otp_encrypted = $encryptionHelper->encryptData($otp); // استخدام البيانات غير المشفرة مؤقتاً إذا لم تكن تستخدم التشفير حالياً $receiver_to_db = $receiver; $otp_to_db = $otp; $stmt = $con->prepare(" INSERT INTO phone_verification_passenger (phone_number, token, expiration_time, verified, created_at) VALUES (?, ?, ?, 0, ?) "); $success = $stmt->execute([$receiver_to_db, $otp_to_db, $expiration_time, $created_at]); if ($success) { error_log("OTP saved successfully to DB."); // jsonSuccess() هي دالة مخصصة لديك لطباعة استجابة نجاح jsonSuccess(null, 'OTP sent and saved successfully'); } else { error_log("SQL execution failed."); // jsonError() هي دالة مخصصة لديك لطباعة استجابة فشل jsonError('OTP sent but failed to save to database'); } } catch (PDOException $e) { error_log("Database Error: " . $e->getMessage()); jsonError('Database error occurred'); } } else { // فشل إرسال الـ OTP $errorMessage = isset($response->message) ? $response->message : "Unknown error"; error_log("Failed to send OTP. API response: " . $errorMessage); jsonError('Failed to send OTP: ' . $errorMessage); } /** * دالة لإجراء استدعاءات API باستخدام cURL * @param string $method نوع الطلب (e.g., "POST", "GET") * @param string $url عنوان URL للـ API * @param mixed $data البيانات المراد إرسالها * @return mixed الاستجابة من الـ API بعد فك تشفير JSON */ function callAPI($method, $url, $data) { $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, // إرجاع الاستجابة كنص بدلاً من طباعتها CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, // مهلة زمنية للطلب CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => [ "Content-Type: application/json", "Accept: application/json" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { error_log("cURL Error #: " . $err); return null; // إرجاع null في حالة وجود خطأ في cURL } else { return json_decode($response); // فك تشفير استجابة JSON } } // مثال على دالة طباعة النجاح (ضعها في ملف functions.php) ?>