Интеграция Fondy: подключение, вебхуки, рекуррентные и сплит-платежи

Принимаете платежи в Украине? Мы часто сталкиваемся с запросами на интеграцию Fondy — популярного платёжного шлюза с лицензией ЕС. Fondy поддерживает карты Visa, Mastercard, Google Pay, Apple Pay, локальные методы (Приват24, MONO, Укрбанк). Документация на русском и английском, REST API стабилен. Од

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Интеграция Fondy: подключение, вебхуки, рекуррентные и сплит-платежи
Средний
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Принимаете платежи в Украине? Мы часто сталкиваемся с запросами на интеграцию Fondy — популярного платёжного шлюза с лицензией ЕС. Fondy поддерживает карты Visa, Mastercard, Google Pay, Apple Pay, локальные методы (Приват24, MONO, Укрбанк). Документация на русском и английском, REST API стабилен. Одна из частых ошибок — неправильная генерация подписи, что приводит к отклонению транзакций. Или пропущенный callback из-за неверной настройки webhook. В этой статье разберём ключевые сценарии: подпись запросов, вебхуки, избежание дублей заказов, и покажем рабочие решения на PHP. На основе нашего опыта более 50 интеграций мы подготовили типовые решения, которые сокращают время внедрения до 3 раз по сравнению с самостоятельной разработкой. Согласно Fondy API Reference, комиссия шлюза составляет 2.5% + 2 UAH за транзакцию — учитывайте при расчётах.

Какие проблемы решает интеграция Fondy?

  • Подпись запросов: неправильный порядок параметров или отсутствие ksort ломает проверку подписи.
  • Обработка вебхуков: уязвимость подделки callback'ов при слабой проверке подписи.
  • Дубли заказов: повторный order_id отклоняется транзакция; нужен механизм уникальности.
  • Возвраты: частичные возвраты требуют корректного расчёта суммы в копейках.
  • Рекуррентные платежи: для подписок нужно сохранять token карты.

Как выбрать метод интеграции Fondy?

Выбор зависит от требований к UX и времени внедрения. Hosted Page — самый быстрый способ: перенаправление на платёжную страницу Fondy. Checkout JS — встроенная форма на вашем сайте, оставляющая полный контроль UI. API direct — максимальная гибкость, но требует больше времени на реализацию.

Метод Сложность Внешний вид Контроль UI Время внедрения
Hosted Page Низкая Страница Fondy Минимальный 2-3 дня
Checkout JS Средняя Ваш сайт Полный 5-7 дней
API direct Высокая Ваш сайт Полный 7-14 дней

Hosted Page — оптимальный старт, Checkout JS — для максимального UX.

Как мы интегрируем Fondy: кейс Hosted Page

Самый быстрый способ — перенаправление на платёжную страницу Fondy. Hosted Page внедряется в 2-3 дня, что в 3-5 раз быстрее, чем API direct. Наши инженеры реализовали это для интернет-магазина с 5000 заказов в месяц. Вот ключевой блок:

function buildFondyPayment(int $orderId, int $amountInKopecks, string $currency = 'UAH'): array { $merchantId = env('FONDY_MERCHANT_ID'); $secretKey = env('FONDY_SECRET_KEY'); $params = [ 'merchant_id' => $merchantId, 'order_id' => $orderId . '_' . time(), 'order_desc' => "Заказ #{$orderId}", 'amount' => $amountInKopecks, 'currency' => $currency, 'response_url' => 'https://example.com/payment/return', 'server_callback_url' => 'https://example.com/webhook/fondy', 'lang' => 'ru', ]; ksort($params); $signString = $secretKey . '|' . implode('|', array_values($params)); $params['signature'] = sha1($signString); return $params; } 

Далее отправляем POST на https://pay.fondy.eu/api/checkout/url/ и получаем checkout_url для редиректа. Альтернатива — HTML-форма с POST на https://pay.fondy.eu/api/checkout/redirect/.

Как обработать вебхук и не ошибиться с подписью?

Критически важный момент — проверка подписи в callback. Ниже пример надёжного обработчика:

public function handleCallback(Request $request): Response { $data = $request->all(); $received = $data['signature']; unset($data['signature']); $data = array_filter($data, fn($v) => $v !== '' && $v !== null); ksort($data); $expected = sha1(env('FONDY_SECRET_KEY') . '|' . implode('|', array_values($data))); if (!hash_equals($expected, $received)) { return response('Bad signature', 403); } if ($data['order_status'] === 'approved') { $orderId = (int) explode('_', $data['order_id'])[0]; Order::where('id', $orderId)->update([ 'status' => 'paid', 'transaction_id' => $data['payment_id'], ]); } return response()->json(['response' => 'accept']); } 

Статусы: approved, declined, expired, processing, reversed. Никогда не доверяйте неверифицированным callback'ам.

Почему важен ksort перед подписью?

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

Встроенная форма Checkout JS

Если не хотите уводить пользователя со страницы, используйте Checkout JS. Скрипт подгружается с серверов Fondy, а signature генерируется на сервере:

<script src="https://pay.fondy.eu/static_common/v1/checkout/ipsp.js"></script> 
$ipsp.get('checkout').config({ merchantId: FONDY_MERCHANT_ID, amount: 1500, currency: 'UAH', orderId: 'order-12345', orderDesc: 'Тестовый заказ', signature: serverGeneratedSignature, lang: 'ru', fields: false, fee: false, theme: { preset: 'silver', }, }); 

Важно: никогда не передавайте secret_key на клиент — signature создаётся только на сервере.

Возвраты и частичные возвраты

Для отмены транзакции используйте API:

$params = [ 'merchant_id' => env('FONDY_MERCHANT_ID'), 'order_id' => $originalOrderId, 'amount' => 75000, // частичный возврат 'currency' => 'UAH', 'comment' => 'Customer request', ]; ksort($params); $params['signature'] = sha1(env('FONDY_SECRET_KEY') . '|' . implode('|', array_values($params))); Http::post('https://pay.fondy.eu/api/reverse/order/', ['request' => $params]); 

Обратите внимание: сумма в копейках, currency обязателен.

Процесс и сроки интеграции

Этап Длительность Результат
Аналитика 1-2 дня Схема процесса оплаты, выбор метода
Проектирование 1-2 дня Архитектура вебхуков, обработка ошибок
Реализация 2-5 дней Код, интеграция в CMS/фреймворк
Тестирование 1-2 дня Транзакции, edge cases
Деплой и мониторинг 1 день Запуск и поддержка 24 часа

Базовая интеграция через Hosted Page — от 2 до 5 рабочих дней. Стоимость рассчитывается индивидуально и зависит от сложности (Checkout JS, сплиты, нестандартная логика). Оценим ваш проект бесплатно — напишите нам.

Типичные ошибки и как их избежать

  • Повтор order_id: всегда добавляйте timestamp/UUID к ID заказа.
  • Неправильный ksort: подпись собирается из значений, отсортированных по ключу — используйте ksort перед конкатенацией.
  • Игнорирование callback: даже при успешном редиректе клиента, финальный статус приходит через webhook — обрабатывайте оба.
  • Секретный ключ в клиентском коде: никогда не передавайте secret_key на фронтенд.

Наш опыт более 5 лет и 50+ интеграций позволяет гарантировать стабильную работу и полную документацию. Закажите интеграцию Fondy сегодня и получите бесплатную консультацию. Свяжитесь с нами — оценим ваш проект в течение дня.