Кожен серйозний продукт рано чи пізно починає спілкуватися з іншими системами: платіжні шлюзи, CRM, служби доставки, аналітика, AI-сервіси. Ми будуємо ці інтеграції так, щоб вони переживали реальні умови — rate limits, таймаути, нестабільні сторонні API й дані в тому вигляді, у якому їх надішле інша сторона.
Інтеграції, які ми зробили
- CRM та продажі — контактні форми цього сайту відправляють ліди в Zoho CRM з обробкою помилок, тож збій Zoho ніколи не втратить запит.
- Платежі — Stripe та інші шлюзи: чекаут, підписки, вебхуки, звірка.
- AI-провайдери — NetPostPanel оркеструє кілька LLM API за єдиним внутрішнім інтерфейсом із ретраями та фолбеками.
- REST та GraphQL API — ми споживаємо зовнішні API і будуємо задокументовані ендпоінти для ваших партнерів і мобільних застосунків.
- Вебхуки — вхідні та вихідні, з верифікацією підписів і безпечною до повторів обробкою.
Інтеграції, що коректно переживають збої
public function handle(Request $request): JsonResponse
{
abort_unless(
hash_equals($expected, $request->header('X-Signature')),
401
);
ProcessWebhook::dispatch($request->all())->onQueue('webhooks');
return response()->json(['status' => 'accepted'], 202);
}
Верифікувати, поставити в чергу, підтвердити. Відправник отримує 202 за мілісекунди; реальна робота безпечно ретраїться у фоні.
Черги замість синхронних викликів, ретраї з backoff, ідемпотентна обробка (двічі доставлений вебхук нічого не змінює), видимість dead-letter і аудит — коли сторонній сервіс лежить о третій ночі, ваші користувачі не помічають і нічого не губиться.
Як проходить інтеграційний проєкт
Починаємо з контрактів, а не з коду: читаємо API-документацію провайдера, мапимо потоки даних, домовляємось хто володіє кожним полем. Далі тонкий інтеграційний шар — окремий service-клас на провайдера — тримає чужі капризи поза вашим доменним кодом. Спершу sandbox, після запуску — моніторинг і документація для наступної команди.
Якщо ваші системи живуть в ізольованих системах і люди переносять дані між ними руками — це лікується. Розкажіть, хто з ким має спілкуватися.