التحقق من رقم الهاتف
curl --request GET \
--url https://api.oneclickdz.com/v3/internet/check-number \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/internet/check-number"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/internet/check-number', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/internet/check-number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/internet/check-number"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/internet/check-number")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/internet/check-number")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_bodyشحن الإنترنت
التحقق من رقم الهاتف
تحقق من أرقام الهاتف قبل معالجة شحن الإنترنت
GET
/
v3
/
internet
/
check-number
التحقق من رقم الهاتف
curl --request GET \
--url https://api.oneclickdz.com/v3/internet/check-number \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/internet/check-number"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/internet/check-number', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/internet/check-number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/internet/check-number"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/internet/check-number")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/internet/check-number")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_bodyنظرة عامة
يتحقق من أرقام الهاتف لخدمات ADSL أو 4G قبل الإرسال. يساعد في منع الأخطاء وتقليل طلبات الاسترداد.تحقق دائماً من أرقام الهاتف قبل إرسال طلبات الشحن لتقليل حالات الفشل.
معاملات الاستعلام
string
مطلوب
نوع الخدمة:
ADSL أو 4Gstring
مطلوب
رقم الهاتف للتحقق منه - ADSL:
0[0-9]{8} (مثال: 036362608) - 4G: 213[0-9]{9} (مثال: 213472731602)الاستجابة
رقم ADSL صالح
{
"success": true,
"data": {
"ncli": "11022*****",
"offre": "FTTc-b_10M'",
"type": "ADSL"
},
"meta": {
"timestamp": "2025-10-29T00:36:48.823Z"
}
}
رقم 4G صالح
{
"success": true,
"data": {
"ncli": "11034*****",
"type": "4GLTE"
},
"meta": {
"timestamp": "2025-10-29T00:36:49.847Z"
}
}
رقم غير صالح
{
"success": false,
"error": {
"code": "ERR_PHONE",
"message": "عذرًا، لم نتمكن من تأكيد هذا الرقم. يرجى التحقق من صحة الرقم ومن نوع العرض. إذا كان الرقم صحيحًا، يرجى المحاولة مرة أخرى لاحقًا."
},
"requestId": "req_01HQ..."
}
الرسالة
message مكتوبة للمستخدم النهائي ويمكن عرضها كما هي. ويغطي ERR_PHONE الحالات الثلاث: الرقم غير موجود لدى اتصالات الجزائر، أو لا يطابق النوع type الذي أرسلته، أو تعذّر الوصول مؤقتًا إلى خوادم اتصالات الجزائر.وضع sandbox
بمفتاح sandbox تُجيب هذه النقطة من بيانات جاهزة: لا يتم الاتصال بأي خط لدى اتصالات الجزائر، ولا يُحل أي captcha، والاستجابة فورية. والرقم هو الذي يحدد الإجابة:| الرقم | الاستجابة |
|---|---|
030000000 | 400 ERR_PHONE |
| أي رقم آخر مطابق للصيغة | 200 صالح، مع ncli: "****" و\u200Eoffre اختباري |
sandbox: رقم صالح
{
"success": true,
"data": {
"ncli": "****",
"offre": "FTTH 600M Prepaid individual",
"type": "ADSL"
},
"meta": { "timestamp": "2026-08-02T21:32:52.933Z" }
}
030000000 لاختبار مسار ERR_PHONE، وأي رقم آخر بصيغة صحيحة لمسار النجاح. ونفس الأرقام تُستعمل في إرسال الشحن، حيث تحدد أيضًا كيف تتطور حالة الطلب.أمثلة
curl "https://api.oneclickdz.com/v3/internet/check-number?type=ADSL&number=036362608" \
-H "X-Access-Token: YOUR_API_KEY"
async function validateNumber(type, number) {
const response = await fetch(
`https://api.oneclickdz.com/v3/internet/check-number?type=${type}&number=${number}`,
{ headers: { "X-Access-Token": process.env.API_KEY } }
);
if (!response.ok) {
const error = await response.json();
throw new Error(error.error.message);
}
return await response.json();
}
// Usage
try {
await validateNumber("ADSL", "036362608");
console.log("Number is valid");
} catch (error) {
console.error("Invalid number:", error.message);
}
def validate_number(type, number):
response = requests.get(
'https://api.oneclickdz.com/v3/internet/check-number',
headers={'X-Access-Token': 'YOUR_API_KEY'},
params={'type': type, 'number': number}
)
if response.ok:
return True
else:
error = response.json()
raise ValueError(error['error']['message'])
# Usage
try:
validate_number('ADSL', '036362608')
print('Valid number')
except ValueError as e:
print(f'Invalid: {e}')
تنسيقات أرقام الهاتف
- ADSL
- 4G
التنسيق:
0[0-9]{8} أمثلة صالحة: - ✅ 036362608 - ✅
031417237 - ✅ 021123456 أمثلة غير صالحة: - ❌ 36362608 (يفتقد 0 في البداية) - ❌ 0363626081 (طويل جداً) - ❌ 213636362608 (تنسيق خاطئ)التنسيق:
213[0-9]{9} أمثلة صالحة: - ✅ 213472731602 - ✅
213665983439 - ✅ 213778037340 أمثلة غير صالحة: - ❌ 0665983439
(تنسيق خاطئ، يجب تضمين رمز الدولة) - ❌ 665983439 (رمز الدولة مفقود) - ❌ +213665983439 (لا يجب تضمين +)مثال على التكامل
// Complete validation flow
async function prepareInternetTopup(type, number, value) {
// Step 1: Validate number
try {
await validateNumber(type, number);
} catch (error) {
return {
success: false,
error: "Invalid phone number",
details: error.message,
};
}
// Step 2: Check product availability
const products = await getProducts(type);
const product = products.find((p) => p.value === value && p.available);
if (!product) {
return {
success: false,
error: "Product not available",
};
}
// Step 3: Send top-up
return await sendInternetTopup({ type, number, value });
}
لماذا نتحقق؟
تقليل الأخطاء
اكتشف الأرقام غير الصالحة قبل الإرسال
تجربة مستخدم أفضل
أظهر تغذية راجعة فورية للمستخدمين
أقل استرداد
قلّل المعاملات الفاشلة والمستردة
التحقق من التنسيق
تأكد من تطابق الرقم مع نوع الخدمة
أفضل الممارسات
التحقق من جانب العميل
التحقق من جانب العميل
تحقق من التنسيق من جانب العميل أولاً، ثم أكِّد عبر API:
function validateADSLFormat(number) {
return /^0[0-9]{8}$/.test(number);
}
function validate4GFormat(number) {
return /^213[0-9]{9}$/.test(number);
}
عرض رسائل مفيدة
عرض رسائل مفيدة
اعرض رسائل واضحة عند فشل التحقق: - “يرجى إدخال رقم ADSL صالح (مثال: 036362608)” - “أرقام 4G يجب أن تبدأ بـ 213 (مثال: 213665983439)” - “تنسيق الرقم: 9 أرقام تبدأ بـ 0”
تخزين نتائج التحقق مؤقتاً
تخزين نتائج التحقق مؤقتاً
خزِّن عمليات التحقق الناجحة لفترة قصيرة:
const validationCache = new Map();
async function validateWithCache(type, number) {
const key = `${type}:${number}`;
if (validationCache.has(key)) {
return validationCache.get(key);
}
const result = await validateNumber(type, number);
validationCache.set(key, result);
// Clear after 5 minutes
setTimeout(() => validationCache.delete(key), 5 * 60 * 1000);
return result;
}
الـ Endpoints المرتبطة
قائمة المنتجات
احصل على البطاقات المتاحة
إرسال شحن
شراء بطاقة إنترنت

