SIMUB
Интегрируйте SMS- и временные почтовые активации SIMUB с описанием авторизации, статусов, ошибок и безопасными серверными примерами.
Каждый защищенный запрос использует API-ключ подтвержденной учетной записи SIMUB. Передавайте его только по HTTPS, храните в серверном менеджере секретов или переменной окружения и никогда не добавляйте в браузерный пакет, мобильное приложение, публичный репозиторий или снимок экрана для поддержки. Совместимый с SMSHub handler принимает параметр action, а маршруты SMS SIMUB указывают действие в пути. Выберите один интерфейс для каждой интеграции и разбирайте формат ответа, описанный именно для этого маршрута.
Вызовите getBalance для проверки средств, getServices или getServicesList для получения актуальных кодов сервисов и getCountries для кодов поддерживаемых стран. Выберите getPrices, getPricesV2 или getPricesV3 в соответствии с форматом, который умеет обрабатывать интеграция. Каталоги, количество и цены отражают текущие предложения подключенных поставщиков: кэшируйте их ненадолго, при необходимости показывайте возвращенную цену пользователю и повторно проверяйте перед покупкой. Не составляйте код сервиса или страны самостоятельно из отображаемого названия.
Покупка номера и проверка статуса являются разными операциями. Сразу сохраните идентификатор активации, чтобы тайм-аут или сбой вашего приложения не привел к потере уже зарезервированного номера.
Совместимые с SMSHub действия могут возвращать текстовые маркеры, а новые маршруты также используют JSON. BAD_KEY требует исправить или заменить ключ, а не повторять запрос. BAD_SERVICE означает неподдерживаемое действие или значение сервиса. NO_BALANCE требует пополнения, NO_NUMBERS сообщает об отсутствии подходящего предложения в данный момент, а BAD_STATUS — о недопустимом переходе состояния. Если getNumber завершился тайм-аутом, разрывом соединения или серверной ошибкой, сначала сопоставьте операцию с сохраненной активацией, историей или статусом и только потом покупайте снова; слепой повтор может создать второе бронирование.
У временной почты отдельные маршруты и ответы JSON. Запросите getPriceRests, getPrices или getRests, чтобы узнать поддерживаемые сервисы, домены, цены и наличие. Вызовите getActivation с документированными сервисом и доменом, затем сохраните возвращенный mailId. Используйте getStatus для состояния и getCode для полученного кода. setStatus и requestRefund должны соответствовать текущему состоянию и опубликованным правилам: запрос возврата не означает, что любой случай будет одобрен. Временный адрес не является постоянным ящиком или надежным способом восстановления важной учетной записи.
Значения ниже намеренно являются недействительными шаблонами. Заменяйте их только в защищенной серверной среде. В примерах curl параметры передаются отдельно и кодируются, а не соединяются вручную в строку URL.
Задайте конечные тайм-ауты подключения и ответа, применяйте ограниченную экспоненциальную задержку при опросе статуса и прекращайте его после конечного состояния. Скрывайте api_key, номера, почтовые адреса и полученные коды в журналах и трассировке. Проверяйте тип ответа, ограничивайте одновременные покупки и создавайте уведомления о повторяющихся ошибках авторизации или баланса. Используйте SIMUB только когда вы вправе создать или подтвердить целевую учетную запись и платформа разрешает такой процесс. Наличие у поставщиков, мобильные сети и фильтры платформ меняются, поэтому ни ответ API, ни прежняя статистика не гарантируют получение кода.
Храните его в серверном менеджере секретов или защищенной переменной окружения. Ограничьте доступ, замените ключ после раскрытия, скрывайте его в журналах и никогда не передавайте ненадежному клиентскому коду.
Опрашивайте статус с умеренным интервалом и ограниченной задержкой, затем остановитесь при конечном ответе. Частый цикл увеличивает нагрузку, но не ускоряет поставщика, сеть или целевую платформу.
Нет. Резервирование подтверждает выделение номера, но не отправку или принятие сообщения целевой платформой. Получение зависит от внешних поставщиков, сетей и правил платформы.
Сначала выясните, создал ли исходный запрос активацию, используя сохраненные ID, историю или проверку статуса. Повторяйте покупку только после исключения существующего бронирования, чтобы избежать двойного списания.