135 lines
5.3 KiB
PHP
Executable File
135 lines
5.3 KiB
PHP
Executable File
<?php
|
|
|
|
// تضمين ملف الاتصال بقاعدة البيانات والدوال المساعدة
|
|
require_once __DIR__ . '/../../connect.php';
|
|
// include "functions.php"; // افترض أن دالة filterRequest موجودة هنا
|
|
|
|
|
|
// --- بداية التعديل: استخدام واجهة RaseelPlus API ---
|
|
|
|
// توليد رمز تحقق عشوائي مكون من 5 أرقام
|
|
$otp = rand(10000, 99999);
|
|
|
|
// استقبال رقم الهاتف من الطلب
|
|
// تأكد من أن دالة filterRequest تقوم بتنقية المدخلات بشكل آمن
|
|
$receiver = filterRequest("receiver");
|
|
|
|
// رسالة الـ OTP. يمكنك تخصيصها حسب الحاجة
|
|
// تذكر أن التطبيق اسمه Tripz-egypt.com
|
|
$messageBody = "Your verification code for Tripz is: " . $otp;
|
|
|
|
// عنوان API الجديد
|
|
$apiUrl = 'https://raseelplus.com/api/send';
|
|
|
|
// بيانات الطلب (Payload) الجديدة لتتوافق مع RaseelPlus
|
|
$payload = [
|
|
"number" => $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)
|
|
|
|
|
|
?>
|