Jump to content
poiuty

Прием платежей Bitcoin

Recommended Posts

В этой теме, бесплатно помогаю подключить прием платежей bitcoin на ваш сайт.

Если вы разбираетесь в данной теме и хотите сами реализовать прием платежей - ниже есть пример.

Не смущайтесь, что написано для litecoin. Логика та же и для bitcoin.

 

По мере сил, буду помогать и тем, кто не может сам модифицировать исходники сайта, запустить bitcoind и т.д.

Но очень хочет начать приминать bitcoin. Для этого свяжитесь со мной по icq: 450420625

 

Отдельно отмечу, что для запуска bitcoind -> нужен VPS с диском как минимум 40Gb.

 

 

Ставим litecoin wallet.

apt-get install build-essential libssl-dev libdb5.1-dev libdb5.1++-dev libboost-all-dev git
git clone git://github.com/litecoin-project/litecoin.git
cd litecoin/src
make -j2 -f makefile.unix USE_UPNP=
cp litecoind /usr/bin/litecoind
mkdir ~/.litecoin
Создаем /root/.litecoin/litecoin.conf c правами 0600

server=1
rpcallowip=127.0.0.1
rpcuser=HardToGuessUsername
rpcpassword=Str0ngS3cur3Passw0rd1
Запускаем

litecoind -daemon
Чтобы отправлять команды на API -> воспользуемся jsonRPCClient.

Всем пользователям делаем отдельный адрес (чтобы определить, кто оплатил).

$litecoin->getnewaddress("NAME");

ltc1.png

Далее раз в N минут проверяем транзакции, где количество подтверждений от 6 до 1000.

Если получили такие транзакции -> проверяем txid в базе. Если в базе нет txid -> увеличиваем баланс. Если есть -> игнорируем.

ltc2.png

Пример кода (проверка оплаты)

<? // example by poiuty 
require_once('jsonRPCClient.php');

$litecoin = new jsonRPCClient('http://USER:[email protected]:9332/');

// Получаем массив и делаем цикл
$i = 0;
$a = $litecoin->listtransactions("*", 100000));

while(count($a) > $i){

// Проверяем тип транзакции, количество подтверждений + сумму
if($a["$i"]["category"] != "receive" || $a["$i"]["confirmations"] < 6 || $a["$i"]["amount"] < 0.001) continue;

// Есть ли в базе эта транзакция?
$select_query = $db->prepare("SELECT * FROM `billing_log` WHERE `payment_id` =:id");
$select_query->bindParam(':id', $a["$i"]["txid"], PDO::PARAM_STR);
$select_query->execute();
if($select_query->rowCount() > 0){ $i++; continue; }

// Кто оплачивает?
$select_query = $db->prepare("SELECT * FROM `users` WHERE `ltc` =:address");
$select_query->bindParam(':address', $a["$i"]["address"], PDO::PARAM_STR);
$select_query->execute();
if($select_query->rowCount() != 1){ $i++; continue; }
$row = $select_query->fetch();
$user_id = $row['user_id'];

// Узнаем курс
$select_query = $db->prepare("SELECT * FROM `ltc` WHERE `id` = '1'");
$select_query->execute();
$row = $select_query->fetch();
$ltc_val = $row['value'];

// Увеличим баланс
$money = round($a["$i"]["amount"]*$ltc_val);
$update_query = $db->prepare("UPDATE `users` SET `money` = `money`+:money WHERE `user_id` = :user_id");
$update_query->bindParam(':money', $money, PDO::PARAM_STR);
$update_query->bindParam(':user_id', $user_id, PDO::PARAM_STR);
$update_query->execute();

// Запишем лог
$insert_query = $db->prepare("insert into `billing_log`(`payment_id`, `amount`, `date`, `system`, `user_id`) VALUES ( :id, :money, UNIX_TIMESTAMP(), 'Litecoin', :user_id)");
$insert_query->bindParam(':id', $a["$i"]["txid"], PDO::PARAM_STR);
$insert_query->bindParam(':money', $money, PDO::PARAM_STR);
$insert_query->bindParam(':user_id', $user_id, PDO::PARAM_STR);
$insert_query->execute();

$i++;
}
 

Узнаем средний курс по BTC-E

<? // example by poiuty
$i = file_get_contents("https://btc-e.com/api/2/ltc_rur/ticker");
if($i === false) die;
$i = json_decode($i, true);
$i = (int) $i["ticker"]['avg'];

$update_query = $db->prepare("UPDATE `ltc` SET `value` = :ltc WHERE `id` = '1'");
$update_query->bindParam(':ltc', $i, PDO::PARAM_STR);
$update_query->execute();
Edited by poiuty

Share this post


Link to post
Share on other sites

Отлиная статья!

Share this post


Link to post
Share on other sites

Далее раз в N минут проверяем транзакции, где количество подтверждений от 6 до 1000.

Если получили такие транзакции -> проверяем txid в базе. Если в базе нет txid -> увеличиваем баланс. Если есть -> игнорируем.

 

А можно поподробнее на этом месте ? Особенно со второго предложения, если не затруднит.

Share this post


Link to post
Share on other sites

@condor2zero, можно поставить выполнение скрипта по крону, который будет толкать скрипт раз в N минут.

Wallet -> один, адресов можно сделать сколько угодно.

С помощью listunspent 6 1000 -> получаем транзакции у которых количество подтверждений больше или равно 6, но меньше или ровно 1000.

 

Для LTC подтвержденный платеж = 6 confirmations. Ограничиваем верхним числом -> чтобы не получить слишком много данных.

 

Теперь, когда мы получили некие данные -> проверим транзакцию, возможно мы ее уже обрабатывали.

Делаем запрос в базу, если не находим -> значит обрабатываем -> увеличиваем баланс пользователю и записываем лог.

Edited by poiuty

Share this post


Link to post
Share on other sites

@condor2zero, можно поставить выполнение скрипта по крону, который будет толкать скрипт раз в N минут.

Wallet -> один, адресов можно сделать сколько угодно.

С помощью listunspent 6 1000 -> получаем транзакции у которых количество подтверждений больше или равно 6, но меньше или ровно 1000.

 

Для LTC подтвержденный платеж = 6 confirmations. Ограничиваем верхним числом -> чтобы не получить слишком много данных.

 

Теперь, когда мы получили некие данные -> проверим транзакцию, возможно мы ее уже обрабатывали.

Делаем запрос в базу, если не находим -> значит обрабатываем -> увеличиваем баланс пользователю и записываем лог.

Спасибо за развернутый ответ. Big Thanks !!!!

Share this post


Link to post
Share on other sites

<? // example by poiuty
$i = file_get_contents("https://btc-e.com/api/2/ltc_rur/ticker");
if($i === false) die;
$i = json_decode($i, true);
$i = (int) $i["ticker"]['avg'];

$update_query = $db->prepare("UPDATE `ltc` SET `value` = :ltc WHERE `id` = '1'");
$update_query->bindParam(':ltc', $i, PDO::PARAM_STR);
$update_query->execute();

 

через file_get_contents () вы можете не получить результата по https:. нужно использовать cURL,

примерно такого вида:

$json = curl_init('https://btc-e.com/api/2/ltc_usd/ticker');
	curl_setopt($json, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($json, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($json, CURLOPT_SSL_VERIFYHOST, 0);
	
        $result = curl_exec($json);
	curl_close($json);

	$data = json_decode($result, true);
Edited by zcambler

Share this post


Link to post
Share on other sites

Без проблем забирает результат

echo file_get_contents("https://btc-e.com/api/2/ltc_rur/ticker");

http://poiuty.com/test.php

 

не спорю на btc-e.com прокатывает, на других может и непрокатить, правильней будет через cURL точнее универсальней

echo file_get_contents("https://blockchain.info/en/ticker");
Edited by zcambler

Share this post


Link to post
Share on other sites

Скачал твой исходник с гитхуба так и не сбог Базу даных подключить пишет на сайте ошибка  mysql

2момента-так вот в какой папке лежит сама база и где указать конфигурацию  для её подключения?

исходник тут https://github.com/poiuty/midas-processing

Если кто разберётся буду рад отблагодарить доджикоинами.

 

Ещё ищу статью ЛЕКСИКУСА ник непомню или на биткоинталке или где он там пример реализаци ивыкладывал на ПХП чтобы принимать битки на сайте!Ссылку бы найти тоже помощи ищу!

 

имено интересуют статьи работы через Биткоинд клиент напрямую на своём хостинге !

Edited by gpufanat

Share this post


Link to post
Share on other sites

 

 

Если кто разберётся буду рад
... :D

Share this post


Link to post
Share on other sites

А чо не разобраца!раздел Разработка!

ТУТ не дураки сидят!И знают чо почём!

Ху*рят кода поти по 1000-2000 строчек в день и не знают как установить? Да хоть не смеши меня ЛИОН74

Просто кто делал этот скрипт он хорошо понимал как он работает.

И делал чтобы порвать всех и изменить мир к лучшему!

И хватит меня преследовать и подкалывать во всех темах форума!

Edited by gpufanat

Share this post


Link to post
Share on other sites

Информация удалена.

Edited by poiuty

Share this post


Link to post
Share on other sites

Спасибо уже научился. Статью ЛЕКСИКУСА о подкл биткоин платежей на сайт с примером на гит хабе скачал.

Edited by gpufanat

Share this post


Link to post
Share on other sites

Обновил первый пост. Теперь в этой теме буду бесплатно помогать подключить прием платежей bitcoin на ваш сайт.
Модеров прошу закрепить тему в этом разделе.

Edited by poiuty

Share this post


Link to post
Share on other sites

 

 

прошу закрепить тему в этом разделе

Закреплено.

Share this post


Link to post
Share on other sites

 

 

Но очень хочет начать приминать bitcoin

Да хватит уже! И так примяли его, что дальше некуда :)

Share this post


Link to post
Share on other sites

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

Edited by gpufanat

Share this post


Link to post
Share on other sites

Обновил первый пост. Теперь в этой теме буду бесплатно помогать подключить прием платежей bitcoin на ваш сайт.

Модеров прошу закрепить тему в этом разделе.

Добрый день!

 

Подскажи пожалуйста, есть ли возможность пришить прием платежей в битках прям к странице в фейсбуке?

Share this post


Link to post
Share on other sites
GustoElPeyote, можно указать адрес btc кошелька на странице. Если facebook позволяет вывести виджет - можно реализовать через него.

Share this post


Link to post
Share on other sites

Думаю фейсбук позволяет. А на вордпрессе как можно реализовать эту возможность? Он точно позволяет.

Share this post


Link to post
Share on other sites

Для wordpress возможно уже есть готовый плагин, поищите.

Share this post


Link to post
Share on other sites

Хорошо, спасибо. Но фейсбук тоже очень актуален. Есть мысли как реализовать?

Share this post


Link to post
Share on other sites

Добрый день! 

Не могли бы Вы рассказать о приеме биткойнов на сайте простым русским языком, без скриптов и технических особенностей?!  )))

Если такое возможно!

 

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

К примеру вот есть пустой хостинг и идея проекта. Что дальше?

Связываться с мерчантами не хочу, интересно сделать все независимо!

Спасибо заранее так сказать! ) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...