دليل ربط الشركاء — الأرقام
الدليل الرسمي والكامل لبيع الأرقام الأمريكية والعالمية من AXIS STORE داخل نظامك: اشترِ الرقم بسعر شريحتك، واستلم كود التحقق، وألغِ أو أعد الاستخدام أو جدّد أو مدّد — كل ذلك بمفتاح الربط نفسه.
المحتويات
هذا الدليل مستقلّ: فيه كل ما يلزم لقسم الأرقام. أساسيات الواجهة المشتركة مفصّلة في «دليل المتجر».
- 1نظرة عامة
- 2الأساسيات والمفتاح
- 3البدء السريع
- 4السيرفرات
- 5الخدمات والأسعار
- 6شراء رقم
- 7شكل ردّ الرقم وحالاته
- 8استلام كود التحقق
- 9الإلغاء والاسترداد
- 10إعادة استخدام رقم مؤقت
- 11تجديد وتمديد الإيجار الدائم
- 12التجديد التلقائي
- 13منع ازدواج العمليات
- 14الأخطاء
- 15مثال كامل
- 16أفضل الممارسات وقائمة التحقق
- 17مرجع النداءات والدعم
1نظرة عامة
أرقام هاتف لاستقبال كود التحقق (SMS): مؤقتة لتفعيلٍ واحد، أو دائمة تُستأجر لأيام.
قسم الأرقام لا يعمل كمنتجٍ عادي: الشريك يختار سيرفراً ثم خدمة (واتساب، تيليجرام…)، فيُشترى له رقم،
ثم ينتظر كود التحقق الذي يصل إلى الرقم. لذلك له نداءاته الخاصة تحت /numbers، وهي تعمل
بمفتاح الربط نفسه وبرصيد المحفظة نفسه وبسعر شريحتك.
رقم مؤقت
لتفعيلٍ واحد. يكتمل الطلب عند وصول الكود، ويُسترَد ثمنه تلقائياً إن لم يصل كود ضمن المهلة.
رقم دائم (إيجار)
يُستأجر لمدة (أيام)، ويستقبل أكواداً متعدّدة حتى انتهاء مدته، ويُجدَّد ويُمدَّد.
مفتاح واحد
المفتاح والرصيد والشريحة ومرجع منع الازدواج — كلها مشتركة مع المتجر والبروكسيات.
كيف يجري الشراء
- تجلب السيرفرات المتاحة الآن، وتختار واحداً (مؤقت أو دائم).
- تجلب خدمات السيرفر بأسعارها الحيّة بشريحتك، وما تقبله كل خدمة (ولاية، مقدّمة، إلغاء…).
- تشتري الرقم بمرجعٍ فريد من طرفك — يُخصم ثمنه من محفظتك ويعود الرقم في الرد.
- تعرض الرقم لعميلك، وتتابع حتى يصل الكود (completed) أو يُسترَد المبلغ (refunded).
2الأساسيات والمفتاح
القواعد نفسها في الأدلة الثلاثة — مختصرةً هنا.
| العنوان الأساسي | https://axissstore.com/api/partner/v1/numbers |
|---|---|
| المصادقة | ترويسة X-API-Key: axk_… في كل نداء — المفتاح نفسه الذي تستخدمه للمتجر. يُنشأ من
https://axissstore.com/api-access (لشرائح شريك VIP، شريك VIP PRO).
لا يُقبل المفتاح في الرابط أبداً، ولا يوضع في كود متصفح أو تطبيق. |
| الصيغة | JSON بترميز UTF-8. أرسل Content-Type: application/json مع كل POST وPUT. |
| الرصيد | يُخصم من محفظتك لدينا. الرصيد والشريحة يعيدهما GET https://axissstore.com/api/partner/v1/me (دليل المتجر). |
| المبالغ | بالدولار الأمريكي كنصوص عشرية مثل "0.62" — لا تحوّلها إلى float. |
| المواعيد | created_at وcompleted_at بصيغة ISO 8601 بتوقيت الخادم وقد تحمل كسور الثانية.
expires_at وuntil بالصيغة نفسها حتى الدقيقة (2026-10-14T18:30) وبتوقيت الخادم أيضاً. نصٌّ فارغ = غير معروف بعد. |
| اللغة | lang=ar (افتراضي) أو lang=en على نداءات الكتالوج. رسائل الخطأ بترويسة Accept-Language: en. |
| حدود الاستخدام | 120 نداءً في الدقيقة لكل مفتاح، و60 عملية شراء في الدقيقة لكل حساب (مشتركة مع المتجر والبروكسيات).
تحديث رقمٍ واحد: مرة كل 5 ثوانٍ. تحديث كل الأرقام: مرة كل 8 ثوانٍ. التجاوز يعيد 429 مع Retry-After. |
| المرجع | كل عملية تخصم مالاً تحمل reference فريداً من طرفك يمنع ازدواجها (القسم 13). |
3البدء السريع
من صفر إلى أول كود في أربعة نداءات.
# 1) Servers available right now curl -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/numbers/servers # 2) Services of a server, at your tier price curl -H "X-API-Key: axk_YOUR_KEY" "https://axissstore.com/api/partner/v1/numbers/services?server=us-temp-1&q=whatsapp" # 3) Buy a number — with your own unique reference curl -X POST https://axissstore.com/api/partner/v1/numbers/orders \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"server":"us-temp-1","service":"whatsapp","reference":"NUM-10001"}' # 4) Ask for the code (at most once every 5 seconds per number) curl -X POST -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/numbers/orders/NUM-10001/refresh
4السيرفرات
السيرفر يحدّد نوع الرقم (مؤقت أو دائم) ومصدره. ابدأ منه دائماً.
السيرفرات المتاحة الآن. سيرفرٌ متوقّف مؤقتاً لا يظهر — فلا تثبّت القائمة في كودك؛ اجلبها دورياً.
| المعامل | النوع | الوصف |
|---|---|---|
lang | ar | en | لغة اسم السيرفر. الافتراضي ar. |
{
"items": [
{ "key": "us-temp-1", "name": "رقم أمريكي مؤقت — سيرفر 1", "type": "temporary", "needs_country": false },
{ "key": "us-perm-1", "name": "رقم أمريكي دائم — سيرفر 1", "type": "permanent", "needs_country": false },
{ "key": "global-temp", "name": "رقم عالمي مؤقت", "type": "temporary", "needs_country": true }
],
"total": 3
}
| الحقل | المعنى |
|---|---|
key | معرّف السيرفر — يُرسَل في server مع كل نداء لاحق. |
type | temporary رقم لتفعيلٍ واحد · permanent إيجار بمدة. |
needs_country | true: الدولة تُختار لكل خدمة ويجب إرسال country عند الشراء (السيرفر العالمي). |
السيرفرات المعرّفة
| key | الاسم | النوع | الدولة |
|---|---|---|---|
us-perm-1 | رقم أمريكي دائم — سيرفر 1 | permanent |
الولايات المتحدة |
us-perm-2 | رقم أمريكي دائم — سيرفر 2 | permanent |
الولايات المتحدة |
us-temp-1 | رقم أمريكي مؤقت — سيرفر 1 | temporary |
الولايات المتحدة |
us-temp-2 | رقم أمريكي مؤقت — سيرفر 2 | temporary |
الولايات المتحدة |
us-temp-3 | رقم أمريكي مؤقت — سيرفر 3 | temporary |
الولايات المتحدة |
us-temp-4 | رقم أمريكي مؤقت — سيرفر 4 | temporary |
الولايات المتحدة |
global-temp | رقم عالمي مؤقت | temporary |
يختارها الشريك |
vip-temp-us | VIP — رقم أمريكي مؤقت (20 دقيقة) | temporary |
الولايات المتحدة |
vip-temp-uk | VIP — رقم بريطاني مؤقت (20 دقيقة) | temporary |
الولايات المتحدة |
vip-perm-us | VIP — رقم أمريكي دائم | permanent |
الولايات المتحدة |
vip-perm-uk | VIP — رقم بريطاني دائم | permanent |
الولايات المتحدة |
vip-all-us | VIP — رقم أمريكي لكل الخدمات (28 يوماً) | permanent |
الولايات المتحدة |
vip-all-uk | VIP — رقم بريطاني لكل الخدمات (30 يوماً) | permanent |
الولايات المتحدة |
قد يظهر بعضها فقط في /numbers/servers بحسب المتاح لحظة النداء.
5الخدمات والأسعار
أسعار حيّة بشريحتك، ومعها ما تقبله كل خدمة عند الشراء.
| المعامل | النوع | الوصف |
|---|---|---|
server * | نص | key السيرفر. |
q | نص | بحث في اسم الخدمة (whatsapp، telegram…). |
duration | نص | للدائم: تسعير بمدةٍ بعينها (key من durations). |
country | نص | للعالمي: رمز الدولة (code من /numbers/countries). |
limit | عدد | عدد النتائج، من 1 إلى 100 (الافتراضي 50). الأكثر طلباً أولاً. |
lang | ar | en | لغة label. |
{
"items": [{
"name": "whatsapp",
"label": "whatsapp",
"price_usd": "0.62",
"popular": true,
"country": "",
"duration": "",
"durations": [],
"state_ok": true, "area_code_ok": false,
"cancel_ok": true, "auto_refund": true,
"no_code_minutes": 10
}],
"total": 1
}
حقول الخدمة
| الحقل | المعنى |
|---|---|
name | معرّف الخدمة — هو ما يُرسَل في service عند الشراء، حرفياً. |
label | الاسم المعروض لعميلك. يختلف عن name لخدمة «أي خدمة أخرى (غير مدرجة)» فقط. |
price_usd | سعر الرقم بشريحتك. للدائم: سعر المدة duration. |
popular | من الخدمات الأكثر طلباً (تتصدّر القائمة). |
country | الدولة التي سُعِّر بها الصف (للعالمي). |
duration / durations | للدائم: المدة التي سُعِّر بها الصف، والمدد التي تقبلها الخدمة
[{ "key": "7d", "label": "7 أيام", "days": 7 }]. أرسل key كما هو — صيغته تختلف بين السيرفرات (7d أو sevenDay). |
state_ok | تقبل اختيار ولاية أمريكية (us_state). |
area_code_ok | تقبل اختيار مقدّمة الرقم (area_code، ثلاثة أرقام). |
cancel_ok | يمكن إلغاء الرقم قبل وصول كود (القسم 9). |
auto_refund / no_code_minutes | إن لم يصل كود خلال no_code_minutes دقيقة يُسترَد الثمن تلقائياً (0 = المهلة غير معلنة). |
total_usd.سعر خدمةٍ واحدة بمدةٍ أو دولةٍ بعينها — قبل عرض المبلغ على عميلك. الرد صفٌّ واحد بشكل صفوف /numbers/services.
| المعامل | الوصف |
|---|---|
server * | key السيرفر. |
service * | name الخدمة. |
duration | للدائم. |
country | للعالمي. |
curl -H "X-API-Key: axk_YOUR_KEY" "https://axissstore.com/api/partner/v1/numbers/quote?server=us-perm-2&service=whatsapp&duration=30d"
خدمة غير متاحة بهذا الاختيار تعيد 422 validation_error.
دول السيرفر، الأوفر أرقاماً أولاً. للسيرفر العالمي أرسل service أيضاً (وإلا 422).
| المعامل | الوصف |
|---|---|
server * | key السيرفر. |
service | name الخدمة — مطلوب حين needs_country = true. |
{ "items": [ { "code": "GB", "name": "United Kingdom", "count": 1840 } ], "total": 1 }
الولايات الأمريكية الخمسون بأسمائها المقبولة في us_state (الاسم الكامل بالإنجليزية).
{ "items": [ "Alabama", "Alaska", "Arizona", "..." ], "total": 50 }
6شراء رقم
يُخصم الثمن من محفظتك ويُشترى الرقم فوراً — في نداء واحد.
| الحقل | النوع | الوصف |
|---|---|---|
server * | نص | key السيرفر. |
service * | نص | name الخدمة كما عاد من /numbers/services. |
reference * | نص ≤ 100 | مرجعك الفريد لهذا الشراء — يمنع الازدواج (القسم 13). |
duration | نص | للدائم: key المدة. إن تُرك اختيرت المدة الافتراضية للخدمة. |
country | نص | رمز الدولة — مطلوب حين needs_country = true. |
us_state | نص | ولاية أمريكية من /numbers/states — فقط إن كانت state_ok. |
area_code | نص | مقدّمة من ثلاثة أرقام (213) — فقط إن كانت area_code_ok. لا يُرسَل مع us_state. |
curl -X POST https://axissstore.com/api/partner/v1/numbers/orders \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{ "server": "us-temp-1", "service": "whatsapp", "reference": "NUM-10001", "us_state": "Florida" }'
{
"reference": "AX-NUM-3F9A2B01",
"partner_reference": "NUM-10001",
"kind": "purchase", "parent": "",
"status": "processing", "state": "waiting",
"type": "temporary",
"server": "us-temp-1", "service": "whatsapp",
"name": "رقم whatsapp — رقم أمريكي مؤقت — سيرفر 1",
"phone": "+12125550100",
"codes": [], "latest_code": "",
"duration": "", "country": "", "us_state": "Florida", "area_code": "",
"expires_at": "",
"can_cancel": true, "auto_renew": false,
"total_usd": "0.62",
"created_at": "2026-10-07T14:05:31.825176", "completed_at": null
}
reference مفقود. وسيرفر غير موجود أو متوقّف يعيد 404.- الرقم يعود غالباً في الرد نفسه (
phone) والحالةprocessing— اعرضه لعميلك فوراً ليطلب الكود. - إن رفض المصدر الشراء رفضاً مؤكَّداً (لا مخزون مثلاً) يعود الرد بـ
201والحالةrefunded— المبلغ عاد لمحفظتك. - إن كانت نتيجة المصدر غير محسومة (مهلة) يبقى الطلب
processingبلا رقم، ونتابعه آلياً حتى يتّضح: رقمٌ أو استرداد.
7شكل ردّ الرقم وحالاته
كل نداءات الشراء والمتابعة والعمليات تعيد الشكل نفسه.
| الحقل | المعنى |
|---|---|
reference | مرجعنا (AX-NUM-…). |
partner_reference | مرجعك الذي أرسلته. كلاهما يصلح في أي مسار فيه {reference}. |
kind | purchase رقمٌ مشترى · reuse / renew / extend عمليةٌ على رقمٍ سابق. |
parent | للعمليات: مرجعنا للرقم الأصلي. فارغ للشراء. |
status | حالة الطلب المالية (الجدول أدناه). |
state | حالة الرقم للعرض (الجدول أدناه). |
type | temporary أو permanent. |
server / service | ما اشتُري به الرقم. |
name | وصف الطلب بالعربية كما يظهر في حسابك. |
phone | الرقم بالصيغة الدولية. فارغ إلى أن يُسنَد. |
codes / latest_code | أكواد التحقق الواصلة بالترتيب، وآخرها. للعملية reuse: أكواد دورتها الجديدة فقط. |
duration | للدائم: key المدة. |
country / us_state / area_code | ما أُرسل عند الشراء. |
expires_at | انتهاء الرقم (الدائم خصوصاً). فارغ إن لم يُعلَن. |
can_cancel | هل يُقبل /cancel الآن. |
auto_renew | هل التجديد التلقائي مفعّل (الدائم). |
total_usd | ما خُصم لهذا الطلب. |
created_at / completed_at | الإنشاء والاكتمال. |
الحالة المالية — status
| الحالة | المعنى | نهائية؟ |
|---|---|---|
| paid | خُصم الثمن والشراء جارٍ لدى المصدر. | لا |
| processing | الرقم جاهز وبانتظار الكود، أو بانتظار تأكيد المصدر. | لا |
| completed | وصل كود (أو نُفِّذت العملية). الإيجار الدائم يبقى يستقبل أكواداً بعدها. | نعم |
| refunded | لم يصل كود، أو أُلغي، أو رفضه المصدر — عاد المبلغ كاملاً. | نعم |
حالة الرقم — state
| القيمة | المعنى | ماذا تفعل |
|---|---|---|
waiting | بانتظار أول كود. | تابِع (القسم 8). |
active | إيجار دائم مكتمل ما زالت مدته جارية — قد تصله أكواد جديدة. | تابِع عند الحاجة حتى expires_at. |
done | وصل الكود وانتهى دور الرقم. | اعرض الكود وتوقّف. |
expired | انتهت المدة بلا أكواد. | توقّف. |
refunded | أُعيد المبلغ. | أعد لعميلك ماله في متجرك. |
completed عند أول كود (أو عند انتهاء مدته بلا أكواد)، ويبقى state = active
يستقبل أكواداً جديدة في codes حتى expires_at. الإيجار المستهلَك لا يُسترَد.8استلام كود التحقق
نتابع المصدر آلياً كل نصف دقيقة تقريباً؛ ويمكنك طلب التحديث الآن.
آخر حالة محفوظة للرقم (أو لعمليةٍ عليه) — بمرجعنا أو بمرجعك. لا يسأل المصدر، فهو خفيف وبلا حدّ خاص.
curl -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/numbers/orders/NUM-10001
{ "reference": "AX-NUM-3F9A2B01", "partner_reference": "NUM-10001", "status": "completed", "state": "done",
..., "phone": "+12125550100", "codes": ["482913"], "latest_code": "482913",
"completed_at": "2026-10-07T14:06:02.114093" }
يسأل المصدر الآن عن الكود ثم يعيد الرقم بشكله الكامل. بلا جسم. محدود بمرة كل 5 ثوانٍ للرقم الواحد —
التجاوز يعيد 429 مع Retry-After.
curl -X POST -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/numbers/orders/NUM-10001/refresh
أرقامك (الشراء فقط، لا العمليات التابعة) — الأحدث أولاً، حتى 100 رقم. كل عنصر بالشكل الكامل.
{ "items": [ { "reference": "AX-NUM-3F9A2B01", "phone": "+12125550100", "state": "waiting", ... } ], "total": 1 }
يسأل المصدر الآن عن كل أرقامك الجارية (waiting وactive، حتى 20 رقماً) ثم يعيد القائمة كما في
GET /numbers/orders. بلا جسم. محدود بمرة كل 8 ثوانٍ للحساب — الأنسب حين تتابع عدّة أرقام معاً.
POST …/refresh كل 5–10 ثوانٍ ما دام state = waiting،
وتوقّف عند completed أو refunded. للإيجار الدائم: حدِّث عند طلب عميلك كوداً جديداً، لا باستمرار.الطلب يظهر أيضاً في نداءات الطلبات العامة (GET https://axissstore.com/api/partner/v1/orders/{reference}) ونصّ التسليم فيه يحمل الرقم والأكواد —
لكنّ نداءات /numbers هي التي تعيدها حقولاً منفصلة.
9الإلغاء والاسترداد
المبلغ يعود لمحفظتك حين يؤكّد المصدر الاسترداد — لا لحظة الطلب.
يلغي رقماً مؤقتاً لم يصله كود. بلا جسم. متاح فقط حين can_cancel = true (الخدمة تدعم الإلغاء، والرقم ما زال منتظراً، ولم يُطلب إلغاؤه من قبل).
curl -X POST -H "X-API-Key: axk_YOUR_KEY" https://axissstore.com/api/partner/v1/numbers/orders/NUM-10001/cancel
الرد بالشكل الكامل. غالباً تبقى الحالة processing لحظات ثم تصير refunded حين يؤكّد المصدر — تابِع بـGET.
إلغاءٌ غير ممكن يعيد 422 validation_error برسالة توضّح السبب (وصل كود، انتهت مهلة الإلغاء، الخدمة لا تدعمه…).
| الحالة | ما يحدث للمبلغ |
|---|---|
لم يصل كود ضمن مهلة الخدمة (auto_refund) | يُسترَد تلقائياً — يصير الطلب refunded دون أي نداء منك. |
| ألغيتَ الرقم قبل وصول كود | يُسترَد حين يؤكّده المصدر. |
| رفض المصدر الشراء | يُسترَد فوراً. |
| وصل كود | لا استرداد — الرقم استُهلك. |
| إيجار دائم انتهت مدته | لا استرداد. |
10إعادة استخدام رقم مؤقت
كودٌ جديد على الرقم نفسه بعد اكتماله — ضمن نافذةٍ زمنية وبرسمٍ معلن.
ما يمكن فعله بالرقم الآن وبكم — من حالته الحيّة لدى المصدر. اسأله قبل عرض أي زرّ على عميلك.
{
"type": "temporary", "busy": false, "expires_at": "",
"reuse": { "price_usd": "0.35", "until": "2026-10-07T14:36" },
"renew": null, "extend": null, "auto_renew": null
}
{
"type": "permanent", "busy": false, "expires_at": "2026-10-14T14:05",
"reuse": null,
"renew": { "price_usd": "3.20", "duration": "7d", "label": "7 أيام" },
"extend": { "durations": [ { "key": "7d", "label": "7 أيام", "days": 7 },
{ "key": "30d", "label": "30 يوماً", "days": 30 } ] },
"auto_renew": { "enabled": false, "hours_before": 12 }
}
| الحقل | المعنى |
|---|---|
busy | عمليةٌ جارية على الرقم — لا تُقبل ثانيةٌ قبل انتهائها (422). |
reuse | null = غير متاحة الآن. وإلا رسمها بشريحتك وآخر موعدٍ لها. |
renew | null = غير متاح. وإلا سعر التجديد بمدة الرقم نفسها. |
extend | null = غير متاح. وإلا المدد المقبولة — سعّر كل مدة بـ/numbers/quote. |
auto_renew | null = غير متاح لهذا الرقم. وإلا حالته، وكم ساعةً قبل الانتهاء يُجدَّد. |
يخصم رسم إعادة الاستخدام ويفتح دورةً جديدة على الرقم. {reference} في المسار هو الرقم الأصلي.
| الحقل | الوصف |
|---|---|
reference * | مرجعٌ جديد فريد لهذه العملية (ليس مرجع الرقم). |
curl -X POST https://axissstore.com/api/partner/v1/numbers/orders/NUM-10001/reuse \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"reference":"NUM-10001-R1"}'
{ "reference": "AX-NUM-77C01D2E", "partner_reference": "NUM-10001-R1",
"kind": "reuse", "parent": "AX-NUM-3F9A2B01",
"status": "processing", "state": "waiting", "phone": "+12125550100", "codes": [], ...,
"total_usd": "0.35" }
تابِع العملية بمرجعها (GET أو refresh على NUM-10001-R1) حتى completed —
وكودها الجديد في codes (أكواد الدورة السابقة لا تُحتسب). إن لم يصل كود تُسترَد العملية وحدها: refunded.
11تجديد وتمديد الإيجار الدائم
كل عملية طلبٌ مستقل بثمنه ومرجعه واسترداده.
يجدّد الإيجار بمدته نفسها وبالسعر المعلن في options.renew.
| الحقل | الوصف |
|---|---|
reference * | مرجعٌ جديد فريد لهذه العملية. |
curl -X POST https://axissstore.com/api/partner/v1/numbers/orders/RENT-501/renew \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"reference":"RENT-501-REN-1"}'
يمدّد الإيجار بمدةٍ تختارها من options.extend.durations. متاح ما دام الإيجار لم ينتهِ.
| الحقل | الوصف |
|---|---|
reference * | مرجعٌ جديد فريد لهذه العملية. |
duration * | key المدة. مدة خارج القائمة تعيد 422 بلا خصم. |
curl -X POST https://axissstore.com/api/partner/v1/numbers/orders/RENT-501/extend \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"reference":"RENT-501-EXT-1","duration":"30d"}'
{ "reference": "AX-NUM-9B20E4A1", "partner_reference": "RENT-501-REN-1",
"kind": "renew", "parent": "AX-NUM-5D11C0F7",
"status": "completed", "phone": "+12125550100", "duration": "7d", ...,
"total_usd": "3.20", "completed_at": "2026-10-13T09:12:44.501220" }
- عند
completedيتقدّمexpires_atعلى الرقم الأصلي — اقرأه منGET /numbers/orders/{الرقم}. - قد تبقى العملية
processingإن نفّذها المصدر على مهل — تابِعها بمرجعها حتى تُحسم. - إن رفضها المصدر تصير
refundedويعود ثمنها، والرقم الأصلي لا يتأثر. - رقم مؤقت لا يُجدَّد ولا يُمدَّد (
422)، ولا تُقبل عمليتان معاً على الرقم نفسه.
12التجديد التلقائي
يُجدَّد الإيجار الدائم من محفظتك قبل انتهائه — دون نداءٍ منك.
| الحقل | النوع | الوصف |
|---|---|---|
enabled * | true | false | تشغيل أو إيقاف. |
curl -X PUT https://axissstore.com/api/partner/v1/numbers/orders/RENT-501/auto-renew \ -H "X-API-Key: axk_YOUR_KEY" -H "Content-Type: application/json" \ -d '{"enabled":true}'
{ "reference": "AX-NUM-5D11C0F7", "auto_renew": true }
- متاح فقط حين يعيد
options.auto_renewقيمةً غيرnull؛ وإلا422. الإيقاف مقبول دائماً. - يُجدَّد الرقم قبل انتهائه بنحو 12 ساعة، بمدته نفسها وبسعر التجديد لحظتها، ويظهر كعملية
renewفي طلباتك. - إن لم يكفِ الرصيد وقتها لا يُجدَّد الرقم ويُوقَف التجديد التلقائي له (
auto_renewيعودfalse) — راقبbalance_usd، وجدّد يدوياً بعد الشحن. - لا يحمل
reference: هو إعدادٌ لا عملية مالية، وتكراره آمن.
13منع ازدواج العمليات
الشبكة تنقطع، والخصم يجب ألّا يتكرر.
- النداءات الأربعة التي تخصم مالاً — الشراء و
reuseوrenewوextend— تحملreferenceفريداً من طرفك. بدونه يُرفض النداء بـ422قبل أي خصم. - إعادة إرسال النداء نفسه بالمرجع نفسه تعيد العملية الأولى بحالتها الحالية (وبرمز
201أيضاً) — لا رقم ثانٍ ولا خصم ثانٍ. - عند انتهاء المهلة دون رد: أعد الإرسال بالمرجع نفسه، أو استعلم
GET /numbers/orders/{reference}. - المرجع واحدٌ لحسابك كله: مرجعٌ استُخدم لمنتج في المتجر أو لبروكسي أو لعمليةٍ أخرى على رقم لا يصلح هنا — يُرفض بـ
409 conflict. استخدم بادئةً لكل نوع (NUM-،PRX-…) ولكل عملية مرجعاً جديداً. - المرجع خاصّ بحسابك: شريكٌ آخر يستخدم المرجع نفسه لا يتعارض معك.
14الأخطاء
الصيغة نفسها في كل الواجهة — ابنِ منطقك على code لا على نص الرسالة.
HTTP/1.1 422 Unprocessable Entity
{
"code": "validation_error",
"message": "هذه الخدمة لا تدعم اختيار الولاية.",
"details": {}
}
| HTTP | code | السبب | الإجراء |
|---|---|---|---|
| 401 | unauthenticated | المفتاح مفقود أو غير صالح أو ملغى، أو سُحبت صلاحية الربط. | تحقّق من الترويسة والمفتاح. |
| 402 | insufficient_balance | الرصيد لا يكفي للشراء أو للعملية. | اشحن محفظتك. لا خصم حدث. |
| 403 | account_suspended | الحساب موقوف. | تواصل مع الدعم. |
| 404 | not_found | سيرفر غير موجود أو متوقّف، أو مرجعٌ ليس رقماً لك. | تحقّق من key أو المرجع. |
| 409 | conflict | reference استُخدم لعمليةٍ أخرى. | مرجع جديد لكل عملية. |
| 422 | validation_error | اختيار غير متاح، حقل ناقص، إلغاء أو عملية غير ممكنة الآن. | اقرأ الرسالة وصحّح. لا خصم حدث. |
| 429 | rate_limited | تجاوز حدّ النداءات أو حدّ التحديث. | انتظر Retry-After ثانية. |
| 502 | numbers_provider_error | تعذّر الوصول إلى المصدر. | أعد المحاولة بعد قليل، بالمرجع نفسه. |
| 503 | numbers_list_unavailable | هذا السيرفر لا يعرض خدماته الآن. | جرّب سيرفراً آخر. |
| 503 | numbers_disabled | قسم الأرقام متوقّف مؤقتاً. | أعد المحاولة لاحقاً. |
| 5xx | http_5xx | خطأ غير متوقع أو انقطاع. | أعد المحاولة بالمرجع نفسه. |
201 من نداءات الشراء والعمليات. كل أخطاء 4xx أعلاه تُرفض قبل الخصم.
وعند 5xx أو انقطاع الاتصال لا تفترض شيئاً — استعلم بمرجعك.15مثال كامل
شراء رقم مؤقت ثم انتظار الكود، بمعالجة صحيحة للأخطاء وإعادة المحاولة.
Python
import os, time, requests API = "https://axissstore.com/api/partner/v1" HEADERS = {"X-API-Key": os.environ["AXIS_API_KEY"]} # key from an environment variable def call(method, path, **kw): for attempt in range(5): try: r = requests.request(method, API + path, headers=HEADERS, timeout=30, **kw) except requests.RequestException: time.sleep(2 ** attempt); continue # network error: retry with the same reference if r.status_code == 429: time.sleep(int(r.headers.get("Retry-After", "5"))); continue if r.status_code >= 500: time.sleep(2 ** attempt); continue data = r.json() if r.status_code >= 400: raise RuntimeError(f"{data['code']}: {data['message']}") return data raise RuntimeError("service unavailable") def buy_number(server, service, shop_order_id, on_number, wait_minutes=12): ref = f"NUM-{shop_order_id}" # fixed per purchase number = call("POST", "/numbers/orders", json={ "server": server, "service": service, "reference": ref}) shown = False deadline = time.time() + wait_minutes * 60 while number["status"] in ("paid", "processing") and time.time() < deadline: if number["phone"] and not shown: on_number(number["phone"]); shown = True # show it to your customer now time.sleep(8) number = call("POST", f"/numbers/orders/{ref}/refresh") return number # completed (code in latest_code), refunded, or still waiting n = buy_number("us-temp-1", "whatsapp", 10001, on_number=print) print(n["status"], n["phone"], n["latest_code"])
Node.js
const API = 'https://axissstore.com/api/partner/v1'; const headers = { 'X-API-Key': process.env.AXIS_API_KEY, 'Content-Type': 'application/json' }; async function axis(method, path, body) { const res = await fetch(API + path, { method, headers, body: body && JSON.stringify(body), signal: AbortSignal.timeout(30000) }); const data = await res.json(); if (!res.ok) throw new Error(`${data.code}: ${data.message}`); return data; } let number = await axis('POST', '/numbers/orders', { server: 'us-temp-1', service: 'whatsapp', reference: 'NUM-10001' }); console.log('number:', number.phone); while (['paid', 'processing'].includes(number.status)) { await new Promise(r => setTimeout(r, 8000)); number = await axis('POST', '/numbers/orders/NUM-10001/refresh'); } console.log(number.status, number.latest_code);
16أفضل الممارسات وقائمة التحقق
ما يميّز ربطاً يعمل لسنوات عن ربطٍ يتعطّل عند أول انقطاع.
| الموضوع | التوصية |
|---|---|
| السيرفرات | اجلب /numbers/servers دورياً ولا تثبّت القائمة. عند numbers_list_unavailable اعرض سيرفراً آخر. |
| الأسعار | لا تخزّنها أكثر من دقائق؛ أعد /numbers/quote قبل عرض المبلغ النهائي. المحاسبة على total_usd في الرد. |
| القيود | لا تعرض الولاية أو المقدّمة أو الإلغاء إلا إن كانت أعلامها true للخدمة. |
| المتابعة | حدِّث كل 5–10 ثوانٍ، واحترم Retry-After. لعدّة أرقام استخدم POST /numbers/refresh. |
| المهلة | مهلة 30 ثانية لكل نداء. عند انتهائها لا تفترض الفشل — أعد بالمرجع نفسه. |
| الاسترداد | حين يصير الطلب refunded يكون المبلغ قد عاد لمحفظتك — أعده لعميلك في متجرك. |
| العمليات | اسأل options قبل عرض إعادة الاستخدام أو التجديد أو التمديد، وتابِع العملية بمرجعها هي. |
| السجلات | سجّل reference وpartner_reference لكل عملية. لا تسجّل المفتاح. |
قبل الإطلاق
| البند | |
|---|---|
| ☐ | المفتاح محفوظ على الخادم فقط (متغيّر بيئة)، ولا يظهر في أي كود متصفح أو تطبيق أو سجل. |
| ☐ | كل شراء وكل عملية (reuse / renew / extend) تحمل reference فريداً يُحفظ في قاعدة بياناتك قبل الإرسال. |
| ☐ | مراجع الأرقام لا تتقاطع مع مراجع المتجر والبروكسيات (بادئة لكل نوع). |
| ☐ | الرقم يُعرض لعميلك فور عودته، والكود فور وصوله. |
| ☐ | المتابعة تتوقف عند completed وrefunded، وتحترم حدّ التحديث. |
| ☐ | حالة refunded تُعيد المبلغ لعميلك في متجرك. |
| ☐ | الولاية والمقدّمة والمدة والدولة تُتحقّق في متجرك من أعلام الخدمة قبل الطلب. |
| ☐ | تنبيه عند انخفاض الرصيد — خصوصاً مع التجديد التلقائي. |
| ☐ | جرّبت شراء رقم حقيقي واحد من البداية حتى الكود، وإلغاء رقمٍ آخر. |
17مرجع النداءات والدعم
كل نداءات قسم الأرقام في جدول واحد.
| الفعل | المسار | الوظيفة | يخصم؟ |
|---|---|---|---|
| GET | /numbers/servers | السيرفرات المتاحة الآن. | لا |
| GET | /numbers/services | خدمات سيرفر وأسعارها. | لا |
| GET | /numbers/quote | سعر خدمة بمدة أو دولة. | لا |
| GET | /numbers/countries | دول السيرفر. | لا |
| GET | /numbers/states | الولايات الأمريكية. | لا |
| POST | /numbers/orders | شراء رقم. | نعم |
| GET | /numbers/orders | أرقامي. | لا |
| POST | /numbers/refresh | تحديث كل الأرقام الجارية. | لا |
| GET | /numbers/orders/{reference} | حالة رقم أو عملية. | لا |
| POST | /numbers/orders/{reference}/refresh | طلب الكود الآن. | لا |
| POST | /numbers/orders/{reference}/cancel | إلغاء رقم مؤقت. | لا (استرداد) |
| GET | /numbers/orders/{reference}/options | العمليات المتاحة وأسعارها. | لا |
| POST | /numbers/orders/{reference}/reuse | إعادة استخدام رقم مؤقت. | نعم |
| POST | /numbers/orders/{reference}/renew | تجديد إيجار دائم. | نعم |
| POST | /numbers/orders/{reference}/extend | تمديد إيجار دائم. | نعم |
| PUT | /numbers/orders/{reference}/auto-renew | التجديد التلقائي. | لاحقاً، عند كل تجديد |
- الدعم الفني: من صفحة «الدعم» في حسابك على https://axissstore.com — اذكر مرجع الرقم (
AX-NUM-…أو مرجعك) وتوقيت النداء. - مفاتيحك: https://axissstore.com/api-access
- هذه الوثيقة على الإنترنت: https://axissstore.com/developers/numbers
سجل التغييرات
| الإصدار | التغييرات |
|---|---|
| 1.2 | أول إصدار لنداءات الأرقام في واجهة الشركاء: الكتالوج، الشراء، الكود، الإلغاء، إعادة الاستخدام، التجديد، التمديد، والتجديد التلقائي. |
© 2026 AXIS GROUP — AXIS STORE. جميع الحقوق محفوظة.
هذه الوثيقة مرجعٌ تقني لشركاء AXIS STORE، وقد تُحدَّث — النسخة الأحدث دائماً على https://axissstore.com/developers/numbers.