Wybierz numer i cenę razem
Kup jeden konkretny numer wybrany z aktualnych wyników wyszukiwania dostępnych numerów. Jako identyfikatora numeru użyj wartości info.uuid wybranego wpisu, a jako identyfikatora ceny — jednej z wartości price[].uuid tego samego wpisu. Ścieżka przyjmuje również pełny zapisany numer, ale identyfikator kraju, obszaru lub prefiksu nie zastępuje wyboru numeru.
Wyszukiwanie ani odczytywanie zapisanych cen nie rezerwuje numeru ani nie zamraża jego ceny. Potwierdź wybraną opłatę aktywacyjną, opłatę miesięczną, stawkę za minutę połączenia przychodzącego, minuty i kanały w pakiecie, a także uprawnienia konta do zakupów i wymagania rejestracyjne. Początkowa kwota bazowa w przeanalizowanym module pomocniczym to suma opłaty aktywacyjnej i miesięcznej; dla wybranego planu trzeba potwierdzić wszystkie opłaty i warunki właściwe dla dostawcy.
Wyślij zabezpieczone żądanie zakupu metodą POST
Korzystaj z aktywnego konta API przez HTTPS z dozwolonego źródłowego adresu IP. Poniższe polecenie dokonuje zakupu — nie służy do wyceny ani wykonania próbnego. Ustaw każdą zmienną na podstawie tego samego aktualnego wyboru numeru i ceny. Pola limitów zachowują historyczny prefiks restore_quote_; obecny portal używa ich również do zabezpieczonych zakupów konkretnych numerów.
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"Użyj żądania formularzowego POST, jak pokazano w przykładzie. Moduł pomocniczy obsługuje również parsowanie JSON i struktury opakowującej opcje, ale ten przegląd nie potwierdza pełnej równoważności obsługi wszystkich ścieżek wyceny i dostawców. Nie używaj GET do zakupów, mimo że ten starszy koordynator nie ma jawnego zabezpieczenia ograniczającego metodę.
| Pole | Znaczenie |
|---|---|
| NUMBER_ID | UUID wybranego numeru z wyników wyszukiwania lub pełny zapisany numer. Jeden numer na żądanie. |
| PRICE_ID | UUID ceny powiązanej z wybranym numerem i Twoim kontem. Zawsze podawaj go jawnie. |
| restore_quote_price_id | Musi odpowiadać identyfikatorowi ceny ustalonemu przez system. Podanie tego pola włącza kontrole wyceny; nie jest ono kluczem idempotencji. |
| restore_quote_setup | Maksymalna akceptowana opłata aktywacyjna, jako skończona nieujemna wartość liczbowa. |
| restore_quote_monthly | Maksymalna akceptowana opłata miesięczna, jako skończona nieujemna wartość liczbowa. |
| restore_quote_per_minute | Maksymalna akceptowana stawka za minutę połączenia przychodzącego, jako skończona nieujemna wartość liczbowa. |
| restore_quote_channels | Dokładna całkowita liczba kanałów w wybranym wariancie cenowym, a nie żądanie innego planu kanałów. |
Za każdym razem, gdy podajesz identyfikator ceny wyceny, podaj wszystkie liczbowe pola wyceny. Zmieniony identyfikator, cena powyżej limitu, brakujący lub nieprawidłowy limit, zmieniona liczba kanałów albo zajęta blokada wyceny powodują zwrócenie kodu API 409 przed przekazaniem zlecenia do wybranego dostawcy wynajmu numeru. Porównania dopuszczają niewielką tolerancję zmiennoprzecinkową; używaj rzeczywistych wyświetlanych wartości planu zamiast ręcznie zaokrąglonej ceny.
Zabezpieczenia nie sprawiają, że cały proces staje się wykonaniem próbnym lub transakcją. Wyszukiwanie danych rejestracyjnych, tworzenie tożsamości lub inne działania modułu pomocniczego mogą nastąpić przed tymi kontrolami. Zabezpieczenia nie zamrażają też dostępności numerów u zewnętrznych dostawców ani nie zastępują ograniczeń zakupowych na poziomie konta.
Rejestracja i aktywacja
Gdy jest to wymagane, dodaj pole formularza RegistrationID zawierające UUID profilu rejestracyjnego należącego do klienta. Nie jest to identyfikator przesłanego dokumentu potwierdzającego, adresu u dostawcy ani odrębnego obiektu tożsamości. Moduł pomocniczy wyszukuje profil w ramach uwierzytelnionego konta i odrzuca profile nieistniejące lub niedostępne.
Część obsługiwanych zasobów numeracyjnych pozwala na zakup przed ukończeniem rejestracji; inne zasoby wymagają profilu przed zakupem. Nadal może być wymagana weryfikacja lub konfiguracja usługi właściwa dla operatora. Nie traktuj udanego zakupu ani pominięcia kontroli wstępnej jako zwolnienia z rejestracji lub natychmiastowej aktywacji.
Jeśli w odpowiedzi występuje pole registration_requirements, wskazuje ono sposób wyszukania uporządkowanych wymagań według kraju i typu numeru. Skorzystaj z katalogu rejestracyjnego i procesu przekazywania dokumentów potwierdzających, aby spełnić odpowiednie wymagania. Zwrócony tekst i metadane same w sobie nie oznaczają zatwierdzenia profilu.
Unikaj niejawnej zamiany planu
Starszy koordynator może ustalić pominiętą cenę na podstawie danych numeru w pamięci podręcznej. Może również użyć zastępczo najnowszej ceny konta dla prefiksu z pamięci podręcznej, gdy jawnie podany identyfikator ceny już nie istnieje, i zaktualizować zapisany w pamięci podręcznej wybór dozwolonej ceny. Nie polegaj na tych mechanizmach zastępczych przy wyborze planu zatwierdzonego przez klienta.
Podaj jawnie wybraną cenę i odpowiadające jej pola zabezpieczeń wyceny. Zabezpieczenie identyfikatora wyceny odrzuca zastąpienie go innym identyfikatorem przed przekazaniem zlecenia wynajmu. Po konflikcie wynikającym z nieaktualnej ceny odśwież wyszukiwanie i uzyskaj ponowne zatwierdzenie wyboru, zamiast usuwać zabezpieczenia w celu wymuszenia zakupu.
Nie ma gwarantowanego okresu rezerwacji ani jednakowo egzekwowanego czasu ważności pamięci podręcznej dla wszystkich ścieżek. W procesie ponownie sprawdzane są dostępność numeru, limity cenowe konta i zasady zakupów, ale pełne działanie właściwe dla poszczególnych dostawców nadal jest analizowane.
Zaawansowane: domyślne ustawienia routingu konta
Kupowany numer może odziedziczyć istniejące na koncie cele połączeń głosowych, cele awaryjne, cel wiadomości SMS i preferowany trunk origination. Sprawdź te ustawienia domyślne przed zamówieniem; pominięcie opcji routingu nie gwarantuje otrzymania numeru bez konfiguracji. Przeanalizowany moduł pomocniczy domyślnie włącza automatyczne odnawianie.
| Opcja | Sposób ustalania wartości |
|---|---|
| uri, uri2, uri3 | Pominięte wartości dziedziczą odpowiednie ustawienia domyślne konta. Jawnie podane puste wartości kasują wartość w module pomocniczym zamiast dziedziczyć ustawienie. Używaj prawidłowych celów odpowiednich dla wybranego trybu routingu. |
| smsuri | Pominięta wartość dziedziczy cel wiadomości SMS z konta; jawnie podana pusta wartość kasuje go w module pomocniczym. |
| origintrunk | Rozpoznany, jawnie podany identyfikator trunku ma pierwszeństwo. Wartość, której nie uda się rozpoznać, może spowodować użycie preferencji konta lub historycznego ustawienia domyślnego zamiast błędu. |
| forward_destination, forwarding_destination, type | Niepuste aliasy trybu routingu, w podanej kolejności pierwszeństwa. Używaj obsługiwanych wartości z konfiguracji routingu konta, a nie odgadniętej liczby oznaczającej tryb. |
| RegistrationID | Wyszukiwanie profilu rejestracyjnego ograniczone do danego klienta; jest niezależne od celów routingu. |
| autorenew | Domyślna wartość to 1. Moduł pomocniczy sprawdza, czy wartość jest niepusta, więc 0 nie wyłącza niezawodnie odnawiania za pośrednictwem tego pola zakupu. Skorzystaj z obsługiwanych funkcji zarządzania odnawianiem na koncie i sprawdź zapisane ustawienie. |
Opisuje to działanie wspólnego modułu pomocniczego, a nie gwarantuje, że każdy dostawca zapisuje wszystkie opcjonalne ustawienia w identyczny sposób. Istnieją też inne starsze pola dotyczące połączeń głosowych, poczty głosowej, faksu i SMS, ale nadal wymagają pełnego przeglądu dla poszczególnych dostawców. Zanim zaczniesz polegać na działaniu połączeń lub wiadomości, sprawdź zapisaną konfigurację kupionego numeru w ramach obsługi konta.
Odpowiedź
Fikcyjny przykład prostego zakupu; wartości i funkcje zależą od wybranego planu.
{
"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
}
}Koordynator używa własnych pól status.code/status.msg oraz struktury opakowującej response i nie gwarantuje obecności pola status.results. W przypadku błędu lista odpowiedzi jest zazwyczaj pusta. Po powodzeniu sprawdź zwrócony numer i cenę, a następnie zweryfikuj zgodność zasobów konta i stanu rejestracji. Akceptacja przez dostawcę nie jest testem rzeczywistych połączeń głosowych, SMS ani faksu.
Błędy i niepewne wyniki
| Kod API | Znaczenie |
|---|---|
| 403 | Ograniczenia cenowe lub zakupowe konta, niedostępny wybór ceny albo niedostępny profil rejestracyjny mogą zablokować przetwarzanie. |
| 404 | Brakujący lub niedostępny wybór numeru, ceny albo prefiksu. |
| 409 | Numer jest już aktywny, warunki zabezpieczenia wyceny nie są już zgodne albo inna zabezpieczona operacja utrzymuje blokadę. |
| 422 | Dane rejestracyjne są wymagane, niekompletne lub nie można ich utworzyć w systemie w ramach przeanalizowanych ścieżek rejestracji. |
| 500 i inne kody dostawcy lub konta | Błąd dostawcy, lokalnego przetwarzania lub wynikający z obowiązujących zasad. Kody te nie stanowią w każdym przypadku dowodu, że nie doszło do zakupu ani naliczenia opłaty. |
Odczytaj rzeczywistą treść odpowiedzi API oraz status HTTP. Zewnętrzny dostawca może zaakceptować wynajem, zanim lokalne powiadomienie, rejestracja lub inne przetwarzanie zakończą się błędem. Niektóre przydziały z lokalnych zasobów numeracyjnych korzystają z transakcji bazodanowych, ale nie istnieje uniwersalny mechanizm wycofywania zamówień u zewnętrznych dostawców. Ten koordynator nie obsługuje klucza idempotencji klienta.
Zweryfikuj stan przed ponowieniem żądania
- Przed jednokrotnym wysłaniem żądania zapisz zatwierdzony numer, cenę i limity wyceny w rekordzie zamówienia w swojej aplikacji.
- Po wysłaniu żądania odczytaj wykaz kupionych numerów i szczegóły numeru dla tego samego konta, również po przekroczeniu limitu czasu lub błędzie.
- Jeśli numer istnieje, sprawdź jego cenę, odnawianie, routing i stan rejestracji zamiast wysyłać kolejne żądanie zakupu.
- Jeśli wynik nadal jest niepewny, przed ponowieniem żądania poproś pomoc techniczną o zweryfikowanie zgodności zamówienia u dostawcy i rozliczeń konta. Sam komunikat o błędzie lub znacznik powodzenia w starszym dzienniku nie stanowi wystarczającego dowodu.
- Po potwierdzeniu przypisania numeru do konta i aktywacji przeprowadź standardowe dla konta kontrole routingu i testy usług.