Перейти к публикации
poiuty

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

Рекомендованные сообщения

(изменено)

В этой теме, бесплатно помогаю подключить прием платежей 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();
Изменено пользователем poiuty

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

 

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

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

Изменено пользователем poiuty

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<? // 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);
Изменено пользователем zcambler

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

http://poiuty.com/test.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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");
Изменено пользователем zcambler

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

 

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

Изменено пользователем gpufanat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

Изменено пользователем gpufanat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем poiuty

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем gpufanat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем poiuty

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

Закреплено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем gpufanat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Добрый день!

 

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

Поделиться сообщением


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день! 

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×