قائمة خطط الهاتف المحمول
curl --request GET \
--url https://api.oneclickdz.com/v3/mobile/plans \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/mobile/plans"
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/mobile/plans', 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/mobile/plans",
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/mobile/plans"
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/mobile/plans")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/mobile/plans")
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
/
mobile
/
plans
قائمة خطط الهاتف المحمول
curl --request GET \
--url https://api.oneclickdz.com/v3/mobile/plans \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/mobile/plans"
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/mobile/plans', 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/mobile/plans",
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/mobile/plans"
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/mobile/plans")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/mobile/plans")
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نظرة عامة
يُرجع قائمة شاملة بجميع خطط شحن الهاتف المحمول المتاحة لمشغّلي Mobilis وDjezzy وOoredoo.الخطط مستقرة ونادرًا ما تتغير. آمن لتخزينها مؤقتًا في قاعدة بياناتك مع أسعارك الخاصة.
أنواع الخطط
- الخطط الديناميكية
- الخطط الثابتة
- خطط GetMenu
خطط بمبالغ متغيرة حيث تحدد المبلغ ضمن نطاق معين.
أمثلة: Prépayé، Postpayé (Facture)، الدولي الحقول المطلوبة: -
plan_code - MSSIDN (رقم الهاتف) - amount (بين min_amount وmax_amount)خطط بمبالغ ثابتة يتم تفعيلها مباشرة. أمثلة: “Pixx 500”،
“Special 2000”، “Data Pack 1GB” الحقول المطلوبة: -
plan_code - MSSIDN
(رقم الهاتف) - المبلغ محدد مسبقًا (الحقل amount في الاستجابة)خطط خاصة تسترد جميع العروض المتاحة لرقم معين.
الرموز:
GETMENU_Mobilis، GETMENU_Ooredoo، GETMENU_Djezzy تُرجع العروض المتاحة للمستخدم بناءً على اشتراكه.الاستجابة
boolean
مطلوب
يشير إلى نجاح الطلب
object
مطلوب
إظهار properties
إظهار properties
array
مطلوب
مصفوفة من الخطط بمبالغ متغيرة حيث تحدد المبلغ ضمن نطاق
إظهار Dynamic plan object
إظهار Dynamic plan object
string
رمز خطة فريد لطلبات API
string
اسم خطة سهل الاستخدام للعرض
string
المشغّل: Mobilis، Djezzy، Ooredoo (أو GMobilis، GDjezzy، GOoredoo للجملة)
number
مضاعف التكلفة الخاص بك (مثلًا: 0.96 = تدفع 960 دينار مقابل شحن 1000 دينار). موجود فقط لخطط التجزئة.
boolean
ما إذا كانت الخطة متاحة حاليًا
number
الحد الأدنى لمبلغ الشحن بالدينار الجزائري
number
الحد الأقصى لمبلغ الشحن بالدينار الجزائري
الأمثلة
curl https://api.oneclickdz.com/v3/mobile/plans \
-H "X-Access-Token: YOUR_API_KEY"
const response = await fetch("https://api.oneclickdz.com/v3/mobile/plans", {
headers: { "X-Access-Token": "YOUR_API_KEY" },
});
const { data } = await response.json();
console.log(data.dynamicPlans, data.fixedPlans);
import requests
response = requests.get(
'https://api.oneclickdz.com/v3/mobile/plans',
headers={'X-Access-Token': 'YOUR_API_KEY'}
)
data = response.json()['data']
dynamic_plans = data['dynamicPlans']
fixed_plans = data['fixedPlans']
<?php
$ch = curl_init('https://api.oneclickdz.com/v3/mobile/plans');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
$response = json_decode(curl_exec($ch), true);
$dynamicPlans = $response['data']['dynamicPlans'];
$fixedPlans = $response['data']['fixedPlans'];
?>
مثال على الاستجابة
{
"success": true,
"data": {
"dynamicPlans": [
{
"code": "PREPAID_DJEZZY",
"name": "📱 PREPAID | عادي",
"operator": "Djezzy",
"cost": 0.9925,
"isEnabled": true,
"min_amount": 100,
"max_amount": 10000
},
{
"code": "PREPAID_MOBILIS",
"name": "📱 PREPAID | عادي",
"operator": "Mobilis",
"cost": 0.96,
"isEnabled": true,
"min_amount": 40,
"max_amount": 3999
}
],
"fixedPlans": [
{
"code": "MIX50_DJEZZY",
"name": "📱🌐 Auto | MIX 50",
"operator": "Djezzy",
"isEnabled": true,
"cost": 0.9925,
"amount": 50
},
{
"code": "MIX1000_OOREDOO",
"name": "📱🌐 AUTO | MIX 1000",
"operator": "Ooredoo",
"isEnabled": true,
"cost": 0.99,
"amount": 1000
}
]
},
"meta": {
"timestamp": "2025-10-29T00:35:59.220Z"
}
}
شرح خصائص الخطط
فهم التكلفة (cost)
فهم التكلفة (cost)
الحقل
cost هو مضاعف سعر الجملة الخاص بك:0.98= تدفع 98% من القيمة الاسمية- لشحن 1000 دينار: تكلفتك = 1000 × 0.98 = 980 دينار
- هامش ربحك: 1000 - 980 = 20 دينار (2%)
cost من الاستجابات للمستخدمين النهائيين. طبّق هامش الربح الخاص بك.نطاقات المبالغ
نطاقات المبالغ
الخطط الديناميكية لها
min_amount وmax_amount: - يمكن للمستخدمين اختيار أي
مبلغ ضمن هذا النطاق - النطاق الشائع: 50 - 5000 دينار - بعض المشغّلين يسمحون
بحتى 10,000 دينار الخطط الثابتة لها amount واحد: - لا يلزم اختيار مبلغ- تفعيل الخدمة مباشرة - شائع للعروض الخاصة وحزم البيانات
توفر الخطة
توفر الخطة
الحقل
isEnabled يشير إلى:true: الخطة متاحة للاستخدامfalse: معطّلة مؤقتًا (صيانة، مشكلات المشغّل)
استراتيجية التكامل
1
التحميل الأولي
استدعِ هذا endpoint مرة واحدة عند بدء تشغيل تطبيقك أو أثناء الإعداد
2
تخزين الخطط
احفظ الخطط في قاعدة بياناتك مع أسعارك الخاصة
CREATE TABLE mobile_plans (
code VARCHAR PRIMARY KEY,
name VARCHAR,
operator VARCHAR,
our_cost DECIMAL,
sell_price DECIMAL,
min_amount INT,
max_amount INT,
amount INT,
is_enabled BOOLEAN,
updated_at TIMESTAMP
);
3
تطبيق هامش الربح
احسب سعر البيع الخاص بك:
const ourCost = faceValue * plan.cost;
const markup = 0.05; // 5% profit
const sellPrice = ourCost * (1 + markup);
4
خدمة المستخدمين
اعرض الخطط مع أسعارك للمستخدمين النهائيين
{
code: plan.code,
name: plan.name,
operator: plan.operator,
price: sellPrice,
minAmount: plan.min_amount,
maxAmount: plan.max_amount
}
5
المزامنة الدورية
زامن الخطط يوميًا أو عند إشعار بالتغييرات
// Daily sync at midnight
cron.schedule('0 0 * * *', syncPlans);
تصفية الخطط
const mobilisPlans = [
...data.dynamicPlans.filter((p) => p.operator === "Mobilis"),
...data.fixedPlans.filter((p) => p.operator === "Mobilis")
];
const djezzyPlans = [
...data.dynamicPlans.filter((p) => p.operator === "Djezzy"),
...data.fixedPlans.filter((p) => p.operator === "Djezzy")
];
const dynamicPlans = data.dynamicPlans;
const fixedPlans = data.fixedPlans;
const allPlans = [...data.dynamicPlans, ...data.fixedPlans];
const availableDynamic = data.dynamicPlans.filter((p) => p.isEnabled);
const availableFixed = data.fixedPlans.filter((p) => p.isEnabled);
أفضل الممارسات
تخزين الخطط مؤقتًا
خزّن الخطط في قاعدة بياناتك لتقليل استدعاءات API وتحسين الأداء
إخفاء التكلفة
لا تكشف أبدًا عن
cost الجملة للمستخدمين النهائيين. اعرض فقط أسعار التجزئة الخاصة بكالتحقق من isEnabled
تحقق دائمًا من
isEnabled قبل عرض الخطط للمستخدمينالمزامنة المنتظمة
نفّذ مزامنة يومية أو مستمعًا لـ webhook لتحديثات الخطط
Endpoints ذات الصلة
إرسال الشحن
إرسال شحن هاتف محمول باستخدام رمز الخطة
التحقق من الحالة
تتبع حالة الشحن

