—»     —»   Добавляем платежный шлюз Bitcoin на собственный сайт
  Раздел: Руководства   Нет комментариев  

Добавляем платежный шлюз Bitcoin на собственный сайт



Bitcoin все больше и больше становится мейнстримом, и благодаря тому, что эта денежная система заполонила уже весь мир и при этом взимает достаточно низкую комиссию, вам обязательно следует рассмотреть Bitcoin в качестве платежного шлюза для вашего собственного интернет-магазина.

Сегодня мы хотим рассказать вам о том, каким образом вы можете реализовать поддержку и прием криптовалюты Bitcoin на собственном сайте.

Что такое Bitcoin?

Прежде всего, нужно выяснить, что же такое Bitcoin? Если вы не знакомы с данным термином, то Bitcoin представляет собой пиринговую валюту, разработанную с целью устранения необходимого участия третьих лиц в процессе оплаты, и вместо этого доверить безопасность в «руки» криптографических хэш-кодов.

Исключив наличие центрального регулирующего аппарата (будь то правительство или банк), вы можете получить гораздо более низкие издержки и требования. Теперь вам не нужно заполнять какие-то ненужные анкеты или платить кому-то зарплату, так как эти «деньги» способны защитить сами себя.

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

Преимущества и недостатки

Теперь давайте рассмотрим некоторые преимущества и недостатки, связанные с Bitcoin:

Преимущества

* Ими может пользоваться любой человек по всему миру.
* Они предоставляют анонимность.
* Минимальная комиссия.
* Нет необходимости в установке дополнительного ПО.

Недостатки

* Ценность монет колеблется.
* На данный момент не столь популярна в сравнении с остальными валютами (CC, PayPal).

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

Однако недостатки могут быть разными. Так как этот метод оплаты пока еще не набрал необходимого уровня популярности, нам не кажется, что сегодня некоторые интернет-магазины почувствуют кардинальную эффективность от данного метода платежей, особенно если он будет единственным доступным методом на сайте. В любом случае, если вы выступаете в роли крупного поставщика, и хотите чтобы ваш бизнес рос дальше, вам следует использовать этот платежный метод только в качестве дополнения к остальным методам, включая кредитные карты и так далее.

Другой недостаток заключается в нестабильной ценности Bitcoin. В начале прошлого года ценность одного BTC составляла примерно 12-14$, и всего за пару месяцев его ценность возросла до 240$ (Апрель), а сейчас ценность составляет порядка 600$ за каждый BTC. Это сильно отличает данную валюту от традиционных, так как ваши деньги в течение месяца могут увеличиться до 2000% в ценности, а назавтра спуститься до 50% ценности.

Добавляем платежный шлюз Bitcoin на собственный сайт

Сложно говорить наверняка, отчего происходят такие перепады, является ли это издержкой того, что эта валюта децентрализована или это происходит ввиду возраста данной валюты, однако этот аспект определенно точно следует учитывать.

К счастью, большинство узлов обработки Bitcoin (как например тот, что мы будем сегодня использовать в образовательных целях) позволяют вам мгновенно конвертировать Bitcoin или их часть в традиционные валюты, будь то доллары США и другие. К примеру, вы можете создать установку, по которой 80% ваших заработанных Bitcoin будут незамедлительно конвертироваться в традиционные валюты, и тут же отправляться на ваш счет в банке, - это позволит вам сократить риски.

С другой стороны, на этих конвертациях и передачах вы можете потерять за счет комиссии, поэтому вам решать – рисковать с перепадами ценности или терять на комиссии.

Сегодня в мире есть несколько популярных сервисов, включая Coinbase, BitPay и так далее, однако сегодня мы будем использовать сервис под названием BIPS.

Подготовительные работы

В рамках нашей сегодняшней статьи мы будем разрабатывать простенькую посадочную страницу, на которой можно будет ввести email-адрес, а затем нажать кнопку «purchase», что перенесет вас на страницу проведения оплаты. На этой странице вам будет предоставлен адрес Bitcoin-кошелька, на который нужно будет отправить определенное количество BTC. И как только вы сделаете это, вам на email придет приобретенный вами продукт.

Эти три этапа полностью отделены друг от друга, как и в случаях с другими платежными системами, однако здесь это более выражено, так как вы не можете заплатить со страницы товара напрямую, и вам придется проводить оплату из собственного Bitcoin-кошелька.

Для данного приложения мы будем использовать Slim, что позволит нам воспользоваться простенькой структурой, Mandrill для высылки продукта и, как уже было отмечено, BIPS в качестве узла обработки платежей.

Настройка

Чтобы установить Slim, создайте файл 'composer.json' со следующим содержимым:

{
"name": "bitcoin app",
"require": {
"slim/slim": "2.2.0"
}
}

Затем запустите 'composer install' (предполагается, что вы уже установили composer), чтобы проставить зависимости.

Далее, создайте папку 'public' с файлом 'index.php' внутри нее, а также папку 'views'.

Ваша структура должна быть похожа на следующее:

public/
-> index.php
vendor/
views/
composer.json

Теперь откройте файл 'index.php' и давайте приступим к настройке приложения Slim:

<?php
require "../vendor/autoload.php";

$app = new \Slim\Slim(array(
"templates.path" => "../views"
));

Мы запрашиваем автозагрузчик, а затем запускаем библиотеку Slim, которая на данный момент представляет собой простой шаблон. Далее, давайте добавим домашний путь, которым будет являться стандартная HTML-страница с формой для совершения покупки:

$app->get('/', function() use ($app) {
$app->render('home.php');
});

Дальше нам нужно добавить файл 'home.php' непосредственно в папку 'views'.

<!DOCTYPE HTML>
<html>
<head>
<title>Bitcoin App</title>
<style>
body {
font-size: 1.6em;
text-align: center;
padding: 130px;
font-family: sans-serif;
}
</style>
</head>
<body>
<h1>Buy This</h1>
<p>This is a great offer you should purchase this thing</p>
<form action="/" method="POST">
<input type="text" placeholder="Enter your E-mail" name="email"/>
<input type="submit" value="Purchase !">
</form>
</body>
</html>

Ничего особенного, просто форма для ввода email-адреса пользователя.

Последний фрагмент настройки заключается в том, чтобы авторизации как в BIPS, так и в Mandrill (если вы используете эти приложения), и в генерировании API-ключей для обоих приложений. В BIPS нужно пройти во вкладку Merchant и сгенерировать API-ключ инвойса, а что касается Mandrill, то вам нужно перейти на страницу SMTP & API Credentials, чтобы сгенерировать новый API-ключ.

Создаем инвойс

Таким образом, на данный момент у нас имеется простая форма, которая будет подтверждать email пользователей при помощи POST-запроса, а следующий этап заключается в том, чтобы взять этот email-адрес и сгенерировать инвойс.

Давайте добавим post route в файл 'index.php', который будет генерировать API-зароса для создания нового инвойса и перенаправлять на него пользователя:

$app->post('/', function () use ($app) {
$email = $req = $app->request()->post('email');

if ($email) {
$token = "BIPS_API_KEY";

$ch = curl_init("https://bips.me/api/v1/invoice");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $token . ":");
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"price" => 20,
"currency" => "USD",
"item" => "PDF Book",
"custom" => json_encode(array(
"users_email" => $email
))
));
$invoiceUrl = curl_exec($ch);
$app->redirect($invoiceUrl);
}
});

Здесь важно обратить внимание на несколько вещей. Прежде всего, API-token, который вы сгенерировали для создания инвойсов, это 'username' в HTTP-аутентификации. POST-поля, которые мы высылаем, представляют собой следующее:

* price – стоимость объекта (значение int или float).
* currency – аббревиатура валюты USD, GBP, EUR или BTC для ценников, указанных в Bitcoin.
* item – наименование товара, этот пункт опционален, однако он будет показываться в инвойсе.
* custom – JSON-кодированная строка, содержащая любые пользовательские данные, которые вы хотите закрепить в инвойсе. Все это будет отображаться сразу после того, как пользователь проведет оплату, поэтому вы можете внести сюда просто внутренние телефонные номера. В нашем случае мы использовали только email, так как у нас нет больше никакой другой информации.

API-запрос вернет просто URL, ведущий к инвойсу, так что у нас будет возможность просто получить ответ, и перенаправить пользователя к нему.

Добавляем платежный шлюз Bitcoin на собственный сайт

Теперь, в отличие от остальных платежных систем, будь то кредитные карты или PayPal, здесь у нас отсутствует третья сторона, поэтому вы не сможете просто ввести сумму или логин для того, чтобы внести оплату. Вместо этого система автоматически создает отдельный кошелек для каждой транзакции, и дает 15 минут на то, чтобы перевести необходимую сумму денег. Именно об этом мы и говорили ранее, что при работе с Bitcoin, вы заметите отличия в процессе проведения оплаты.

С другой стороны, преимущество такой системы заключается в дополнительной безопасности. Ведь вы не пересекаетесь с кредитными картами или платежными шлюзами, поэтому и сайт можно не защищать, а вместо этого лишь создать новый id или кошелек, и если туда будут перечислены деньги, то оплату можно считать успешной.

Завершение платежа

Последний этап заключается в обработке самого платежа, уже после того, как оплата будет перечислена. Чтобы сделать это, вам нужно добавить callback URL и секретный ключ во вкладке Merchant в панели BIPS. Мы просто направляем его на путь '/ipn', с секретным ключом 'SECRETKEY'.

Добавляем платежный шлюз Bitcoin на собственный сайт

callback представляет собой POST-запрос, который содержит всю информацию по ходу совершения покупки, включая пользовательские данные, которые вы ввели, а также хэш для подтверждения аутентификации. Вы подтверждаете покупку за счет хэширования ключа транзакции посредством SHA-512 вместе с секретным ключом, который вы указали в админ-панели, а затем перепроверяете схожесть хэша в callback-запросе:

$app->post('/ipn', function () use ($app) {
//Slim Request object
$req = $app->request();

//Get some variables from the request
$email = $req->post('custom')['email'];
$transactionKey = $req->post('transaction')['hash'];
$invoiceHash = $req->post('hash');
$status = $req->post('status');

//Hash the transaction key with the secret
$secret = 'SECRETKEY';
$hash = hash("sha512", $transactionKey . $secret);

//Verify it
if ($invoiceHash === $hash && $status == 1) {
//Paid
}
});

Ключ транзакции и секретный ключ прикрепляются друг к другу, а затем производится хэширование. Последний фрагмент кода просто проверяет значение статуса на наличие '1' (что означает, что платеж был совершен), а затем проверяет аутентификацию оповещения.

Теперь у нас есть адрес пользователя, и подтверждение об оплате, поэтому нам остался последний шаг, который заключается в отправлении продукта пользователю. Если вы создаете сервис подписок или интернет-магазин с возможностью приобретения физических товаров, то можете просто вносить лог-информацию о пользовательской оплате в базу данных, однако для того, чтобы подытожить данную статью, давайте рассмотрим возможность высылки продукта посредством Mandrill.

if ($invoiceHash === $hash && $status == 1) {
//Mandrill URL + API key
$url = "https://mandrillapp.com/api/1.0/messages/send.json";
$apiKey = "MANDRILL_API_KEY";

//Get Email Template
$view = $app->view();
$template = $view->fetch("email.php");

//Message POST data
$messageData = array(
"key" => $apiKey,
"message" => array(
"html" => $template,
"subject" => "Thank you for your Purchase :)",
"from_email" => "demo@email.com",
"from_name" => "Your Name",
"to" => array(
array(
"email" => $email
)
)
)
);

//Send Request
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($messageData));
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
}

В вышеприведенном коде все, что мы делаем, это подготавливаем все данные и создаем JSON-сообщение запроса, который должен быть выслан в Mandrill API; вам нужно выслать API-ключ, тему письма и текст сообщения, форму email/имя и поле, для кого предназначен email.

В качестве текста сообщения мы используем встроенные шаблоны команд в Slim, а затем применяем POST к запросу при помощи curl и json_encode для того, чтобы скомпилировать данные в JSON.

Далее давайте займемся созданием файла шаблона email.php (внутри папки views). Сюда можно вписать что угодно, так как он все равно пройдет парсинг как нормальный шаблон Slim, и мы в итоге получим простой HTML-документ:

<h1>Thank you for your Purchase</h1>

<p>You can download the file <a href="http://link-to-file">here</a>.</p>

Мы просто внесли сюда заголовок со ссылкой на файл. Если все пройдет хорошо, то ваш сайт, можно сказать, полностью готов.

В завершение

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

Надеемся, что вам понравилась данная статья, и мы благодарим вас за время и внимание!

Скачать исходный код
Внимание! У вас нет прав для просмотра скрытого текста.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: Bitcoin
Опубликовал Design FactoRy   Прочитано (раз): 4445   |   Нет комментариев
Автор перевода — CoolWebmasters.Com ©   |   Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Национальная денежная единица России
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Февраль 2017    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728