Інтеграція криптоплатіжного шлюзу на сайт: від вибору до впровадження

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

Інтеграція криптоплатіжного шлюзу: де губляться оплати

Інтеграція криптоплатіжного шлюзу рідко ламається на рівні API — вона ламається на стиках між кроками оплати.

Клієнт обирає актив і мережу, бачить адресу, іде в гаманець і не повертається: форма не відстежує, що рахунок залишили, не нагадує й не дає повернутися до тієї самої адреси.

В аналітиці такий обрив проходить як відмова на етапі оформлення, тому приймання криптоплатежів на сайті виглядає працюючим рівно до моменту, коли починають рахувати конверсію за фактом надходження.

Друга точка — курс у вікні між виставленням рахунку та підтвердженням. Поки транзакція йде в мемпул, сума у фіаті змінюється, і без явного правила фіксації курсу на коротке вікно замовлення отримує або недоплату, або повернення різниці.

Тут же виринає комісія мережі: якщо вона списується із суми переказу, до мерчанта доходить менше очікуваного — і замовлення позначається як невдала оплата, хоча гроші вже пішли.

Третя — підтвердження надходження. Поки не набрано потрібну кількість підтверджень мережі, платіж висить у проміжному статусі, а при реорганізації ланцюжка може відкотитися. Шлюз, який закриває замовлення за першою ж вхідною подією, віддає товар, за яким не прийшли гроші.

Зворотна помилка — тримати замовлення відкритим занадто довго: клієнт не розуміє, оплачено воно чи ні.

Далі починається звірка платежів. Поки її роблять вручну, розбіжності накопичуються там, де в призначенні платежу немає номера замовлення або він не збігається з базою: адреса одна, суми близькі, дати поруч.

Плюс подвійне зарахування, коли повідомлення від шлюзу дублюється і замовлення продовжується двічі. Розбираємо, як це закривається на кожному кроці.

Що змінюється після підключення: ефект за кроками оплати

Підключення шлюзу змінює не саму можливість платити криптою, а розподіл платежів за статусами. Раніше частина оплат губилася між відправленням коштів і підтвердженням замовлення, тепер видно, які причини відмов залишаються і яка їхня частка. Нижче — показники, які знімаються з журналів шлюзу та облікової системи, а не з відчуттів.

Частка успішних оплат і причини відмов

Головний клас відмов — не «клієнт передумав», а незавершені транзакції: кошти надіслано на адресу, потрібної кількості підтверджень не дочекалися, вкладку закрили. Рахунок із фіксованою сумою та адресою, який живе заданий час, повертає такого клієнта в оплату того самого кошика.

Друге джерело — невідповідність мережі: платіж іде в паралельну мережу й не пов’язується із замовленням. Явне зазначення мережі в рахунку та перевірка адреси відправника на стороні провайдера перетворюють цей випадок на зрозуміле повідомлення клієнту замість завислої операції.

Шлюзи рівня Coinbase Commerce віддають статус за кожним рахунком окремою подією, тому частка успішних оплат рахується за фактом, а не за кількістю звернень у підтримку.

Час зарахування та обсяг ручних звірок

Поки надходження розбирають за випискою вручну, замовлення висить у статусі «очікує» до наступного робочого дня.

Подія про підтвердження закриває цей розрив: система проставляє оплату в момент приходу коштів, і зарахування перестає залежати від того, коли співробітник відкриє реєстр.

Автоматизація обліку будується на прив’язці ідентифікатора рахунку до замовлення: сума, мережа, комісія та хеш транзакції потрапляють у базу одним записом. Це прибирає подвійне внесення, а звірка періоду робиться за сформованим звітом, а не за набором скриншотів і листування.

Способи приймання криптоплатежів: каса, посилання, прямий інтерфейс

Способів приймання три, і відрізняються вони не зовнішнім виглядом кнопки «Оплатити», а тим, хто тримає приватні ключі й хто відповідає за завислу транзакцію.

Розміщена каса, платіжне посилання та пряме підключення дають різний рівень контролю за різної ціни входу — вибір визначається обсягом платежів і готовністю тримати власну інфраструктуру.

Варіант Коли підходить Обмеження
Розміщена каса Потрібне приймання платежів у короткий строк, власної інфраструктури немає Комісія провайдера з кожного платежу, його бренд на сторінці оплати, ліміти на суму, ризик блокування акаунта
Платіжне посилання Разові рахунки, продажі в месенджерах, приймання без доопрацювання сайту Немає власного сценарію оплати й аналітики, повернення до магазину вручну, статус доводиться звіряти
Пряме підключення Обороти зростають, потрібні контроль курсу й автоматичне зарахування Зберігання ключів на своїй стороні, моніторинг вузла, відповідальність за підтвердження та завислі платежі

Розміщена каса та платіжне посилання

Тут платіжну сторінку малює провайдер: він же фіксує курс, приймає підтвердження мережі й віддає нам повідомлення про статус. Ми додаємо на сайт виклик і обробник — зазвичай це кілька днів роботи, включно зі звіркою сум і захистом від повторних повідомлень.

Обмеження чесні: частина виручки йде провайдеру, платіжний сценарій зашитий у його інтерфейс, а ліміти й правила акаунта змінюються без нашої участі.

Платіжне посилання добре підходить для рахунків і разових продажів: клієнт отримує адресу, платить і повертається на узгоджену сторінку. Масовий потік воно не тягне — статуси доводиться зіставляти вручну або доопрацьовувати звірку окремо.

Пряме підключення та власний гаманець

Пряме підключення знімає посередника: сайт сам формує адресу під кожне замовлення, стежить за надходженням і зараховує оплату після потрібної кількості підтверджень.

Зберігання ключів переходить до нас — тримаємо їх в окремому контурі, не на тому самому сервері, що сайт, з обмеженим доступом і журналом операцій. Такий контур зручно будувати на BTCPay Server або власній зв’язці гаманця з вузлом мережі.

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

Це окупається на обсязі, коли комісія провайдера вже помітна, але потребує інженерного супроводу — який варіант вибрати в конкретному випадку, розбираємо на етапі оцінки.

Порядок впровадження: від аудиту поточних оплат до передачі

Впровадження йде хвилями: спочатку розбираємося, як оплата влаштована зараз, потім будуємо схему потоків коштів, налаштовуємо шлюз і проганяємо сценарії на тестовому контурі.

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

Аудит поточного приймання платежів

  1. Аудит приймання платежів. Збираємо карту: які способи оплати включені, хто ініціює повернення, де зберігаються ідентифікатори замовлень, як надходження зіставляються із замовленнями. На виході — перелік розбіжностей і точки, які не можна ламати при переході.
  2. Схема потоків коштів. Фіксуємо маршрут від клієнта до розрахункового рахунку, хто тримає ключі, як налаштовані ліміти й куди йдуть комісії. Окремо позначаємо ручні перекази, щоб вони не залишилися поза обліком.
  3. Налаштування шлюзу. Підключення на тестовому контурі, ключі доступу, адреси повернення, політика підтверджень — скільки чекаємо до відвантаження або зарахування. Повідомлення від шлюзу обробляємо із захистом від повторного застосування тієї самої події.
  4. Перевірка сценаріїв оплати. Проганяємо успішну оплату, недоплату, переплату, скасування, тайм-аут, повернення та повторне повідомлення. Після тестового контуру — кілька реальних оплат мінімального класу та звірка результату з обліковою системою.
  5. Навчання. Оператори підтримки та фінансовий блок отримують регламент: як читати статус операції, що робити із завислою транзакцією, кому ескалювати й у якому вікні.
  6. Передача в підтримку. Віддаємо доступи, журнал операцій, схему потоків і канал ескалації до наших інженерів, щоб розбір інциденту не починався з пошуку контактів.

Що залишається у вас: конфігурації, схеми, регламенти

Передача проєкту — це не фінальний дзвінок, а комплект артефактів, за яким ваша команда далі працює без нас. Нижче — що саме залишається на руках у мерчанта: його достатньо, щоб змінювати ліміти, додавати валюти, розбирати завислі операції та проходити зовнішній аудит.

Конфігурації та матриця доступів

  • Конфігурація шлюзу з коментарем по кожному параметру: список мереж і валют, пороги підтверджень, ліміти на операцію та на адресу, поведінка при недоплаті або переплаті.
  • Матриця доступів: які ролі що можуть — перегляд, ініціювання платежу, підпис, виведення, ротація ключів; ініціатор і підтверджувач розведені, щоб один акаунт не міг вивести кошти.
  • Схема потоків коштів: шлях від гаманця клієнта через гарячий і холодний контури до зарахування, включно з мережевими комісіями, консолідацією та обробкою «завислих» транзакцій.
  • Документація по шлюзу: методи API, колбеки та їхня ідемпотентність, коди помилок, статуси операцій, вимоги до підпису запитів і поведінка при розбіжностях стану.

Регламенти та інструкції

  • Регламент повернень: підстави, хто погоджує, строки, перевірка адреси отримувача до відправлення, що робити при поверненні на неробочу адресу.
  • Інструкції чергової зміни: чек-лист при розбіжності балансу, порядок ескалації, дії при недоступності вузла або затримці підтверджень.
  • Шаблон журналу інцидентів і список алертів: за якою подією черговий прокидається, а яка просто потрапляє у звіт.
  • План ротації ключів і адрес гаманців — з періодичністю та відповідальним, щоб доступи не жили роками в однієї людини.

Кейс: частка невдалих оплат знизилася в рази

Що було до впровадження

Магазин приймав криптовалюту вручну: клієнт переказував кошти на загальний гаманець, а менеджер звіряв надходження із заявками в таблиці.

Затримка зарахування сягала кількох годин, у пікові дні частина переказів зависала до наступного робочого дня — покупець бачив вічне «очікує підтвердження» і йшов.

Бухгалтерія раз на тиждень зіставляла перекази в мережі із замовленнями за випискою. Один платіж міг бути зарахований двічі або загублений, розбіжності знаходили вже після відвантаження, а розбір займав у команди цілий день.

Що змінилося після

Ми підключили шлюз з автоматичним підтвердженням переказів у мережі Ethereum та обробником вхідних подій.

Зарахування тепер займає менше хвилини після потрібної кількості підтверджень: частка невдалих оплат знизилася в рази, а очікування більше не залежить від того, чи чергує менеджер біля екрана.

Звірка йде безперервно, а не раз на тиждень.

Кожен переказ прив’язаний до номера замовлення, повтори відсікаються за унікальною ознакою операції, тому ручні звірки стиснулися до вибіркової перевірки спірних випадків — замість сотень рядків у таблиці залишається кілька записів на день.

Кейс перестав бути історією про «стало зручніше»: час зарахування, частка відмов і обсяг ручних операцій видні у звіті шлюзу й підтверджуються звіркою з бухгалтерією.

Що робити, якщо криптоплатіжний шлюз уже встановлено?

Коли криптоплатіжний шлюз уже встановлено, питання не у виборі постачальника, а в межах відповідальності між наявним платіжним модулем і новим каналом.

Зазвичай модуль закриває оформлення замовлення й частину статусів, тому його не викидають цілком — його розбирають по шарах і вирішують, який шар залишається джерелом істини щодо платежу.

Шар Що залишаємо Що змінюємо Де виникає подвійний облік
Приймання платежів Оформлення замовлення та кошик наявного платіжного модуля Тільки транспорт до криптоплатіжного шлюзу Обидва канали пишуть в один і той самий статус замовлення
Сумісність з обліковою системою Довідники, склад, звітність Джерело статусів — один мастер-канал Повторні повідомлення про підтвердження створюють другу проводку
Порядок повернень Політику повернень на стороні бізнес-логіки Виконання: повернення ініціюється тільки з облікової системи Ручне повернення в шлюзі не відображається в обліку

Подвійний облік виникає там, де статус замовлення пишуть обидва канали одночасно. Лікується це ідемпотентністю: кожне повідомлення про підтвердження транзакції несе ідентифікатор, повторна обробка не створює другу проводку, а розбіжності ловить щоденна звірка двох джерел.

Міграція без простою будується на паралельному режимі: новий криптоплатіжний шлюз приймає частину замовлень, попередній продовжує працювати, і обидва пишуть в одну облікову систему через спільний шар статусів.

Перемикання йде за часткою трафіку, а відкат — це повернення частки на попередній канал без правки вже проведених даних.

Практичний порядок такий: спочатку звірка довідників і тестові повернення, потім переведення частини трафіку, і тільки після збігу підсумків старий модуль виводиться з обробки.

Технічні сумніви: ключі, курс, повернення, звірка

Ключі доступу — перше, про що питають перед впровадженням. На веб-сервері приватного ключа немає: застосунок формує платіж і віддає його на підпис окремому вузлу зі своїм списком дозволених адрес і лімітом на суму однієї транзакції. Кожен підпис потрапляє в журнал.

Курсові розбіжності, недоплати, повернення та спільна робота з поточним еквайрингом вирішуються правилами й статусами, а не «домовимось за ситуацією». Нижче — чотири питання, які найчастіше задають інженери на етапі оцінки.

Де зберігаються ключі доступу до гаманця і хто підписує транзакції?

Приватний ключ живе на ізольованому вузлі підпису, окремо від веб-застосунку. Транзакцію формує сервісна роль з денним лімітом, а отримувач зобов’язаний бути у списку дозволених адрес.

Якщо вузол недоступний, рахунки продовжують виставлятися, а виведення чекають у черзі до відновлення.

Як рахується курсова різниця між рахунком і підтвердженням?

Курс фіксується в момент створення рахунку й зберігається разом зі строком дії та точною сумою в криптовалюті. Переказ за межами вікна закриває рахунок і йде в розбір.

Розбіжність між очікуваною та фактичною сумою рахуємо за курсом підтвердження і виносимо окремим рядком у реєстр звірки.

Що відбувається при недоплаті, переплаті та поверненні?

Недоплата переводить рахунок у часткову оплату: залишок можна доплатити в межах вікна, інакше сума йде в повернення. Переплата зараховується за фактом, надлишок залишається на балансі клієнта.

Повернення йде на адресу відправника мінус комісія мережі й позначене ідентифікатором вихідної операції — повторний запит не створює другу транзакцію.

Чи можна приймати криптоплатежі паралельно з поточним еквайрингом?

Так. Криптоканал стає поруч: рахунок створюється за тим самим номером замовлення, а статуси обох систем зводяться в одну таблицю за ідентифікатором. Відключення одного каналу не зачіпає другий.

Обговорімо вашу задачу: з чого починаємо

Щоб оцінка впровадження була предметною, а не «за відчуттями», нам потрібно зрозуміти ваш сценарій цілком — від моменту, коли клієнт натискає «оплатити», до зарахування коштів на ваш рахунок.

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

  • Сценарій оплати: разовий платіж на сайті, підписка, виведення коштів або обмін — що саме має працювати і в якому режимі.
  • Активи та мережі: з якими монетами плануєте працювати, чи є вже гаманці або кастодіальний провайдер.
  • Як влаштований облік замовлень зараз: CMS, база даних, платіжний модуль, наявність обробників повідомлень від платіжних систем.
  • Вимоги комплаєнсу: що диктує ваш юрист або банк-партнер щодо перевірки клієнтів і звітності за операціями.
  • Очікуване навантаження: скільки платежів на добу проходить у піку і як швидко має підтверджуватися статус замовлення для клієнта.
  • Доступи та обмеження: де розміщено сайт, чи є доступ до репозиторію і сервера, хто приймає зміни в продакшені.

Після розбору вхідних даних повернемося з планом робіт, оцінкою впровадження за етапами та схемою потоків коштів: де гроші входять, де конвертуються, де осідають і на якому кроці фіксується статус замовлення.

Обговоримо задачу — і запропонуємо варіант, який не доведеться переписувати при додаванні нових активів.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142