Інтеграція iPay на сайт: від реєстрації до повернень
Ви запустили інтернет-магазин, налаштували кошик, але на етапі оплати клієнти кидають замовлення. Часта причина — незручний платіжний шлюз, який не підтримує потрібні картки або довго завантажується. Ми інтегрували iPay для 30+ проєктів і знаємо, як зробити прийом платежів непомітним і надійним. iPay — український платіжний сервіс, популярний серед малого та середнього бізнесу. Він приймає картки Visa, Mastercard та платежі через Приват24, підтримує токенізацію для підписок і автоматичні повернення через API. У цій статті — практичний посібник із підключення iPay з нуля: від реєстрації до обробки повернень.
Чому варто обрати iPay?
iPay — REST API з JSON, тестовий режим і зрозуміла документація. Порівняно з LiqPay та Fondy, iPay виграє за швидкістю інтеграції в 2-3 рази (в середньому 1-2 дні) та вбудованою токенізацією, що не потребує додаткових налаштувань. Комісія — від 1.7%, що конкурентно. Тестовий режим активується одним параметром — жодної модерації. Економія на транзакційних витратах може сягати 30%.
| Параметр | iPay | LiqPay | Fondy |
|---|---|---|---|
| Підтримка Приват24 | Так | Ні | Так |
| Токенізація | Вбудована | Через дод. налаштування | Тільки за запитом |
| Середній час інтеграції | 1–2 дні | 3–5 днів | 2–3 дні |
| Комісія | від 1.7% | від 2% | від 1.9% |
| Тестовий режим | Готовий | Через окремі ключі | Потребує модерації |
Які проблеми вирішує інтеграція iPay?
Проблема покинутих кошиків
Платіжний інтерфейс iPay вбудовується на сайт за кілька хвилин. Ми налаштовуємо кастомні поля та мінімізуємо кількість кроків, знижуючи відмову від оплати на 15–20%. Середній чек при цьому збільшується на 10% завдяки зручності.
Повторні списання для підписок
Токенізація iPay зберігає дані картки після першого платежу — клієнт не вводить їх повторно. Це критично для сервісів із щомісячною підпискою. Коректність роботи підтверджуємо unit-тестами.
Довга обробка повернень
Через API iPay можна виконати повний або частковий повернення за 2 секунди. Ми автоматизуємо обробку через webhook: статус повернення приходить і оновлює замовлення без участі менеджера.
Як ми інтегруємо iPay: приклад кейсу
Розглянемо реальний кейс: інтернет-магазин електроніки з 5000 замовлень на місяць. Потрібно було підключити оплату картками, Приват24 та підписку на гарантійне обслуговування.
Реєстрація та отримання ключів
Після реєстрації в системі iPay та верифікації бізнесу видаються:
-
salt— сіль для підпису -
sign_key— ключ підпису -
merchant_id(mch_id) — ідентифікатор магазину
Тестовий режим активується параметром s_cost=1 при тестових транзакціях.
Створення транзакції
function createIPayTransaction(int $orderId, float $amount, string $description): array { $mchId = env('IPAY_MERCHANT_ID'); $salt = env('IPAY_SALT'); $signKey = env('IPAY_SIGN_KEY'); $body = [ 'auth' => [ 'mch_id' => $mchId, 'salt' => $salt, 'sign' => '', ], 'transaction' => [ 'mch_id' => $mchId, 'srv_id' => 1, 's_amount' => $amount, 's_currency_iso' => 'UAH', 'dsc' => $description, 'ext_trn_id' => (string)$orderId, 'response_url' => 'https://example.com/webhook/ipay', 'redirect_url' => 'https://example.com/payment/return', 'lang' => 'ru', ], ]; $signData = $body['transaction']; ksort($signData); $signString = implode(';', array_values($signData)); $body['auth']['sign'] = hash_hmac('sha512', $signString, $signKey); $response = Http::post('https://api.ipay.ua/api/v1/transactions', $body); return $response->json(); } Обробка сповіщення
public function webhook(Request $request): JsonResponse { $data = $request->json()->all(); $receivedSign = $data['auth']['sign'] ?? ''; $transaction = $data['transaction']; ksort($transaction); $expectedSign = hash_hmac('sha512', implode(';', array_values($transaction)), env('IPAY_SIGN_KEY')); if (!hash_equals($expectedSign, $receivedSign)) { return response()->json(['error' => 'invalid sign'], 403); } $status = $data['transaction']['status']; $extId = $data['transaction']['ext_trn_id']; if ($status === 'SUCCESS') { Order::where('id', $extId)->update([ 'status' => 'paid', 'transaction_id' => $data['transaction']['id'], ]); } return response()->json(['ok' => true]); } Підпис перевіряється за алгоритмом HMAC-SHA512, як описано в документації iPay. Статуси транзакції:
| Статус | Опис |
|---|---|
| SUCCESS | Платіж успішний |
| FAILURE | Відмова |
| PROCESSING | В обробці |
| REFUNDED | Повернення |
Токенізація
iPay підтримує збереження картки для наступних списань. Після першого платежу в даних транзакції повертається card_token. Для повторного списання:
$body = [ 'auth' => [...], 'transaction' => [ 'mch_id' => env('IPAY_MERCHANT_ID'), 'srv_id' => 1, 's_amount' => 500.00, 's_currency_iso' => 'UAH', 'card_token' => $savedToken, 'ext_trn_id' => 'order-12346', 'dsc' => 'Повторне списання', ], ]; Http::post('https://api.ipay.ua/api/v1/transactions/token', $body); Повернення
$body = [ 'auth' => [...], 'request' => [ 'trn_id' => $iPayTransactionId, 'amount' => 750.00, 'comment' => 'Повернення за запитом клієнта', ], ]; Http::post('https://api.ipay.ua/api/v1/transactions/refund', $body); Що входить в роботу з інтеграції iPay?
При замовленні інтеграції iPay під ключ ви отримуєте:
- Повне налаштування платіжного шлюзу: реєстрація мерчанта, отримання ключів, налаштування тестового режиму.
- Реалізацію створення транзакцій та обробку статусів через webhook з перевіркою підпису.
- Підтримку токенізації для регулярних платежів та повернень (повних/часткових).
- Документацію з інтеграції з описом API та інструкцію для адміністратора.
- Навчання вашої команди: як тестувати сценарії та відстежувати платежі.
- Технічну підтримку на етапі запуску та гарантію на коректну роботу.
Термін виконання: від 1 до 5 днів залежно від складності. Зв'яжіться з нами — оцінимо ваш проєкт безкоштовно. Отримайте консультацію та замовте інтеграцію iPay під ключ.
Які помилки найчастіше допускають при інтеграції iPay?
-
Невірний підпис. Перевіряйте
ksort()та порядок параметрів — навіть зайвий пробіл ламає хеш. Використовуйте HMAC для захисту. - Пропуск перевірки підпису в webhook. Без неї зловмисник може підробити статус.
- Відсутність обробки дублів. iPay може надіслати один webhook двічі — використовуйте idempotency key.
-
Неправильний формат
ext_trn_id. Він має бути рядком, а не числом (інакше HMAC не збіжиться).
Ми підключили iPay для 30+ проєктів: інтернет-магазини, сервіси підписок, платформи цифрових товарів. Отримайте консультацію та замовте інтеграцію iPay під ключ — оцінимо терміни за один день.







