Dezvoltatori

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

Achiziționați un număr de telefon selectat

Trimiteți un număr și un preț aprobate, cu verificări de protecție a ofertei, apoi verificați și corelați datele privind deținerea și activarea înainte de a reîncerca.

Pe această pagină
  1. Alegeți împreună numărul și prețul
  2. Trimiteți prin POST o cerere de achiziție cu verificări de protecție
  3. Înregistrare și activare
  4. Evitați înlocuirea planului fără notificare
  5. Avansat: setările implicite de rutare ale contului
  6. Răspuns
  7. Erori și rezultate incerte
  8. Verificați și corelați datele înainte de a reîncerca

Alegeți împreună numărul și prețul

Achiziționați un singur număr specific, selectat dintr-o căutare nouă a numerelor disponibile. Folosiți valoarea info.uuid a înregistrării selectate drept ID al numărului și una dintre valorile price[].uuid ale aceleiași înregistrări drept ID al prețului. Ruta acceptă și numărul complet stocat, dar un ID de țară, zonă sau prefix nu poate înlocui selectarea unui număr.

Căutarea sau citirea tarifelor salvate nu rezervă un număr și nu îi fixează prețul. Confirmați taxa de configurare, prețul lunar, tariful pe minut pentru apelurile primite, minutele și canalele incluse pentru opțiunea selectată, precum și permisiunile de achiziție și cerințele de înregistrare ale contului. În componenta auxiliară analizată, suma de bază inițială este taxa de configurare plus prețul lunar; toate taxele și condițiile specifice furnizorului trebuie confirmate pentru planul selectat.

Trimiteți prin POST o cerere de achiziție cu verificări de protecție

Folosiți un cont API activat, prin HTTPS, de la o adresă IP sursă permisă. Comanda următoare efectuează o achiziție, nu solicită o ofertă și nu este o simulare. Setați toate variabilele pe baza aceleiași selecții noi de număr și preț. Câmpurile de plafon păstrează prefixul vechi restore_quote_; portalul actual le folosește și pentru achizițiile de numere specifice cu verificări de protecție.

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"

Folosiți POST cu date de formular, conform exemplului. Componenta auxiliară poate analiza și date JSON sau date încapsulate într-o structură de opțiuni, dar această analiză nu stabilește o echivalență completă pentru toate fluxurile de ofertare și toate fluxurile furnizorilor. Nu folosiți GET pentru achiziții, chiar dacă acest coordonator vechi nu are o verificare explicită a metodei.

Calea cererii de achiziție și câmpurile ofertei
CâmpSemnificație
NUMBER_IDUUID-ul numărului selectat din căutare sau numărul complet stocat. Un singur număr per cerere.
PRICE_IDUUID-ul prețului asociat numărului selectat și contului dumneavoastră. Furnizați-l întotdeauna explicit.
restore_quote_price_idTrebuie să corespundă ID-ului de preț determinat. Furnizarea acestui câmp activează verificările ofertei; acesta nu este o cheie de idempotență.
restore_quote_setupTaxa maximă de configurare acceptată, exprimată ca valoare numerică finită, nenegativă.
restore_quote_monthlyPrețul lunar maxim acceptat, exprimat ca valoare numerică finită, nenegativă.
restore_quote_per_minuteTariful maxim acceptat pe minut pentru apelurile primite, exprimat ca valoare numerică finită, nenegativă.
restore_quote_channelsNumărul întreg exact de canale al opțiunii de preț selectate, nu o solicitare pentru un alt plan de canale.

Furnizați toate câmpurile numerice ale ofertei ori de câte ori furnizați ID-ul de preț al ofertei. Un ID modificat, un preț peste plafon, un plafon lipsă sau nevalid, un număr de canale modificat ori o blocare a ofertei deja ocupată determină returnarea codului API 409 înainte ca cererea să fie trimisă furnizorului de închiriere selectat. Comparațiile permit o mică toleranță pentru numerele în virgulă mobilă; folosiți valorile efectiv afișate ale planului, nu un preț rotunjit manual.

Verificările de protecție nu transformă întregul flux într-o simulare sau într-o tranzacție. Căutarea datelor de înregistrare, crearea identităților sau alte operațiuni ale componentei auxiliare pot avea loc înaintea acestor verificări. De asemenea, ele nu fixează disponibilitatea stocului extern și nu înlocuiesc restricțiile de achiziție la nivel de cont.

Înregistrare și activare

Atunci când este necesar, adăugați câmpul de formular RegistrationID care conține UUID-ul profilului de înregistrare deținut de client. Acesta nu este ID-ul unui document justificativ încărcat, al unei adrese a furnizorului sau al unei entități de identitate separate. Componenta auxiliară identifică profilul în contextul contului autentificat și respinge profilurile lipsă sau indisponibile.

Unele numere din stocul acceptat pot fi achiziționate înainte de finalizarea înregistrării; altele necesită un profil înainte de achiziție. Pot fi în continuare necesare validări sau operațiuni de configurare specifice operatorului. Nu interpretați o achiziție reușită sau omiterea unei verificări prealabile ca pe o scutire de înregistrare ori o activare imediată.

Atunci când este prezent, câmpul din răspuns registration_requirements identifică interogarea structurată a cerințelor, cu țara și tipul numărului. Folosiți catalogul de înregistrare și fluxul pentru documente justificative pentru a îndeplini cerințele aplicabile. Textul și metadatele returnate nu aprobă prin ele însele un profil.

Evitați înlocuirea planului fără notificare

Coordonatorul vechi poate deduce un preț omis din datele numărului stocate în cache. De asemenea, poate folosi ca alternativă cel mai recent preț al contului pentru un prefix stocat în cache atunci când un ID de preț furnizat explicit nu mai există și poate actualiza selecția prețului permis stocată în cache. Nu vă bazați pe aceste mecanisme alternative pentru a selecta planul aprobat de un client.

Furnizați explicit prețul selectat și câmpurile corespunzătoare de protecție a ofertei. Verificarea de protecție a ID-ului ofertei respinge folosirea unui alt ID înainte de trimiterea cererii de închiriere. După un conflict cauzat de un preț neactualizat, refaceți căutarea și obțineți o nouă selecție aprobată, în loc să eliminați verificările de protecție pentru a forța achiziția.

Nu există o perioadă de rezervare garantată sau o durată de valabilitate a cache-ului aplicată uniform tuturor fluxurilor. Disponibilitatea numărului, limitele de preț ale contului și politicile de achiziție sunt verificate din nou în cadrul fluxului, însă comportamentul complet specific fiecărui furnizor este încă în curs de analiză.

Avansat: setările implicite de rutare ale contului

O achiziție poate moșteni destinațiile vocale existente ale contului, destinațiile de rezervă în caz de defecțiune, destinația SMS și preferința pentru trunchiul de originare. Verificați aceste setări implicite înainte de a comanda; omiterea opțiunilor de rutare nu garantează un număr neconfigurat. Componenta auxiliară analizată activează implicit reînnoirea automată.

Opțiuni de rutare recunoscute de componenta auxiliară comună
OpțiuneComportamentul de determinare a valorii
uri, uri2, uri3Valorile omise moștenesc setările implicite corespunzătoare ale contului. Valorile furnizate explicit ca goale șterg valoarea din componenta auxiliară, în loc să o moștenească. Folosiți destinații valide, potrivite modului de rutare selectat.
smsuriO valoare omisă moștenește destinația SMS a contului; o valoare furnizată explicit ca goală o șterge din componenta auxiliară.
origintrunkUn ID de trunchi furnizat explicit și recunoscut are prioritate. O valoare care nu poate fi identificată poate duce la folosirea preferinței contului sau a valorii implicite vechi, în loc să producă o eroare.
forward_destination, forwarding_destination, typeDenumiri alternative pentru modul de rutare, luate în considerare dacă nu sunt goale, în această ordine de prioritate. Folosiți valori acceptate din configurația de rutare a contului, nu un mod numeric ales prin presupunere.
RegistrationIDCăutarea profilului de înregistrare, limitată la clientul respectiv; este separată de destinațiile de rutare.
autorenewValoarea implicită este 1. Componenta auxiliară verifică dacă valoarea este nevidă, astfel că 0 nu dezactivează în mod fiabil reînnoirea prin acest câmp de achiziție. Folosiți mecanismele acceptate de gestionare a reînnoirii contului și verificați setarea salvată.

Acestea sunt regulile de funcționare ale componentei auxiliare comune, nu o garanție că fiecare furnizor salvează identic fiecare setare opțională. Există și alte câmpuri vechi pentru voce, mesagerie vocală, fax și SMS, dar acestea necesită în continuare o analiză completă specifică fiecărui furnizor. Verificați configurația salvată a numărului achiziționat prin fluxul contului înainte de a vă baza pe apeluri sau mesaje.

Răspuns

Exemplu fictiv pentru o achiziție fără complicații; valorile și funcționalitățile variază în funcție de planul selectat.

{
  "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
  }
}

Coordonatorul folosește propriile câmpuri status.code/status.msg și structura de răspuns response, fără a garanta existența câmpului status.results. O eroare are, în general, o listă de răspuns goală. În caz de succes, verificați numărul și prețul returnate, apoi verificați și corelați datele din inventarul contului și starea înregistrării. Acceptarea de către furnizor nu reprezintă un test real de voce, SMS sau fax.

Erori și rezultate incerte

Principalele coduri de rezultat ale coordonatorului
Cod APISemnificație
403Restricțiile de preț sau de achiziție ale contului, o selecție de preț indisponibilă ori un profil de înregistrare inaccesibil pot bloca procesarea.
404Numărul, prețul sau prefixul selectat lipsește ori este indisponibil.
409Numărul este deja activ, o condiție de protecție a ofertei nu mai corespunde sau o altă operațiune protejată deține blocarea.
422Informațiile de înregistrare sunt obligatorii, sunt incomplete sau nu pot fi introduse în sistemele necesare în cadrul fluxurilor de înregistrare analizate.
500 și alte coduri ale furnizorului sau contuluiEșec la furnizor, la procesarea locală sau din cauza unei politici. Aceste coduri nu dovedesc în toate cazurile că nu a avut loc nicio achiziție sau taxare.

Citiți atât corpul efectiv al răspunsului API, cât și starea HTTP. Un furnizor extern poate accepta o închiriere înainte ca notificarea locală, înregistrarea sau o altă procesare să eșueze. Unele alocări din stocul local folosesc tranzacții de bază de date, dar nu există un mecanism universal de anulare a comenzilor către furnizorii externi. Acest coordonator nu dispune de o cheie de idempotență pentru client.

Verificați și corelați datele înainte de a reîncerca

  1. Păstrați numărul, prețul și plafoanele ofertei aprobate în înregistrarea comenzii din aplicația dumneavoastră înainte de a trimite cererea o singură dată.
  2. Citiți inventarul numerelor achiziționate și detaliile numărului pentru același cont după cerere, inclusiv după expirarea timpului de așteptare sau după o eroare.
  3. Dacă numărul există, verificați prețul, reînnoirea, rutarea și starea înregistrării acestuia, în loc să trimiteți o altă cerere de achiziție.
  4. Dacă rezultatul rămâne incert, solicitați echipei de asistență să verifice și să coreleze comanda furnizorului și facturarea contului înainte de a reîncerca. Un mesaj de eroare sau un indicator de succes dintr-un jurnal vechi nu constituie, de unul singur, o dovadă suficientă.
  5. După confirmarea deținerii și activării numărului, efectuați verificările obișnuite de rutare și testele de servicii ale contului.