15 липня 2025 року

Приймаємо оплату в bitcoin: Частина перша, теоретична

Приймаємо оплату в bitcoin: Частина перша, теоретична

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

Розглянемо основні віхи великого шляху на прикладі інтеграції bitcoin як спосіб прийому платежів.  

Припустимо ви – розробник, і вашпросунутий і небідний замовник, начитавшись про те, як круто приймати платежі в криптовалюті, прийшов до вас з простеньким проханням – “А прикрути-ка нам биткоин!”.

Спочатку спробую відбити у вас бажання займатися цією невдячною справою. 

Ось неповний список проблем, з якими ви зіткнетесь:  

-Постійно змінюється курс 

-час проходження транзакції по мережі

-Повна відсутність контролю над сумою, яку відправляє покупець 

-відсутність виразного і прозорого механізму, який дозволить просто організувати відстеження платежу

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

Тоді  спершу розглянемо, як,власне, ми прийматимемо платежі. Як завжди, є як мінімум два шляхи. Перший, відносно простий, мало чим відрізняється від інтеграції, наприклад PayPal або Privat24.Скористайтеся готовим сервісом, наприклад – bitpay. Сервісів таких чимало, багато з них, крімbitcoin, дозволяють приймати кілька різних криптовалюта. Все прозаїчно і досить просто, документація і приклади є найчастіше на сайті сервісу в достатньому обсязі.

Але ми не шукаємо легких шляхів, так? До того ж суму, виставлену наполегливій замовнику, потрібно відпрацювати (або зробити вигляд, що відпрацювали).

Тому розглянемо другий шлях, повний труднощів, проблем і неочевидних рішень

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

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

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

Програмне забезпечення сайту продавця формуєспеціальну форму, яку найчастіше називають SCI (Shopping Cart interface). Після натискання кнопки “Сплатити” ця форма перенаправить покупця на сайт платіжної системи (наприклад PayPal), із заздалегідь заданими даними про платеж. Очевидно, це буде як мінімум – номер замовлення, сума до оплати та, ймовірно, якась примітка до платежу, наприклад “Інвойс за тенісні м'ячики №00012”. 

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

Що нам важливо у цій послідовності? 

Три ключові моменти. 

Перше – сума оплати задається продавцем. 

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

І третє & # 8211; повідомлення, яке отримує сервер продавця, практично неможливо підробити. 

Така система сформувалася не відразу, але в більш-менш схожій формі вона реалізована в більшості платіжних шлюзів та електронних платіжних систем, таких як Skrill або PayPal.

Тепер подивимося, що нас очікує, коли ми збираємося інтегрувати bitcoin як засіб платежу.

По-перше, у bitcoin (і у всіх криптовалютах, побудованих на його основі) немає прямого способу, що дозволяє передати ідентифікатор платежу. 

По-друге – ви практично не контролюєте, яку суму надішле користувач (з невеликими застереженнями).

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

Ви отримуєте нову адресу bitcoin і передаєте їїкористувачеві, разом із розрахованою сумою до оплати. Хорошим тоном вважається вказувати протягом якого часу платіжні реквізити валідні (адже ми пам'ятаємо, курс криптовалют дуже нестабільний), зазвичай це 15 хвилин. Далі, ви регулярно перевіряєте стан цієї адреси, чи отримана нею необхідна сума чи ні. У разі, якщо сума надійшла – платіж можна вважати таким, що відбувся, і перейти до обробки подальшого замовлення (надсилання товару, поповнення мобільного рахунку і так далі)

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

 Якщо користувач відправив транзакцію вмережа & # 8211; це ще не означає, що ви її отримали. До моменту першого підтвердження ваш сервер може навіть не дізнатися, що така транзакція була. А від моменту оплати до моменту включення транзакції до блоку може пройти й кілька годин. Ця ситуація породжує безліч неприємних наслідків. 

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

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