اختر الرقم والسعر معاً
اشترِ رقماً محدداً واحداً تختاره من بحث جديد عن الأرقام المتاحة. استخدم الحقل info.uuid من النتيجة المحددة بوصفه معرّف الرقم، وإحدى قيم price[].uuid من النتيجة نفسها بوصفها معرّف السعر. يقبل المسار أيضاً الرقم المخزّن كاملاً، لكن معرّف البلد أو المنطقة أو البادئة لا يحل محل اختيار رقم.
لا يؤدي البحث أو الاطّلاع على الأسعار المحفوظة إلى حجز رقم أو تثبيت سعره. تأكّد من سعر الإعداد والسعر الشهري وتعرفة الدقيقة الواردة والدقائق والقنوات المشمولة للخيار المحدد، وكذلك من صلاحيات الشراء ومتطلبات التسجيل الخاصة بالحساب. المبلغ الأساسي الأولي في الدالة المساعدة التي خضعت للمراجعة هو مجموع سعر الإعداد والسعر الشهري؛ ويجب التأكّد من كامل الرسوم والشروط الخاصة بمزوّد الخدمة للباقة المحددة.
أرسل طلب شراء مزوّداً بضوابط باستخدام POST
استخدم حساباً مفعّلاً لواجهة API عبر HTTPS من عنوان IP مصدر مسموح به. ينفّذ الأمر التالي عملية شراء، وليس طلب عرض سعر أو تشغيلاً تجريبياً. اضبط جميع المتغيّرات من الاختيار الجديد نفسه للرقم والسعر. تحتفظ حقول الحدود القصوى بالبادئة القديمة restore_quote_؛ وتستخدمها البوابة الحالية أيضاً لشراء أرقام محددة مع تطبيق الضوابط.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode "restore_quote_price_id=$PRICE_ID" \
--data-urlencode "restore_quote_setup=$SETUP_PRICE" \
--data-urlencode "restore_quote_monthly=$MONTHLY_PRICE" \
--data-urlencode "restore_quote_per_minute=$PER_MINUTE_PRICE" \
--data-urlencode "restore_quote_channels=$CHANNELS" \
"https://api.multitel.net/v3/rentnumber/$NUMBER_ID/$PRICE_ID"استخدم POST ببيانات نموذج كما هو موضّح. تدعم الدالة المساعدة أيضاً تحليل JSON وغلاف الخيارات، لكن هذه المراجعة لم تثبت التكافؤ الكامل لجميع مسارات عروض الأسعار ومزوّدي الخدمة. لا تستخدم GET للشراء، رغم أن هذا المنسّق القديم لا يتضمّن ضابطاً صريحاً لطريقة الطلب.
| الحقل | المعنى |
|---|---|
| NUMBER_ID | المعرّف الفريد UUID للرقم المحدد من البحث، أو الرقم المخزّن كاملاً. رقم واحد لكل طلب. |
| PRICE_ID | المعرّف الفريد UUID للسعر المرتبط بذلك الرقم المحدد وبحسابك. قدّمه دائماً بشكل صريح. |
| restore_quote_price_id | يجب أن يطابق معرّف السعر الذي تم التوصّل إليه. يؤدي تقديم هذا الحقل إلى تفعيل فحوص عرض السعر؛ وهو ليس مفتاحاً لمنع تكرار أثر الطلب. |
| restore_quote_setup | الحد الأقصى المقبول لسعر الإعداد، بقيمة عددية منتهية وغير سالبة. |
| restore_quote_monthly | الحد الأقصى المقبول للسعر الشهري، بقيمة عددية منتهية وغير سالبة. |
| restore_quote_per_minute | الحد الأقصى المقبول لتعرفة الدقيقة الواردة، بقيمة عددية منتهية وغير سالبة. |
| restore_quote_channels | العدد الصحيح الدقيق للقنوات في خيار السعر المحدد، وليس طلباً لباقة قنوات مختلفة. |
قدّم جميع الحقول العددية لعرض السعر كلما قدّمت معرّف سعر العرض. يؤدي تغيّر المعرّف، أو تجاوز السعر أحد الحدود القصوى، أو غياب حد أقصى أو عدم صلاحيته، أو تغيّر عدد القنوات، أو انشغال قفل عرض السعر، إلى إرجاع رمز API 409 قبل إرسال طلب التأجير إلى مزوّد الخدمة المحدد. تسمح المقارنات بهامش صغير لأخطاء الفاصلة العائمة؛ لذا استخدم قيم الباقة الفعلية المعروضة بدلاً من سعر قرّبته يدوياً.
لا تجعل هذه الضوابط سير العمل بأكمله تشغيلاً تجريبياً أو معاملة ذرية. فقد تُجرى عمليات بحث عن التسجيل أو تهيئة الهوية أو أعمال أخرى للدالة المساعدة قبل هذه الفحوص. كما أنها لا تثبّت المخزون الخارجي ولا تحل محل قيود الشراء على مستوى الحساب.
التسجيل والتفعيل
عند الحاجة، أضف حقل النموذج RegistrationID الذي يحتوي على المعرّف الفريد UUID لملف التسجيل المملوك للعميل. وهو ليس معرّف مستند إثبات مرفوع أو عنوان مورّد أو كيان هوية منفصل. تبحث الدالة المساعدة عن الملف ضمن الحساب الذي تمت مصادقته وترفض الملفات المفقودة أو غير المتاحة.
يسمح بعض مخزون الأرقام المدعوم بالشراء قبل اكتمال التسجيل؛ بينما يتطلّب مخزون آخر وجود ملف قبل الشراء. وقد يظل التحقّق أو التهيئة الخاصان بمشغّل الاتصالات مطلوبين. لا تفسّر نجاح الشراء أو عدم إجراء فحص مسبق على أنه إعفاء من التسجيل أو تفعيل فوري.
عند وجوده في الاستجابة، فإن الحقل registration_requirements يحدّد مرجع البحث عن المتطلبات المنظّمة مع البلد ونوع الرقم. استخدم دليل التسجيل وسير عمل تقديم الإثبات لاستيفاء المتطلبات المنطبقة. النص والبيانات الوصفية المُرجعة لا يشكّلان بحد ذاتهما موافقة على ملف.
تجنّب استبدال الباقة دون تنبيه
يمكن للمنسّق القديم استنتاج سعر لم يُقدَّم من بيانات الرقم المخزّنة مؤقتاً. ويمكنه أيضاً اللجوء إلى أحدث سعر للحساب لبادئة مخزّنة مؤقتاً عندما لا يعود معرّف السعر المقدَّم صراحةً موجوداً، وتحديث اختيار السعر المسموح به والمخزّن مؤقتاً. لا تعتمد على هذه البدائل لاختيار الباقة التي وافق عليها العميل.
قدّم السعر المحدد صراحةً وحقول ضوابط عرض السعر المطابقة له. يرفض ضابط معرّف عرض السعر اللجوء إلى معرّف آخر قبل إرسال طلب التأجير. حدّث البحث واحصل على اختيار جديد معتمد بعد حدوث تعارض بسبب سعر قديم، بدلاً من إزالة الضوابط لفرض الشراء.
لا توجد فترة حجز مضمونة أو مدة صلاحية للتخزين المؤقت تُفرض على جميع المسارات. يُعاد التحقّق من توفّر الرقم وحدود الأسعار الخاصة بالحساب وسياسات الشراء ضمن سير العمل، لكن السلوك الكامل الخاص بكل مزوّد خدمة لا يزال قيد المراجعة.
إعدادات متقدمة: إعدادات التوجيه الافتراضية للحساب
قد ترث عملية الشراء وجهات المكالمات الصوتية الحالية للحساب، والوجهات البديلة عند التعطّل، ووجهة الرسائل النصية القصيرة، وتفضيل خط الربط الخاص بمنشأ المكالمات. راجع هذه الإعدادات الافتراضية قبل الطلب؛ فعدم تقديم خيارات التوجيه لا يضمن الحصول على رقم بلا إعدادات. تفعّل الدالة المساعدة التي خضعت للمراجعة التجديد التلقائي افتراضياً.
| الخيار | آلية تحديد القيمة |
|---|---|
| uri, uri2, uri3 | ترث القيم غير المقدَّمة الإعدادات الافتراضية المقابلة في الحساب. وتؤدي القيم الفارغة المقدَّمة صراحةً إلى مسح القيمة في الدالة المساعدة بدلاً من وراثتها. استخدم وجهات صالحة تناسب وضع التوجيه المحدد. |
| smsuri | إذا لم تُقدَّم القيمة، تُورث وجهة الرسائل النصية القصيرة الخاصة بالحساب؛ أما تقديم قيمة فارغة صراحةً فيمسحها في الدالة المساعدة. |
| origintrunk | تكون الأولوية لمعرّف خط الربط المقدَّم صراحةً إذا تم التعرّف عليه. وإذا تعذّر تحديد القيمة، فقد يُستخدم تفضيل الحساب أو الإعداد الافتراضي القديم بدلاً من إرجاع خطأ. |
| forward_destination, forwarding_destination, type | أسماء بديلة لوضع التوجيه، تُعتمد عندما تكون غير فارغة وفق ترتيب الأولوية المذكور. استخدم القيم المدعومة من إعدادات التوجيه الخاصة بالحساب، ولا تخمّن قيمة عددية للوضع. |
| RegistrationID | بحث عن ملف تسجيل ضمن نطاق العميل؛ وهو منفصل عن وجهات التوجيه. |
| autorenew | القيمة الافتراضية هي 1. تستخدم الدالة المساعدة فحصاً لكون القيمة غير فارغة، لذا لا تؤدي القيمة 0 إلى تعطيل التجديد بشكل موثوق عبر حقل الشراء هذا. استخدم وسائل إدارة التجديد المدعومة للحساب وتحقّق من الإعداد المحفوظ. |
تصف هذه القواعد سلوك الدالة المساعدة المشتركة، ولا تضمن أن يحفظ كل مورّد جميع الإعدادات الاختيارية بالطريقة نفسها. توجد حقول قديمة أخرى للمكالمات الصوتية والبريد الصوتي والفاكس والرسائل النصية القصيرة، لكنها لا تزال تتطلّب مراجعة كاملة خاصة بكل مزوّد خدمة. تحقّق من الإعدادات المحفوظة للرقم المشترى عبر سير عمل الحساب قبل الاعتماد على المكالمات أو الرسائل.
الاستجابة
مثال افتراضي لعملية شراء دون تعقيدات؛ تختلف القيم والميزات باختلاف الباقة المحددة.
{
"status": {
"code": 200,
"msg": ""
},
"response": {
"number": "12025550123",
"price": {
"per_minute": "0.0100",
"free_minutes": "100",
"setup_price": "2.00",
"monthly_price": "4.00",
"channels": "2",
"overflow": "0"
},
"features": [
"voice"
],
"needs_registration": 0,
"registration_requirements": null
}
}يستخدم المنسّق حقليه الخاصين status.code/status.msg وغلاف response، دون ضمان وجود الحقل status.results. عند حدوث خطأ، تكون قائمة الاستجابة فارغة عادةً. وعند النجاح، افحص الرقم والسعر المُرجعين، ثم طابق السجلات مع مخزون الحساب وحالة التسجيل. قبول مزوّد الخدمة ليس اختباراً فعلياً للمكالمات الصوتية أو الرسائل النصية القصيرة أو الفاكس.
الأخطاء والنتائج غير المؤكدة
| رمز API | المعنى |
|---|---|
| 403 | قد تمنع المعالجةَ قيودُ الأسعار أو الشراء الخاصة بالحساب، أو اختيار سعر غير متاح، أو ملف تسجيل يتعذّر الوصول إليه. |
| 404 | اختيار الرقم أو السعر أو البادئة مفقود أو غير متاح. |
| 409 | الرقم مفعّل بالفعل، أو لم يعد أحد ضوابط عرض السعر مطابقاً، أو أن عملية أخرى مزوّدة بضوابط تحتفظ بالقفل. |
| 422 | معلومات التسجيل مطلوبة أو غير مكتملة أو يتعذّر تهيئتها في مسارات التسجيل التي خضعت للمراجعة. |
| 500 ورموز أخرى خاصة بمزوّد الخدمة أو الحساب | فشل لدى مزوّد الخدمة أو في المعالجة المحلية أو بسبب سياسة. لا تُعدّ هذه الرموز دليلاً قاطعاً في جميع الحالات على عدم حدوث شراء أو فرض رسوم. |
اقرأ محتوى استجابة API الفعلي إلى جانب حالة HTTP. فقد يقبل مزوّد خارجي طلب تأجير، ثم يفشل الإشعار المحلي أو التسجيل أو أي إجراء معالجة آخر. تستخدم بعض عمليات تخصيص المخزون المحلي معاملات قاعدة البيانات، لكن لا توجد آلية عامة للتراجع عن طلبات مزوّدي الخدمة الخارجيين. لا يوفّر هذا المنسّق مفتاحاً من جهة العميل لمنع تكرار أثر الطلب.
تحقّق من تطابق السجلات قبل إعادة المحاولة
- احفظ الرقم والسعر وحدود عرض السعر التي تمت الموافقة عليها في سجل الطلب داخل تطبيقك قبل إرسال الطلب مرة واحدة.
- اطّلع على مخزون الأرقام المشتراة وتفاصيل الرقم للحساب نفسه بعد الطلب، بما في ذلك بعد انتهاء المهلة أو حدوث خطأ.
- إذا كان الرقم موجوداً، فتحقّق من سعره وتجديده وتوجيهه وحالة تسجيله بدلاً من إرسال طلب شراء آخر.
- إذا ظلت النتيجة غير مؤكدة، فاطلب من الدعم التحقّق من تطابق طلب مزوّد الخدمة مع فوترة الحساب قبل إعادة المحاولة. لا تكفي رسالة خطأ أو علامة نجاح في سجل قديم وحدها دليلاً.
- بعد التأكّد من الملكية والتفعيل، أكمل فحوص التوجيه واختبارات الخدمة المعتادة للحساب.