Чтение 5 минут

Как подключить внешний сервис по API


Как подключить внешний сервис по API - Студия Вебтую

API — это способ, которым одна программа обращается к другой. Сайт спрашивает у службы доставки стоимость отправления, у банка — статус платежа, у учётной системы — остаток на складе, у CRM — карточку клиента. Со стороны бизнеса это выглядит просто: «подключите нам расчёт доставки». Со стороны разработки за этой фразой стоит набор решений, от которых зависит, будет ли интеграция работать через полгода и что произойдёт, когда чужой сервис перестанет отвечать. Разберём, как выглядит подключение по шагам, о чём договариваться заранее и что обычно идёт не так.

Как устроено взаимодействие

В общем виде схема одинакова почти у всех сервисов. Ваш сайт отправляет запрос на определённый адрес, передавая ключ доступа и параметры: город, вес, номер заказа. Сервис отвечает данными в структурированном виде. Дальше эти данные нужно проверить, преобразовать и показать пользователю или записать в базу.

Обмен бывает двух видов, и их полезно различать. В первом случае инициатор — ваш сайт: он спрашивает, сервис отвечает. Во втором инициатор — внешний сервис: он сам присылает уведомление о событии, например об изменении статуса платежа. Второй случай требует отдельного адреса на вашей стороне, который принимает такие уведомления, и отдельной проверки их подлинности.

Что уточнить до начала работы

ВопросПочему важно
Есть ли тестовый контурИначе отладка идёт на боевых данных и реальных платежах
Ограничения по числу запросовПри превышении сервис начнёт отказывать, и сайт перестанет считать доставку
Как устроена авторизацияОт этого зависит, где и как хранить ключи и как их менять
Что приходит при ошибкеНужно уметь отличать «нет данных» от «сервис недоступен»
Как уведомляют об измененияхВерсии интерфейса меняются, старая может быть отключена
Кто отвечает за поддержку на стороне сервисаПри сбое нужен канал связи, а не форма на сайте
Есть ли документация на русском и примерыВлияет на срок работ сильнее, чем сложность самой задачи
Какие данные сервис хранит у себяВажно для персональных данных и договорных обязательств

Ответы на эти вопросы обычно есть в документации, но их стоит выписать до начала работ. Половина проблем в интеграциях возникает не из-за кода, а из-за того, что о поведении сервиса узнали в бою.

Обязательная обработка ошибок

Главное отличие рабочей интеграции от демонстрационной — не основной сценарий, а поведение при сбое. Внешний сервис обязательно когда-нибудь не ответит, ответит медленно или ответит не тем.

  • Таймаут. Ждать ответа бесконечно нельзя: страница будет висеть. Разумное ожидание, затем понятное сообщение вместо белого экрана.
  • Повтор при временной ошибке, но с задержкой и ограничением числа попыток. Иначе при сбое сервиса ваш сайт добавит ему нагрузки и получит блокировку.
  • Защита от дублей. Повторная отправка не должна создавать второй заказ или второй платёж. Обычно решается уникальным идентификатором операции.
  • Журнал обмена. Что отправили, что получили, когда и с каким результатом. Без журнала разбор спорной ситуации через месяц невозможен.
  • Уведомление ответственных. Если интеграция перестала работать, об этом должен узнать человек, а не только файл журнала.
  • Запасной сценарий. Если расчёт доставки недоступен, покажите базовую стоимость или предложите связаться с менеджером. Заказ должен оформляться в любом случае.

Безопасность

  1. Ключи доступа хранятся в настройках сервера, а не в коде и тем более не в репозитории. Ключ, попавший в общий репозиторий, считается скомпрометированным.
  2. Запросы идут с сервера, а не из браузера. Если обращение к платному сервису выполняет скрипт на странице, ключ увидит любой посетитель.
  3. Передаём только необходимые данные. Для расчёта доставки не нужны ни телефон, ни почта покупателя.
  4. Проверяем подлинность входящих уведомлений. Адрес, принимающий уведомления о платежах, доступен всему интернету, и подпись запроса здесь обязательна.
  5. Ограничиваем права ключа, если сервис это позволяет: ключ на чтение не должен уметь создавать заказы.
  6. Предусматриваем смену ключа без правки кода и перезапуска сайта.

Производительность

Обращение к внешнему сервису при каждой загрузке страницы делает ваш сайт заложником чужой скорости. Если сервис отвечает за две секунды, ваша страница будет открываться минимум две секунды, что бы вы ни оптимизировали у себя.

Что помогает:

  • Кэширование. Редко меняющиеся данные — справочники городов, пункты выдачи, тарифы — запрашиваются раз в сутки, а не при каждом заходе.
  • Фоновая обработка. Долгие операции выполняются очередью, а пользователю показывается результат по готовности.
  • Отложенный запрос. Расчёт доставки запрашивается тогда, когда человек дошёл до соответствующего шага, а не при открытии карточки товара.
  • Ограничение частоты. Собственный счётчик запросов не даст упереться в лимит сервиса в час пик.
  • Сохранение последнего успешного ответа. Если сервис недоступен, лучше показать вчерашние тарифы с оговоркой, чем ничего.

Как мы ведём такие работы

  1. Разбираем задачу и документацию, выписываем ограничения и открытые вопросы.
  2. Согласуем, что происходит при недоступности сервиса. Это решение бизнеса, а не разработчика.
  3. Собираем обмен на тестовом контуре, включая ошибочные сценарии.
  4. Добавляем журнал обмена и уведомления о сбоях.
  5. Проверяем на боевом контуре ограниченным числом операций.
  6. Наблюдаем первую неделю: именно тогда видны реальные объёмы и реальная скорость ответа.
  7. Фиксируем документацию: какие ключи используются, где лежат, что делать при смене.

Перед запуском проверьте

  • Поведение при полной недоступности сервиса.
  • Поведение при неверном или просроченном ключе.
  • Поведение при пустом ответе и при ответе в неожиданном формате.
  • Поведение при медленном ответе, а не только при быстром.
  • Повторную отправку одной и той же операции.
  • Превышение лимита запросов.
  • Возврат к нормальной работе после того, как сервис снова отвечает.

Именно эти сценарии ломают интеграции в бою, а не основной путь, который тестируют все.

Чаще всего по API подключают именно службы доставки и расчёт стоимости перевозки. Если таких интеграций становится много, их удобнее собирать не на стороне сайта, а в учётной системе — например, в CRM для логистической компании, куда приходят и заказы, и статусы отправлений.

Организационная часть

Отдельно стоит договориться о том, кто владеет доступами и кто отвечает за интеграцию после сдачи. Ключи должны быть оформлены на компанию, а не на подрядчика или конкретного сотрудника. Договор с сервисом — тоже на компанию. Иначе через год выясняется, что обмен с учётной системой работает через личный аккаунт человека, который давно уволился, и восстановить его невозможно.

Если вам нужен обмен с учётной системой — остатки, цены, заказы и статусы между сайтом и складом, — мы настроим синхронизацию сайта с 1С: согласуем состав обмена, соберём его на тестовом контуре и доведём до стабильной работы.

Нужна помощь с сайтом?

Срочные ошибки исправим за 24 часа, работа от 2 500 руб./час.

Техническая поддержка и сопровождение сайта

По теме статьи

Мы это уже делали

Похожие статьи

Нужен новый сайт?

Оставьте контакты — вернёмся с вопросами по задаче и ориентиром по срокам и стоимости.

Читайте также

Разбираем задачи, с которыми к нам приходят: от структуры сайта до поддержки и продвижения.

Внимание: мошенники представляются сотрудниками Вебтую Внимание: мошенники представляются сотрудниками Вебтую Посторонний человек обращается к рекламным и маркетинговым агентствам от имени Вебтую через Telegram-аккаунт @vetaroki22010, заказывает работы и не оплачивает и 10-09-2026 Читать Работа в digital: процессы, инструменты и команда Работа в digital: процессы, инструменты и команда Цифровые проекты редко проваливаются из-за технологий: чаще мешает организация работы. Разбираем этапы, роли, постановку задач, инструменты распределённой коман 30-08-2026 Читать Реклама и аналитика: как считать заявки, а не клики Реклама и аналитика: как считать заявки, а не клики Показы и клики не отвечают на вопрос, сколько принесла реклама. Разбираем, как настроить цели, разметить источники, учесть звонки и связать заявку со сделкой, ч 30-08-2026 Читать Поддержка сайта: обновления, резервные копии и безопасность Поддержка сайта: обновления, резервные копии и безопасность Сайт без регулярного обслуживания ломается предсказуемо. Разбираем, из чего состоит поддержка: обновления, резервные копии, доступы, безопасность, выбор хостинг 30-08-2026 Читать Техническое SEO: индексация, скорость и структура сайта Техническое SEO: индексация, скорость и структура сайта Техническая часть сайта решает, попадут ли страницы в индекс и дождётся ли их посетитель. Разбираем структуру и адреса, индексацию и дубли, работу с устаревшими 30-08-2026 Читать Продвижение сайта в поиске: стратегия, семантика и ссылки Продвижение сайта в поиске: стратегия, семантика и ссылки Разбираем продвижение сайта в поиске от постановки цели до регулярной работы: как собрать и разложить семантику по страницам, что должно быть на посадочной стра 30-08-2026 Читать Тексты для сайта: как писать, чтобы читали и покупали Тексты для сайта: как писать, чтобы читали и покупали Как выбрать тему для страницы и построить текст, который просматривают глазами и дочитывают, чем заменить оценочные формулировки, как переработать существующую 30-08-2026 Читать Автоматизация бизнеса: CRM, ERP и искусственный интеллект Автоматизация бизнеса: CRM, ERP и искусственный интеллект С чего начинать автоматизацию и что автоматизировать в первую очередь, чем различаются CRM, ERP и системы документооборота, внедрять по модулям или всё сразу, г 30-08-2026 Читать Как устроена разработка: технологии, тестирование и инструменты Как устроена разработка: технологии, тестирование и инструменты Из чего состоит веб-проект, как выбирают язык, фреймворк и базу данных, зачем нужны тестирование и контроль версий, где заканчиваются возможности low-code и ген 30-08-2026 Читать Создание сайта: от технического задания до запуска Создание сайта: от технического задания до запуска Проекты срываются не из-за технологий, а из-за неясных договорённостей. Разбираем весь путь создания сайта: как сформулировать цель, что должно быть в техническ 30-08-2026 Читать
Обсудить проект