Chọn số cùng với mức giá
Mua một số cụ thể được chọn từ một lần tìm kiếm mới các số còn khả dụng. Dùng info.uuid của mục đã chọn làm ID số và dùng một trong các giá trị price[].uuid của chính mục đó làm ID giá. Tuyến API này cũng chấp nhận số đầy đủ đã lưu, nhưng ID quốc gia, khu vực hoặc đầu số không thể thay thế cho việc chọn một số cụ thể.
Việc tìm kiếm hoặc đọc thông tin giá đã lưu không giữ chỗ cho số hay cố định giá của số đó. Hãy xác nhận phí thiết lập, phí hằng tháng, cước mỗi phút gọi đến, số phút và số kênh được bao gồm của lựa chọn đã chọn, cùng với quyền mua và các yêu cầu đăng ký của tài khoản. Trong hàm hỗ trợ đã được xem xét, số tiền cơ bản ban đầu là phí thiết lập cộng phí hằng tháng; cần xác nhận đầy đủ các khoản phí và điều khoản riêng của nhà cung cấp cho gói đã chọn.
Gửi yêu cầu mua có điều kiện bảo vệ bằng POST
Sử dụng tài khoản API đã được bật qua HTTPS từ địa chỉ IP nguồn được phép. Lệnh sau thực hiện việc mua, không phải yêu cầu báo giá hay chạy thử. Đặt mọi biến theo cùng một lựa chọn số và giá vừa được tìm kiếm. Các trường giới hạn giữ nguyên tiền tố cũ restore_quote_; cổng thông tin hiện tại cũng dùng các trường này để mua số cụ thể với điều kiện bảo vệ.
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"Dùng POST với dữ liệu biểu mẫu như minh họa. Hàm hỗ trợ cũng có khả năng phân tích JSON và cấu trúc bao bọc tùy chọn, nhưng lần xem xét này chưa xác nhận khả năng xử lý tương đương hoàn toàn trên mọi luồng báo giá và nhà cung cấp. Không dùng GET để mua dù bộ điều phối cũ này không có cơ chế kiểm tra phương thức rõ ràng.
| Trường | Ý nghĩa |
|---|---|
| NUMBER_ID | UUID của số được chọn từ kết quả tìm kiếm, hoặc số đầy đủ đã lưu. Mỗi yêu cầu chỉ dành cho một số. |
| PRICE_ID | UUID của mức giá gắn với số đã chọn và tài khoản của bạn. Luôn cung cấp giá trị này một cách tường minh. |
| restore_quote_price_id | Phải khớp với ID giá đã được xác định. Việc cung cấp trường này bật các bước kiểm tra báo giá; đây không phải khóa bảo đảm tính lũy đẳng. |
| restore_quote_setup | Phí thiết lập tối đa được chấp nhận, dưới dạng giá trị số hữu hạn không âm. |
| restore_quote_monthly | Phí hằng tháng tối đa được chấp nhận, dưới dạng giá trị số hữu hạn không âm. |
| restore_quote_per_minute | Cước mỗi phút gọi đến tối đa được chấp nhận, dưới dạng giá trị số hữu hạn không âm. |
| restore_quote_channels | Số lượng kênh chính xác, là số nguyên, của tùy chọn giá đã chọn; đây không phải yêu cầu chuyển sang một gói có số kênh khác. |
Cung cấp tất cả các trường báo giá dạng số mỗi khi cung cấp ID giá của báo giá. Nếu ID thay đổi, giá vượt giới hạn, giới hạn bị thiếu hoặc không hợp lệ, số lượng kênh thay đổi hoặc khóa báo giá đang bận, API sẽ trả về mã 409 trước khi gửi yêu cầu đến nhà cung cấp dịch vụ thuê số đã chọn. Các phép so sánh cho phép một sai số dấu phẩy động nhỏ; hãy dùng các giá trị thực tế được hiển thị của gói thay vì giá tự làm tròn.
Các điều kiện bảo vệ không biến toàn bộ quy trình thành một lần chạy thử hoặc một giao dịch nguyên tử. Việc tra cứu đăng ký, tạo lập thông tin định danh hoặc các tác vụ khác của hàm hỗ trợ có thể diễn ra trước các bước kiểm tra này. Các điều kiện đó cũng không cố định kho số bên ngoài hay thay thế các hạn chế mua ở cấp tài khoản.
Đăng ký và kích hoạt
Khi được yêu cầu, hãy thêm trường biểu mẫu RegistrationID chứa UUID của hồ sơ đăng ký thuộc sở hữu của khách hàng. Đây không phải ID của tài liệu chứng minh đã tải lên, địa chỉ nhà cung cấp hay một thực thể định danh riêng biệt. Hàm hỗ trợ xác định hồ sơ theo tài khoản đã xác thực và từ chối hồ sơ bị thiếu hoặc không khả dụng.
Một số nguồn số được hỗ trợ cho phép mua trước khi hoàn tất đăng ký; các nguồn số khác yêu cầu có hồ sơ trước khi mua. Vẫn có thể cần xác minh hoặc cấp phát dịch vụ theo yêu cầu riêng của nhà mạng. Không được hiểu việc mua thành công hoặc việc không thực hiện bước kiểm tra ban đầu là được miễn đăng ký hay được kích hoạt ngay lập tức.
Nếu có, trường registration_requirements trong phản hồi xác định thông tin tra cứu yêu cầu có cấu trúc theo quốc gia và loại số. Dùng danh mục đăng ký và quy trình cung cấp tài liệu chứng minh để hoàn thành các yêu cầu áp dụng. Bản thân văn bản và siêu dữ liệu được trả về không có nghĩa là hồ sơ đã được phê duyệt.
Tránh việc thay thế gói mà không thông báo
Bộ điều phối cũ có thể suy ra mức giá bị bỏ trống từ dữ liệu số trong bộ nhớ đệm. Khi ID giá được cung cấp tường minh không còn tồn tại, bộ điều phối cũng có thể chuyển sang mức giá mới nhất của tài khoản cho đầu số đã lưu trong bộ nhớ đệm, đồng thời cập nhật lựa chọn giá được phép trong bộ nhớ đệm. Không dựa vào các cơ chế dự phòng này để chọn gói mà khách hàng đã phê duyệt.
Cung cấp tường minh mức giá đã chọn cùng các trường bảo vệ báo giá tương ứng. Điều kiện bảo vệ ID báo giá từ chối việc chuyển sang ID khác trước khi gửi yêu cầu thuê số. Sau xung đột do giá đã lỗi thời, hãy tìm kiếm lại và lấy lựa chọn mới được phê duyệt thay vì bỏ các điều kiện bảo vệ để ép thực hiện việc mua.
Không có thời gian giữ chỗ được bảo đảm hoặc thời hạn bộ nhớ đệm được thực thi thống nhất trên mọi luồng xử lý. Tình trạng khả dụng của số, giới hạn giá của tài khoản và chính sách mua được kiểm tra lại trong quy trình, nhưng toàn bộ hành vi riêng của từng nhà cung cấp vẫn đang được xem xét.
Nâng cao: các giá trị định tuyến mặc định của tài khoản
Số được mua có thể kế thừa các đích thoại, đích dự phòng khi xảy ra sự cố, đích SMS và tùy chọn trung kế khởi tạo cuộc gọi hiện có của tài khoản. Hãy xem lại các giá trị mặc định đó trước khi đặt mua; việc bỏ qua các tùy chọn định tuyến không bảo đảm rằng số sẽ chưa được cấu hình. Hàm hỗ trợ đã được xem xét bật tự động gia hạn theo mặc định.
| Tùy chọn | Cách xác định giá trị |
|---|---|
| uri, uri2, uri3 | Các giá trị bị bỏ qua sẽ kế thừa giá trị mặc định tương ứng của tài khoản. Giá trị rỗng được cung cấp tường minh sẽ xóa giá trị trong hàm hỗ trợ thay vì kế thừa. Dùng các đích hợp lệ phù hợp với chế độ định tuyến đã chọn. |
| smsuri | Giá trị bị bỏ qua sẽ kế thừa đích SMS của tài khoản; giá trị rỗng được cung cấp tường minh sẽ xóa đích đó trong hàm hỗ trợ. |
| origintrunk | ID trung kế được cung cấp tường minh và được nhận diện sẽ được ưu tiên. Nếu không xác định được giá trị, hệ thống có thể dùng tùy chọn của tài khoản hoặc giá trị mặc định cũ thay vì báo lỗi. |
| forward_destination, forwarding_destination, type | Các tên thay thế không rỗng cho chế độ định tuyến, theo thứ tự ưu tiên nêu trên. Dùng các giá trị được hỗ trợ trong cấu hình định tuyến của tài khoản, không tự đoán mã số của chế độ. |
| RegistrationID | Tra cứu hồ sơ đăng ký trong phạm vi khách hàng; mục này tách biệt với các đích định tuyến. |
| autorenew | Mặc định là 1. Hàm hỗ trợ kiểm tra giá trị không rỗng, vì vậy giá trị 0 không bảo đảm tắt gia hạn thông qua trường mua này. Hãy dùng chức năng quản lý gia hạn được hỗ trợ của tài khoản và xác minh cài đặt đã lưu. |
Đây là cách xử lý của hàm hỗ trợ dùng chung, không bảo đảm rằng mọi nhà cung cấp đều lưu mọi cài đặt tùy chọn theo cùng một cách. Các trường cũ khác dành cho thoại, thư thoại, fax và SMS vẫn tồn tại nhưng còn cần được xem xét đầy đủ theo từng nhà cung cấp. Xác minh cấu hình đã lưu của số đã mua qua quy trình tài khoản trước khi dựa vào khả năng gọi điện hoặc nhắn tin.
Phản hồi
Ví dụ giả định cho một lần mua đơn giản; các giá trị và tính năng thay đổi tùy theo gói đã chọn.
{
"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
}
}Bộ điều phối sử dụng các trường riêng status.code/status.msg và cấu trúc bao bọc response; không bảo đảm có trường status.results. Khi có lỗi, danh sách phản hồi thường rỗng. Khi thành công, kiểm tra số và giá được trả về, sau đó đối soát kho số của tài khoản và trạng thái đăng ký. Việc nhà cung cấp chấp nhận không phải là phép thử thực tế đối với thoại, SMS hay fax.
Lỗi và kết quả chưa xác định
| Mã API | Ý nghĩa |
|---|---|
| 403 | Các hạn chế về giá hoặc quyền mua của tài khoản, lựa chọn giá không khả dụng hoặc hồ sơ đăng ký không thể truy cập có thể ngăn quá trình xử lý. |
| 404 | Lựa chọn số, giá hoặc đầu số bị thiếu hoặc không khả dụng. |
| 409 | Số đã hoạt động, một điều kiện bảo vệ báo giá không còn khớp hoặc một thao tác khác có điều kiện bảo vệ đang giữ khóa. |
| 422 | Thông tin đăng ký là bắt buộc, chưa đầy đủ hoặc không thể được tạo lập trong các luồng đăng ký đã được xem xét. |
| 500 và các mã khác của nhà cung cấp hoặc tài khoản | Lỗi từ nhà cung cấp, quá trình xử lý nội bộ hoặc chính sách. Những lỗi này không phải lúc nào cũng chứng minh rằng chưa có việc mua hay tính phí xảy ra. |
Đọc nội dung phản hồi API thực tế cùng với trạng thái HTTP. Nhà cung cấp bên ngoài có thể chấp nhận yêu cầu thuê số trước khi việc thông báo nội bộ, đăng ký hoặc xử lý khác gặp lỗi. Một số thao tác cấp số từ kho nội bộ sử dụng giao dịch cơ sở dữ liệu, nhưng không có cơ chế hoàn tác áp dụng chung cho các đơn hàng của nhà cung cấp bên ngoài. Bộ điều phối này không có khóa bảo đảm tính lũy đẳng do máy khách cung cấp.
Đối soát trước khi thử lại
- Lưu số, giá và các giới hạn báo giá đã được phê duyệt vào bản ghi đơn hàng của ứng dụng trước khi gửi yêu cầu một lần.
- Sau yêu cầu, đọc kho số đã mua và thông tin chi tiết của số trong cùng tài khoản, kể cả sau khi hết thời gian chờ hoặc gặp lỗi.
- Nếu số đã tồn tại, xác minh giá, trạng thái gia hạn, định tuyến và đăng ký của số thay vì gửi thêm yêu cầu mua.
- Nếu kết quả vẫn chưa rõ, hãy nhờ bộ phận hỗ trợ đối soát đơn hàng của nhà cung cấp và việc tính phí tài khoản trước khi thử lại. Chỉ một thông báo lỗi hoặc cờ thành công trong nhật ký cũ là chưa đủ bằng chứng.
- Sau khi xác nhận quyền sở hữu và trạng thái kích hoạt, hãy hoàn tất các bước kiểm tra định tuyến và thử nghiệm dịch vụ thông thường của tài khoản.