מפתחים

POST/v3/rentnumber/{number_id}/{price_id}

רכישת מספר טלפון נבחר

שלחו מספר אחד ומחיר שאושרו, עם מנגנוני הגנה על הצעת המחיר, ולאחר מכן בדקו והתאימו את נתוני הבעלות וההפעלה לפני ניסיון חוזר.

בעמוד זה
  1. בחרו את המספר והמחיר יחד
  2. שלחו בקשת רכישה מוגנת באמצעות POST
  3. רישום והפעלה
  4. מנעו החלפת מסלול ללא הודעה
  5. מתקדם: ברירות המחדל לניתוב בחשבון
  6. תשובה
  7. שגיאות ותוצאות שאינן ודאיות
  8. בדקו והתאימו את הנתונים לפני ניסיון חוזר

בחרו את המספר והמחיר יחד

רכשו מספר מסוים אחד שנבחר מחיפוש עדכני של מספרים זמינים. השתמשו בשדה 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 מציין את חיפוש הדרישות המובנות לפי מדינה וסוג מספר. השתמשו בקטלוג הרישום ובתהליך הגשת האסמכתאות כדי להשלים את הדרישות החלות. הטקסט והמטא־נתונים המוחזרים אינם כשלעצמם אישור לפרופיל.

מנעו החלפת מסלול ללא הודעה

רכיב התיאום הוותיק יכול להסיק מחיר שלא סופק מתוך נתוני מספר שבמטמון. הוא יכול גם להשתמש כחלופה במחיר העדכני ביותר של החשבון עבור קידומת שבמטמון כאשר מזהה מחיר שסופק במפורש כבר אינו קיים, ולעדכן את בחירת המחיר המורשה שבמטמון. אל תסתמכו על חלופות אלה לבחירת המסלול שהלקוח אישר.

ספקו במפורש את המחיר שנבחר ואת שדות ההגנה התואמים של הצעת המחיר. מנגנון ההגנה על מזהה הצעת המחיר דוחה מעבר למזהה חלופי לפני שליחת בקשת ההשכרה. לאחר התנגשות עקב מחיר שאינו עדכני, רעננו את החיפוש וקבלו אישור חדש לבחירה, במקום להסיר את מנגנוני ההגנה כדי לכפות את הרכישה.

אין תקופת שמירה מובטחת או משך תוקף של המטמון שנאכף באופן אחיד בכל מסלולי העיבוד. זמינות המספר, מגבלות המחיר של החשבון ומדיניות הרכישה נבדקות מחדש במהלך התהליך, אך ההתנהגות המלאה הייחודית לכל ספק עדיין נבדקת.

מתקדם: ברירות המחדל לניתוב בחשבון

רכישה עשויה לרשת את יעדי השיחות הקיימים בחשבון, את יעדי הגיבוי במקרה כשל, את יעד ה־SMS ואת העדפת קו הגישור למקור השיחות. בדקו ברירות מחדל אלה לפני ההזמנה; אי־אספקת אפשרויות ניתוב אינה מבטיחה מספר ללא הגדרות. רכיב העזר שנבדק מפעיל חידוש אוטומטי כברירת מחדל.

אפשרויות ניתוב שרכיב העזר המשותף מזהה
אפשרותאופן קביעת הערך
uri, uri2, uri3ערכים שלא סופקו יורשים את ברירות המחדל המתאימות של החשבון. ערכים ריקים שסופקו במפורש מנקים את הערך ברכיב העזר במקום לרשת אותו. השתמשו ביעדים תקינים המתאימים למצב הניתוב שנבחר.
smsuriערך שלא סופק יורש את יעד ה־SMS של החשבון; ערך ריק שסופק במפורש מנקה אותו ברכיב העזר.
origintrunkמזהה מפורש ומזוהה של קו גישור מקבל קדימות. ערך שלא ניתן לפענח עשוי להוביל לשימוש בהעדפת החשבון או בברירת המחדל הוותיקה במקום להפיק שגיאה.
forward_destination, forwarding_destination, typeשמות חלופיים למצב הניתוב שערכם אינו ריק, לפי סדר הקדימות הזה. השתמשו בערכים נתמכים מתוך הגדרות הניתוב של החשבון, ולא בערך מספרי מנוחש של מצב ניתוב.
RegistrationIDחיפוש פרופיל רישום המוגבל ללקוח; הוא נפרד מיעדי הניתוב.
autorenewברירת המחדל היא 1. רכיב העזר בודק אם הערך אינו ריק, ולכן 0 אינו משבית באופן מהימן את החידוש דרך שדה רכישה זה. השתמשו במנגנון הנתמך לניהול חידושים בחשבון ואמתו את ההגדרה שנשמרה.

זהו אופן הפעולה של רכיב העזר המשותף, ולא הבטחה שכל ספק שומר כל הגדרה אופציונלית באופן זהה. קיימים שדות ותיקים נוספים לשיחות, לתא קולי, לפקס ול־SMS, אך הם עדיין דורשים בדיקה מלאה לכל ספק. אמתו את ההגדרות השמורות של המספר שנרכש באמצעות תהליך העבודה בחשבון לפני שתסתמכו על שיחות או הודעות.

תשובה

דוגמה בדויה לרכישה פשוטה; הערכים והתכונות משתנים בהתאם למסלול שנבחר.

{
  "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. במקרה של שגיאה, רשימת התשובה בדרך כלל ריקה. במקרה של הצלחה, בדקו את המספר והמחיר שהוחזרו, ולאחר מכן בדקו והתאימו את נתוני המלאי בחשבון ואת מצב הרישום. אישור הספק אינו בדיקה בפועל של שיחות, SMS או פקס.

שגיאות ותוצאות שאינן ודאיות

קודי התוצאה העיקריים של רכיב התיאום
קוד APIמשמעות
403מגבלות מחיר או רכישה של החשבון, בחירת מחיר שאינה זמינה או פרופיל רישום שאינו נגיש עלולים לחסום את העיבוד.
404בחירת מספר, מחיר או קידומת חסרה או שאינה זמינה.
409המספר כבר פעיל, מנגנון הגנה על הצעת המחיר כבר אינו תואם או שפעולה מוגנת אחרת מחזיקה בנעילה.
422פרטי הרישום נדרשים, אינם שלמים או שלא ניתן להקצותם במסלולי הרישום שנבדקו.
500 וקודים אחרים של הספק או החשבוןכשל אצל הספק, בעיבוד המקומי או עקב מדיניות. קודים אלה אינם הוכחה גורפת לכך שלא בוצעו רכישה או חיוב.

קראו את גוף תשובת ה־API בפועל וכן את סטטוס ה־HTTP. ספק חיצוני עשוי לאשר השכרה לפני שהודעה מקומית, רישום או עיבוד אחר נכשלים. חלק מהקצאות המלאי המקומי משתמשות בטרנזקציות של מסד הנתונים, אך אין מנגנון אחיד לביטול הזמנות אצל ספקים חיצוניים. רכיב תיאום זה אינו כולל מפתח אידמפוטנטיות של הלקוח.

בדקו והתאימו את הנתונים לפני ניסיון חוזר

  1. שמרו ברשומת ההזמנה ביישום שלכם את המספר, המחיר ותקרות הצעת המחיר שאושרו, לפני שליחה חד־פעמית של הבקשה.
  2. קראו את מלאי המספרים שנרכשו ואת פרטי המספר עבור אותו חשבון לאחר הבקשה, גם לאחר חריגה מזמן ההמתנה או שגיאה.
  3. אם המספר קיים, אמתו את מחירו, את החידוש, את הניתוב ואת מצב הרישום שלו במקום לשלוח בקשת רכישה נוספת.
  4. אם התוצאה עדיין אינה ודאית, בקשו מהתמיכה לבדוק ולהתאים את נתוני ההזמנה אצל הספק ואת החיוב בחשבון לפני ניסיון חוזר. הודעת שגיאה או דגל הצלחה ביומן הוותיק לבדם אינם ראיה מספקת.
  5. לאחר אישור הבעלות וההפעלה, השלימו את בדיקות הניתוב ובדיקות השירות הרגילות של החשבון.