قائمة عمليات الشحن المحمول
curl --request GET \
--url https://api.oneclickdz.com/v3/mobile/list \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/mobile/list"
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/list', 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/list",
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/list"
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/list")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/mobile/list")
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
/
list
قائمة عمليات الشحن المحمول
curl --request GET \
--url https://api.oneclickdz.com/v3/mobile/list \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/mobile/list"
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/list', 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/list",
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/list"
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/list")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/mobile/list")
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نظرة عامة
يُرجع قائمة مرقّمة بجميع عمليات شحن الهاتف المحمول، مرتبةً من الأحدث إلى الأقدم.معلمات الاستعلام
integer
افتراضي:1
رقم الصفحة (الحد الأدنى: 1)
integer
افتراضي:20
عدد العناصر في الصفحة (الحد الأدنى: 1، الحد الأقصى: 100)
الاستجابة
boolean
مطلوب
يشير إلى نجاح الطلب
object
مطلوب
إظهار properties
إظهار properties
array
مطلوب
مصفوفة من كائنات الشحن
إظهار Topup object
إظهار Topup object
string
معرّف الشحن الداخلي
string
مرجعك الداخلي (إذا أُوفِّر عند الإرسال)
string
الحالة الحالية للشحن:
PENDING، SUCCESS، FAILED، UNKNOWN_ERRORstring
رقم الهاتف الذي تم شحنه
string
مشغّل الشبكة:
Mobilis، Djezzy، أو Ooredoostring
رمز الخطة المستخدمة
string
الاسم المقروء للخطة
number
مبلغ الشحن بالدينار الجزائري
number
التكلفة الفعلية من رصيدك
string
طابع زمني للإنشاء (ISO 8601)
string
طابع زمني لآخر تحديث للحالة (ISO 8601)
الأمثلة
curl https://api.oneclickdz.com/v3/mobile/topups?page=1&pageSize=20 \
-H "X-Access-Token: YOUR_API_KEY"
const response = await fetch(
"https://api.oneclickdz.com/v3/mobile/topups?page=1&pageSize=20",
{
headers: { "X-Access-Token": "YOUR_API_KEY" },
}
);
const { data } = await response.json();
const topups = data.items;
const pagination = data.pagination;
import requests
response = requests.get(
'https://api.oneclickdz.com/v3/mobile/topups',
headers={'X-Access-Token': 'YOUR_API_KEY'},
params={'page': 1, 'pageSize': 20}
)
data = response.json()['data']
topups = data['items']
pagination = data['pagination']
<?php
$ch = curl_init('https://api.oneclickdz.com/v3/mobile/topups?page=1&pageSize=20');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
$data = json_decode(curl_exec($ch), true);
$topups = $data['data']['items'];
?>
مثال على الاستجابة
{
"success": true,
"data": {
"items": [
{
"_id": "6901616fe9e88196b4eb64b0",
"ref": "order-001",
"status": "SUCCESS",
"MSSIDN": "0776543210",
"operator": "Djezzy",
"planCode": "PREPAID_DJEZZY",
"planName": "📱 PREPAID | عادي",
"amount": 500,
"cost": 496.25,
"createdAt": "2025-10-29T00:35:59.454Z",
"updatedAt": "2025-10-29T00:36:05.123Z"
},
{
"_id": "68fe2cdd51bc170608683e3a",
"ref": "order-002",
"status": "SUCCESS",
"MSSIDN": "0554926570",
"operator": "Ooredoo",
"planCode": "MIX1000_OOREDOO",
"planName": "📱🌐 AUTO | MIX 1000",
"amount": 1000,
"cost": 990,
"createdAt": "2025-10-26T14:14:53.074Z",
"updatedAt": "2025-10-26T14:15:02.891Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"totalPages": 15,
"totalResults": 293
}
},
"meta": {
"timestamp": "2025-10-29T00:35:58.710Z"
}
}
حالات الاستخدام
سجل الطلبات
اعرض سجل الشحن للمستخدمين في تطبيقك
متابعة الطلبات المعلّقة
ابحث عن الشحنات ذات الحالة
PENDING أو UNKNOWN_ERROR لمتابعتهاالتقارير
أنشئ تقارير المبيعات والتشغيل
التدقيق
راجع جميع العمليات لأغراض المحاسبة
متابعة الطلبات المعلّقة
async function followUpPendingTopUps() {
const response = await fetch(
"https://api.oneclickdz.com/v3/mobile/topups?page=1&pageSize=100",
{
headers: { "X-Access-Token": API_KEY },
}
);
const { data } = await response.json();
const pendingTopUps = data.items.filter(
(t) => t.status === "PENDING" || t.status === "UNKNOWN_ERROR"
);
for (const topup of pendingTopUps) {
const checkResponse = await fetch(
`https://api.oneclickdz.com/v3/mobile/topup/${topup._id}`,
{
headers: { "X-Access-Token": API_KEY },
}
);
const checkData = await checkResponse.json();
await updateLocalOrderStatus(topup._id, checkData.data.status);
}
}
أمثلة على التصفية
حسب النطاق الزمني
curl "https://api.oneclickdz.com/v3/mobile/list?from=2025-10-01T00:00:00Z&to=2025-10-31T23:59:59Z" \
-H "X-Access-Token: YOUR_API_KEY"
const from = "2025-10-01T00:00:00Z";
const to = "2025-10-31T23:59:59Z";
const response = await fetch(
`https://api.oneclickdz.com/v3/mobile/list?from=${from}&to=${to}`,
{ headers: { "X-Access-Token": "YOUR_API_KEY" } }
);
response = requests.get(
'https://api.oneclickdz.com/v3/mobile/list',
headers={'X-Access-Token': 'YOUR_API_KEY'},
params={
'from': '2025-10-01T00:00:00Z',
'to': '2025-10-31T23:59:59Z',
'page': 1,
'pageSize': 50
}
)
التصفية من جهة العميل
const { items } = data;
// Filter by status
const fulfilled = items.filter((t) => t.status === "FULFILLED");
const refunded = items.filter((t) => t.status === "REFUNDED");
// Filter by operator
const djezzy = items.filter((t) => t.plan_code.includes("DJEZZY"));
// Filter by amount range
const large = items.filter((t) => t.topup_amount >= 1000);
// Calculate totals
const totalAmount = items.reduce((sum, t) => sum + t.topup_amount, 0);
const totalCost = items.reduce((sum, t) => sum + t.balance_amount, 0);
const profit = totalAmount - totalCost;
أفضل الممارسات
الترقيم الكفء
الترقيم الكفء
- استخدم أحجام صفحات معقولة (20-50 عنصرًا)
- خزّن النتائج مؤقتاً عند الإمكان
- نفّذ “تحميل المزيد” أو التمرير اللانهائي
- استخدم
pagination.totalPagesلتحديد ما إذا كانت هناك صفحات إضافية
التصفية بالتاريخ
التصفية بالتاريخ
- وفّر دائماً كلاً من
fromوto - استخدم تنسيق ISO 8601 الصحيح
- ضع في اعتبارك المنطقة الزمنية للمستخدم عند التصفية
- حدّد نطاقات تاريخ معقولة للأداء الأمثل
الأداء
الأداء
- خزّن بيانات القائمة مؤقتاً لفترات قصيرة
- استخدم مرشحات التاريخ للحدّ من مجموعات النتائج
- تجنّب جلب جميع الصفحات دفعة واحدة
- أنشئ فهرساً باستخدام created_at في قاعدة بياناتك المحلية
العرض للمستخدمين
العرض للمستخدمين
- اعرض الحالة مع أيقونات/ألوان
- نسّق الطوابع الزمنية بالمنطقة الزمنية المحلية
- اعرض شعارات المشغّلين
- اربط بصفحات الحالة التفصيلية
- اعرض سبب الاسترداد للشحنات الفاشلة
Endpoints ذات الصلة
إرسال الشحن
إرسال شحن هاتف محمول
التحقق من الحالة بالمرجع
البحث بالمرجع الداخلي
قائمة الخطط
عرض الخطط المتاحة

