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

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

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

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

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

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

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

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

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

-відсутність у відсутності платежу


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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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


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

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

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

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

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

Читайте також

82018-09-02

Скільки можна заробити на трейдингу інвестору-початківцю. Частина вісімнадцята. Трейдинг (продовження)

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

Трейдинг, Навчання
882017-12-18

Bitcoin у гаманці - як це?

Криптовалюти за своєю природою є електронним засобом платежів. Монети з'являються в результаті майнінгу, зберігаються в електронному вигляді, всі операції відбуваються в Інтернеті. І все ж bitcoin можна покласти у звичайний гаманець. Розбираємось

Навчання

Останні статті з розділу Навчання