Надёжная интеграция SMS разделяет поиск в каталоге, привязанное к пользователю предложение, идемпотентное создание заказа, чтение состояния и подтверждённую отмену. Храните ключи поставщиков на сервере и проверяйте владельца при каждом запросе. Неопределённый ответ требует сверки состояния, а не автоматической повторной покупки или возврата без подтверждения.
Отделите клиентский интерфейс от доступа к поставщику
Браузер должен обращаться к API вашего приложения, а сервер — к поставщику SMS. Храните учётные данные поставщика в секретах среды исполнения и возвращайте только необходимые авторизованному пользователю поля. Открытый каталог отличается от личного аккаунта или ящика. Проверяйте владельца при каждом действии, включая опрос состояния, отмену и завершение. Одной аутентификации на маршруте покупки недостаточно.
Сделайте предложение достоверным и краткосрочным
Реализованный POST /api/v1/quotes в ReceiveSMSGo создаёт предложение, привязанное к пользователю и действующее 60 секунд. Сервер рассчитывает USD-цену как max($0.39, конвертированная стоимость поставщика × 2). При заказе клиент передаёт идентификатор предложения, а не цену, которой сервер должен доверять. После истечения запросите новое предложение. Наличие может исчезнуть между поиском и покупкой, поэтому явно обрабатывайте ошибки доступности.
Резервируйте один раз и разбирайте неопределённые покупки
POST /api/v1/orders требует Idempotency-Key и quoteId. Повторное использование того же ключа для той же операции возвращает существующий заказ. Резерв кошелька и обновление журнала выполняются атомарно. При неоднозначном ответе на покупку заказ переходит на рассмотрение вместо автоматической повторной покупки. Идемпотентность защищает границу приложения, но сама не решает тайм-аут поставщика.
- Создайте один ключ для одной покупки и сохраняйте его при повторах.
- Передайте актуальный идентификатор предложения с авторизованным пользователем.
- Сверьте неоднозначный результат перед началом другой покупки.
Опрашивайте свой заказ без перегрузки поставщиков
GET /api/v1/orders/{id} возвращает заказ пользователя и может обновить активное состояние поставщика. Реализация допускает проверку поставщика не чаще одного раза в пять секунд для заказа. Разделяйте ожидание, получение, завершение, отмену, истечение и рассмотрение. Не придумывайте время истечения, если единицы измерения в документации неясны. Закрытие браузера не доказывает окончания удалённого заказа.
Подтвердите отмену до изменения баланса
POST /api/v1/orders/{id} принимает действия cancel и finish. Отмена блокируется на 120 секунд после создания; затем сервер запрашивает подтверждение поставщика перед единственным возвратом. Для завершения нужен полученный код SMS. Параллельные действия используют переходы состояний, исключающие пересечение работы. Ошибка сети не означает успешной отмены и не разрешает повторное начисление.
Проверяйте уведомления и отличайте код от готовности к эксплуатации
Входящий обратный вызов не становится автоматически достоверным источником. После проверки подписи Stripe перед зачислением выполняется запрос исходной записи платежа. Уведомление о статусе SMS без подписи — лишь сигнал для получения статуса заказа с аутентификацией. Тестовые и рабочие события Stripe должны соответствовать секрету своего endpoint, аккаунту и среде пополнения. Внешние обратные вызовы должны быть доступны; перенаправление не является доказательством оплаты. API рабочего пространства требуют аутентифицированную сессию сайта, а не публичный API-ключ разработчика. Перед интеграцией изучите включённые операции и OpenAPI.
Полезные вопросы, понятные ответы
Можно поместить ключ API поставщика в код фронтенда?
Нет. Храните его в серверных секретах среды исполнения. Фронтенд должен обращаться к вашему API с авторизованным пользователем.
Повторять покупку после тайм-аута с новым ключом?
Сначала получите и сверьте исходный заказ. Новый ключ означает другую покупку и может создать дополнительное списание.
API ReceiveSMSGo — открытый сервис с ключами разработчика?
Нет. Операции используют авторизованную сессию сайта. Отдельный продукт с публичными API-ключами и полностью проверенными промышленными операциями пока не предоставляется.
Источники и дополнительные материалы
Источники описывают собственные сервисы и могут меняться. До выбора номера проверьте актуальные требования платформы.
Разберитесь в процессе до начала.
Изучите выбор сервиса, варианты стран и состояние SMS в рабочем пространстве. Предложения и наличие зависят от поставщика; принятие номера и доставка не гарантируются. Для кошелька и заказов нужен вход.
Открыть рабочее пространство


