Files
intaleq_v3_pure_php/auth/sms_new_backend/rasel_whatsapp.php
2026-04-28 13:04:27 +03:00

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)
?>